From 5ddaf4a88d63b6291a2cb6b31f1cb49087f90842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Wed, 8 Jan 2025 18:22:18 -0300 Subject: [PATCH 01/10] Added more dependencies to project MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0034c41..1471822 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ "Programming Language :: Python :: 3.11" ] license = {text = "MIT License"} -dependencies = ["asreview>=1.1,<2", "pandas", "pyalex"] +dependencies = ["asreview>=1.1,<2", "ftfy", "nltk", "pandas", "pyalex", "rich", "tqdm"] dynamic = ["version"] requires-python = ">=3.8" From 95b656994ee9d951f298d5625c0880ba4bf0ab9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Wed, 8 Jan 2025 18:22:42 -0300 Subject: [PATCH 02/10] Added new duplicate finding algorithm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- asreviewcontrib/datatools/dedup.py | 98 +++++++++++++++++++++++++ asreviewcontrib/datatools/entrypoint.py | 4 +- 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 asreviewcontrib/datatools/dedup.py diff --git a/asreviewcontrib/datatools/dedup.py b/asreviewcontrib/datatools/dedup.py new file mode 100644 index 0000000..7c213ae --- /dev/null +++ b/asreviewcontrib/datatools/dedup.py @@ -0,0 +1,98 @@ +import re +from difflib import Differ, SequenceMatcher +from pprint import pformat + +import ftfy +import pandas as pd +from asreview import ASReviewData +from rich.console import Console +from rich.text import Text +from tqdm import tqdm + + +_SYMBOLS_REGEX = re.compile(r'[^ \w\d\-_]') +_SPACES_REGEX = re.compile(r'\s+') + + +def drop_duplicates_by_similarity( + asdata: ASReviewData, + similarity: float = 0.98, + use_abstract: bool = True, + discard_stopwords: bool = False, + stopwords_language: str = 'english', + verbose: bool = True): + + if use_abstract: + data = pd.Series(asdata.texts) + else: + data = asdata.df['title'] + + s = ( + data + .apply(ftfy.fix_text) + .str.replace(_SYMBOLS_REGEX, '', regex=True) + .str.replace(_SPACES_REGEX, ' ', regex=True) + .str.lower() + .str.strip() + .replace("", None) + ) + + if discard_stopwords: + try: + from nltk.corpus import stopwords + STOPWORDS = set(stopwords.words(stopwords_language)) + except LookupError: + import nltk + nltk.download('stopwords') + STOPWORDS = set(stopwords.words(stopwords_language)) + + STOPWORDS_REGEX = re.compile(rf'\b{"\\b|\\b".join(STOPWORDS)}\b') + s = s.str.replace(STOPWORDS_REGEX, '', regex=True) + + duplicated = (s.duplicated()) & (s.notnull()) + seq_matcher = SequenceMatcher() + + if verbose: + similar_list = [] + else: + similar_list = None + + for i, text in tqdm(s.items(), total=len(s), desc="Deduplicating"): + seq_matcher.set_seq2(text) + + for j, t in s.iloc[i+1:][abs(s.str.len() - len(text)) < 5].items(): + seq_matcher.set_seq1(t) + + # could also add: and seq_matcher.ratio() > similarity: + if seq_matcher.real_quick_ratio() > similarity and seq_matcher.quick_ratio() > similarity: + if verbose and not duplicated[j]: + similar_list.append((i, j)) + + duplicated[j] = True + + if verbose: + print_seq_matcher = SequenceMatcher() + console = Console() + print('Found similar titles at lines') + + for i, j in similar_list: + print_seq_matcher.set_seq1(data.iloc[i]) + print_seq_matcher.set_seq2(data.iloc[j]) + text = Text() + text.append(f"\nLines {i} and {j}:\n", style='bold') + + for tag, i1, i2, j1, j2 in print_seq_matcher.get_opcodes(): + if tag == 'replace': + # add rich strikethrough + text.append(f'{data.iloc[i][i1:i2]}', style='strike') + text.append(f'{data.iloc[j][j1:j2]}') + if tag == 'delete': + text.append(f'{data.iloc[i][i1:i2]}', style='strike') + if tag == 'insert': + text.append(f'{data.iloc[j][j1:j2]}') + if tag == 'equal': + text.append(f'{data.iloc[i][i1:i2]}', style='dim') + + console.print(str(text)) + + asdata.df = asdata.df[~duplicated].reset_index(drop=True) \ No newline at end of file diff --git a/asreviewcontrib/datatools/entrypoint.py b/asreviewcontrib/datatools/entrypoint.py index 647bc6a..fc53d82 100644 --- a/asreviewcontrib/datatools/entrypoint.py +++ b/asreviewcontrib/datatools/entrypoint.py @@ -8,6 +8,7 @@ from asreviewcontrib.datatools.compose import compose from asreviewcontrib.datatools.convert import _parse_arguments_convert from asreviewcontrib.datatools.convert import convert +from asreviewcontrib.datatools.dedup import drop_duplicates_by_similarity from asreviewcontrib.datatools.describe import _parse_arguments_describe from asreviewcontrib.datatools.describe import describe from asreviewcontrib.datatools.sample import _parse_arguments_sample @@ -68,12 +69,13 @@ def execute(self, argv): if args_dedup.pid not in asdata.df.columns: print( - f"Not using {args_dedup.pid} for deduplication" + f"Not using {args_dedup.pid} for deduplication " "because there is no such data." ) # retrieve deduplicated ASReview data object asdata.drop_duplicates(pid=args_dedup.pid, inplace=True) + drop_duplicates_by_similarity(asdata) # count duplicates n_dup = initial_length - len(asdata.df) From 8b921e7a565a7e5de38d694a3a81005d6a9c7219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Wed, 8 Jan 2025 23:33:53 -0300 Subject: [PATCH 03/10] Added more params to deduplicate similar function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- asreviewcontrib/datatools/dedup.py | 81 ++++++++++++++++-------------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/asreviewcontrib/datatools/dedup.py b/asreviewcontrib/datatools/dedup.py index 7c213ae..cb0122e 100644 --- a/asreviewcontrib/datatools/dedup.py +++ b/asreviewcontrib/datatools/dedup.py @@ -10,28 +10,56 @@ from tqdm import tqdm -_SYMBOLS_REGEX = re.compile(r'[^ \w\d\-_]') -_SPACES_REGEX = re.compile(r'\s+') +def _print_similar_list(similar_list: list[tuple[int, int]], data: pd.Series): + print_seq_matcher = SequenceMatcher() + console = Console() + print('Found similar titles at lines:') + + for i, j in similar_list: + print_seq_matcher.set_seq1(data.iloc[i]) + print_seq_matcher.set_seq2(data.iloc[j]) + text = Text() + text.append(f"\nLines {i+1} and {j+1}:\n", style='bold') + + for tag, i1, i2, j1, j2 in print_seq_matcher.get_opcodes(): + if tag == 'replace': + # add rich strikethrough + text.append(f'{data.iloc[i][i1:i2]}', style='red strike') + text.append(f'{data.iloc[j][j1:j2]}', style='green') + if tag == 'delete': + text.append(f'{data.iloc[i][i1:i2]}', style='red strike') + if tag == 'insert': + text.append(f'{data.iloc[j][j1:j2]}', style='green') + if tag == 'equal': + text.append(f'{data.iloc[i][i1:i2]}', style='dim') + + console.print(text) + + print('') def drop_duplicates_by_similarity( asdata: ASReviewData, similarity: float = 0.98, - use_abstract: bool = True, + skip_abstract: bool = False, discard_stopwords: bool = False, stopwords_language: str = 'english', - verbose: bool = True): + strict_similarity: bool = False, + verbose: bool = False): - if use_abstract: - data = pd.Series(asdata.texts) - else: + if skip_abstract: data = asdata.df['title'] + else: + data = pd.Series(asdata.texts) + + symbols_regex = re.compile(r'[^ \w\d\-_]') + spaces_regex = re.compile(r'\s+') s = ( data .apply(ftfy.fix_text) - .str.replace(_SYMBOLS_REGEX, '', regex=True) - .str.replace(_SPACES_REGEX, ' ', regex=True) + .str.replace(symbols_regex, '', regex=True) + .str.replace(spaces_regex, ' ', regex=True) .str.lower() .str.strip() .replace("", None) @@ -40,14 +68,14 @@ def drop_duplicates_by_similarity( if discard_stopwords: try: from nltk.corpus import stopwords - STOPWORDS = set(stopwords.words(stopwords_language)) + stopwords_set = set(stopwords.words(stopwords_language)) except LookupError: import nltk nltk.download('stopwords') - STOPWORDS = set(stopwords.words(stopwords_language)) + stopwords_set = set(stopwords.words(stopwords_language)) - STOPWORDS_REGEX = re.compile(rf'\b{"\\b|\\b".join(STOPWORDS)}\b') - s = s.str.replace(STOPWORDS_REGEX, '', regex=True) + stopwords_regex = re.compile(rf'\b{"\\b|\\b".join(stopwords_set)}\b') + s = s.str.replace(stopwords_regex, '', regex=True) duplicated = (s.duplicated()) & (s.notnull()) seq_matcher = SequenceMatcher() @@ -63,36 +91,13 @@ def drop_duplicates_by_similarity( for j, t in s.iloc[i+1:][abs(s.str.len() - len(text)) < 5].items(): seq_matcher.set_seq1(t) - # could also add: and seq_matcher.ratio() > similarity: - if seq_matcher.real_quick_ratio() > similarity and seq_matcher.quick_ratio() > similarity: + if seq_matcher.real_quick_ratio() > similarity and seq_matcher.quick_ratio() > similarity and (not strict_similarity or seq_matcher.ratio() > similarity): if verbose and not duplicated[j]: similar_list.append((i, j)) duplicated[j] = True if verbose: - print_seq_matcher = SequenceMatcher() - console = Console() - print('Found similar titles at lines') - - for i, j in similar_list: - print_seq_matcher.set_seq1(data.iloc[i]) - print_seq_matcher.set_seq2(data.iloc[j]) - text = Text() - text.append(f"\nLines {i} and {j}:\n", style='bold') - - for tag, i1, i2, j1, j2 in print_seq_matcher.get_opcodes(): - if tag == 'replace': - # add rich strikethrough - text.append(f'{data.iloc[i][i1:i2]}', style='strike') - text.append(f'{data.iloc[j][j1:j2]}') - if tag == 'delete': - text.append(f'{data.iloc[i][i1:i2]}', style='strike') - if tag == 'insert': - text.append(f'{data.iloc[j][j1:j2]}') - if tag == 'equal': - text.append(f'{data.iloc[i][i1:i2]}', style='dim') - - console.print(str(text)) + _print_similar_list(similar_list, data) asdata.df = asdata.df[~duplicated].reset_index(drop=True) \ No newline at end of file From b0a52591d3e6929952ed0c846a0b1f8a3de8699c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Wed, 8 Jan 2025 23:34:11 -0300 Subject: [PATCH 04/10] Added missing params for deduplicate similar entries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- asreviewcontrib/datatools/entrypoint.py | 49 ++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/asreviewcontrib/datatools/entrypoint.py b/asreviewcontrib/datatools/entrypoint.py index fc53d82..5d20743 100644 --- a/asreviewcontrib/datatools/entrypoint.py +++ b/asreviewcontrib/datatools/entrypoint.py @@ -60,6 +60,43 @@ def execute(self, argv): type=str, help="Persistent identifier used for deduplication. Default: doi.", ) + dedup_parser.add_argument( + "--drop_similar", + action='store_true', + help="Drop similar records.", + ) + dedup_parser.add_argument( + "--similarity", + default=0.98, + type=float, + help="Similarity threshold for deduplication. Default: 0.98.", + ) + dedup_parser.add_argument( + "--skip_abstract", + action='store_true', + help="Use only title for deduplication.", + ) + dedup_parser.add_argument( + "--discard_stopwords", + action='store_true', + help="Discard stopwords for deduplication.", + ) + dedup_parser.add_argument( + "--strict_similarity", + action='store_true', + help="Use a more strict similarity for deduplication.", + ) + dedup_parser.add_argument( + "--stopwords_language", + default="english", + type=str, + help="Language for stopwords. Default: english.", + ) + dedup_parser.add_argument( + "--verbose", + action='store_true', + help="Print verbose output.", + ) args_dedup = dedup_parser.parse_args(argv[1:]) @@ -75,7 +112,17 @@ def execute(self, argv): # retrieve deduplicated ASReview data object asdata.drop_duplicates(pid=args_dedup.pid, inplace=True) - drop_duplicates_by_similarity(asdata) + + if args_dedup.drop_similar: + drop_duplicates_by_similarity( + asdata, + args_dedup.similarity, + args_dedup.skip_abstract, + args_dedup.discard_stopwords, + args_dedup.stopwords_language, + args_dedup.strict_similarity, + args_dedup.verbose, + ) # count duplicates n_dup = initial_length - len(asdata.df) From 7a6d916dac208f1bfd863981537ecfdd8319d79e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Wed, 8 Jan 2025 23:34:16 -0300 Subject: [PATCH 05/10] Updated README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- README.md | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ffa4135..689696d 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,47 @@ asreview data dedup synergy:van_de_schoot_2018 -o van_de_schoot_2018_dedup.csv Removed 104 records from dataset with 6189 records. ``` +We can also choose to deduplicate based on the similarity of the title and abstract, instead of checking for an exact match. This way we can find duplicates that have small differences, but are actually the same record (for example, an additional comma or a fixed typo). This can be done by using the `--drop_similar` flag. This process takes about 4s on a dataset of about 2068 entries. + +```bash +asreview data dedup neurips_2020.tsv --drop_similar +``` +``` +Not using doi for deduplication because there is no such data. +Deduplicating: 100%|████████████████████████████████████| 2068/2068 [00:03<00:00, 531.93it/s] +Found 2 duplicates in dataset with 2068 records. +``` + +If we want to check which entries were found as duplicates, we can use the `--verbose` flag. This will print the lines of the dataset that were found as duplicates, as well as the difference between them. Any text that has to be removed from the first entry to become the second one is shown as red and has a strikethrough, and any text that has to be added to the first entry is shown as green. All text that is the same in both entries is dimmed. + +```bash +asreview data dedup neurips_2020.tsv --drop_similar --verbose +``` + +![Verbose drop similar](./dedup_similar.png) + +The similarity threshold can be set with the `--similarity` flag. The default similarity threshold is `0.98`. We can also choose to only use the title for deduplication by using the `--skip_abstract` flag. + +```bash +asreview data dedup neurips_2020.tsv --drop_similar --similarity 0.98 --skip_abstract +``` +``` +Not using doi for deduplication because there is no such data. +Deduplicating: 100%|████████████████████████████████████| 2068/2068 [00:02<00:00, 770.74it/s] +Found 4 duplicates in dataset with 2068 records. +``` + +Note that you might have to adjust your similarity score if you choose to only use the title for deduplication. The similarity score is calculated using the [SequenceMatcher](https://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher) class from the `difflib` package. The similarity score is calculated as the ratio of the number of matching characters to the total number of characters in the two strings. For example, the similarity score between the strings "hello" and "hello world" is 0.625. By default, we use the [real_quick_ratio](https://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.real_quick_ratio) and [quick_ratio](https://docs.python.org/3/library/difflib.html#difflib.SequenceMatcher.quick_ratio) methods, which are faster and usually good enough, but less accurate. If you want to use the ratio method, you can use the `--strict_similarity` flag. + +Now, if we want to discard stopwords for deduplication (for a more strict check on the important words), we can use the `--discard_stopwords` flag. The default language for the stopwords is `english`, but that can be set with the `--stopwords_language` flag. The list of supported languages for the stopwords are the same supported by the [nltk](https://www.nltk.org/index.html) package. To check the list of available languages, you can run the following commands on your python environment: + +```python +from nltk.corpus import stopwords +print(stopwords.fileids()) +``` +``` +['arabic', 'azerbaijani', 'basque', 'bengali', 'catalan', 'chinese', 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'greek', 'hebrew', 'hinglish', 'hungarian', 'indonesian', 'italian', 'kazakh', 'nepali', 'norwegian', 'portuguese', 'romanian', 'russian', 'slovene', 'spanish', 'swedish', 'tajik', 'turkish'] +``` ### Data Vstack (Experimental) @@ -186,7 +227,7 @@ Vertical stacking: combine as many datasets in the same file format as you want ❗ Vstack is an experimental feature. We would love to hear your feedback. Please keep in mind that this feature can change in the future. -Stack several datasets on top of each other: +Stack several datasets on top of each other: ``` asreview data vstack output.csv MY_DATASET_1.csv MY_DATASET_2.csv MY_DATASET_3.csv ``` @@ -206,7 +247,7 @@ Compose is where datasets containing records with different labels (or no labels) can be assembled into a single dataset. ❗ Compose is an experimental feature. We would love to hear your feedback. -Please keep in mind that this feature can change in the future. +Please keep in mind that this feature can change in the future. Overview of possible input files and corresponding properties, use at least one of the following arguments: @@ -231,7 +272,7 @@ case of conflicts, use the `--conflict_resolve`/`-c` flag. This is set to | Resolve method | Action in case of conflict | |----------------|-----------------------------------------------------------------------------------------| | `keep_one` | Keep one label, using `--hierarchy` to determine which label to keep | -| `keep_all` | Keep conflicting records as duplicates in the composed dataset (ignoring `--hierarchy`) | +| `keep_all` | Keep conflicting records as duplicates in the composed dataset (ignoring `--hierarchy`) | | `abort` | Abort | From 8995c4535e02071aad9b6b86435775b01589c3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Wed, 8 Jan 2025 23:44:29 -0300 Subject: [PATCH 06/10] Added similar dedup info to Tutorials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- Tutorials.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Tutorials.md b/Tutorials.md index 0f6a02e..6f777cc 100644 --- a/Tutorials.md +++ b/Tutorials.md @@ -1,6 +1,6 @@ # Tutorials ---- +--- Below are several examples to illustrate how to use `ASReview-datatools`. Make sure to have installed [asreview-datatools](https://github.com/asreview/asreview-datatools) and @@ -18,9 +18,9 @@ ASReview converts the labeling decisions in [RIS files](https://asreview.readthe irrelevant as `0` and relevant as `1`. Records marked as unseen or with missing labeling decisions are converted to `-1`. ---- +--- -## Update Systematic Review +## Update Systematic Review Assume you are working on a systematic review and you want to update the review with newly available records. The original data is stored in @@ -28,7 +28,7 @@ review with newly available records. The original data is stored in [column](https://asreview.readthedocs.io/en/latest/data_labeled.html#label-format) containing the labeling decissions. In order to update the systematic review, you run the original search query again but with a new date. You save the -newly found records in `SEARCH_UPDATE.ris`. +newly found records in `SEARCH_UPDATE.ris`. In the command line interface (CLI), navigate to the directory where the @@ -52,12 +52,18 @@ asreview data convert SEARCH_UPDATE.ris SEARCH_UPDATE.csv Duplicate records can be removed with with `dedup` script. The algorithm removes duplicates using the Digital Object Indentifier -([DOI](https://www.doi.org/)) and the title plus abstract. +([DOI](https://www.doi.org/)) and the title plus abstract. ```bash asreview data dedup SEARCH_UPDATE.csv -o SEARCH_UPDATE_DEDUP.csv ``` +This can also be done considering a similarity threshold between the titles and abstracts. + +```bash +asreview data dedup SEARCH_UPDATE.csv -o SEARCH_UPDATE_DEDUP.csv --drop_similar +``` + ### Describe input If you want to see descriptive info on your input datasets, run these commands: @@ -78,12 +84,12 @@ asreview data compose updated_search.csv -l MY_LABELED_DATASET.csv -u SEARCH_UPD The flag `-l` means the labels in `MY_LABELED_DATASET.csv` will be kept. The flag `-u` means all records from `SEARCH_UPDATE_DEDUP.csv` will be -added as unlabeled to the composed dataset. +added as unlabeled to the composed dataset. If a record exists in both datasets, it is assumed the record containing a label is maintained, see the default [conflict resolving strategy](https://github.com/asreview/asreview-datatools#resolving-conflicting-labels). -To keep both records (with and without label), use +To keep both records (with and without label), use ```bash asreview data compose updated_search.csv -l MY_LABELED_DATASET.csv -u SEARCH_UPDATE_DEDUP.csv -c keep @@ -154,14 +160,14 @@ added as unlabeled. If any duplicate records exist across the datasets, by default the order of keeping labels is: -1. relevant +1. relevant 2. irrelevant 3. unlabeled You can configure the behavior in resolving conflicting labels by setting the hierarchy differently. To do so, pass the letters r (relevant), i (irrelevant), and u (unlabeled) in any order to, for example, `--hierarchy -uir`. +uir`. The composed dataset will be exported to `search_with_priors.ris`. @@ -193,12 +199,12 @@ new search. Assume you want to use the [simulation mode](https://asreview.readthedocs.io/en/latest/simulation_overview.html) of ASReview but the data is not stored in one singe file containing the meta-data -and labelling decissions as required by ASReview. +and labelling decissions as required by ASReview. Suppose the following files are available: - `SCREENED.ris`: all records that were screened -- `RELEVANT.ris`: the subset of relevant records after manually screening all the records. +- `RELEVANT.ris`: the subset of relevant records after manually screening all the records. You need to compose the files into a single file where all records from `RELEVANT.csv` are relevant all other records are irrelevant. From 1762e1584a6538e42957dff6e11fcd035eaa676a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Thu, 9 Jan 2025 00:17:13 -0300 Subject: [PATCH 07/10] Added missing example image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- dedup_similar.png | Bin 0 -> 121052 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 dedup_similar.png diff --git a/dedup_similar.png b/dedup_similar.png new file mode 100644 index 0000000000000000000000000000000000000000..53c7d5264556233ca9e4bad78eccef88f2cc45d1 GIT binary patch literal 121052 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 literal 0 HcmV?d00001 From 413f23d91ee0e9871599bfb7910d518f450ba45e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Thu, 9 Jan 2025 11:27:34 -0300 Subject: [PATCH 08/10] Fixed ruff warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- asreviewcontrib/datatools/dedup.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/asreviewcontrib/datatools/dedup.py b/asreviewcontrib/datatools/dedup.py index cb0122e..31ada30 100644 --- a/asreviewcontrib/datatools/dedup.py +++ b/asreviewcontrib/datatools/dedup.py @@ -1,6 +1,5 @@ import re -from difflib import Differ, SequenceMatcher -from pprint import pformat +from difflib import SequenceMatcher import ftfy import pandas as pd @@ -91,7 +90,10 @@ def drop_duplicates_by_similarity( for j, t in s.iloc[i+1:][abs(s.str.len() - len(text)) < 5].items(): seq_matcher.set_seq1(t) - if seq_matcher.real_quick_ratio() > similarity and seq_matcher.quick_ratio() > similarity and (not strict_similarity or seq_matcher.ratio() > similarity): + if seq_matcher.real_quick_ratio() > similarity and \ + seq_matcher.quick_ratio() > similarity and \ + (not strict_similarity or seq_matcher.ratio() > similarity): + if verbose and not duplicated[j]: similar_list.append((i, j)) From a27bad91ff1ffc6d9bc253c6e67f6f9f0b43e9c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Thu, 9 Jan 2025 17:27:22 -0300 Subject: [PATCH 09/10] Renamed similarity as threshold MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- asreviewcontrib/datatools/entrypoint.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/asreviewcontrib/datatools/entrypoint.py b/asreviewcontrib/datatools/entrypoint.py index 5d20743..a0665a5 100644 --- a/asreviewcontrib/datatools/entrypoint.py +++ b/asreviewcontrib/datatools/entrypoint.py @@ -66,7 +66,7 @@ def execute(self, argv): help="Drop similar records.", ) dedup_parser.add_argument( - "--similarity", + "--threshold", default=0.98, type=float, help="Similarity threshold for deduplication. Default: 0.98.", @@ -116,7 +116,7 @@ def execute(self, argv): if args_dedup.drop_similar: drop_duplicates_by_similarity( asdata, - args_dedup.similarity, + args_dedup.threshold, args_dedup.skip_abstract, args_dedup.discard_stopwords, args_dedup.stopwords_language, From 871d1597b0d61965ba3c46cd611c98d64ce352de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Ara=C3=BAjo?= Date: Fri, 10 Jan 2025 13:33:41 -0300 Subject: [PATCH 10/10] Printing when not using similar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: George Araújo --- asreviewcontrib/datatools/dedup.py | 64 +++++++++++++++++++++++-- asreviewcontrib/datatools/entrypoint.py | 48 +++---------------- 2 files changed, 67 insertions(+), 45 deletions(-) diff --git a/asreviewcontrib/datatools/dedup.py b/asreviewcontrib/datatools/dedup.py index 31ada30..daf5b82 100644 --- a/asreviewcontrib/datatools/dedup.py +++ b/asreviewcontrib/datatools/dedup.py @@ -1,4 +1,5 @@ import re +from argparse import Namespace from difflib import SequenceMatcher import ftfy @@ -9,7 +10,7 @@ from tqdm import tqdm -def _print_similar_list(similar_list: list[tuple[int, int]], data: pd.Series): +def _print_similar_list(similar_list: list[tuple[int, int]], data: pd.Series) -> None: print_seq_matcher = SequenceMatcher() console = Console() print('Found similar titles at lines:') @@ -44,7 +45,7 @@ def drop_duplicates_by_similarity( discard_stopwords: bool = False, stopwords_language: str = 'english', strict_similarity: bool = False, - verbose: bool = False): + verbose: bool = False) -> None: if skip_abstract: data = asdata.df['title'] @@ -76,7 +77,7 @@ def drop_duplicates_by_similarity( stopwords_regex = re.compile(rf'\b{"\\b|\\b".join(stopwords_set)}\b') s = s.str.replace(stopwords_regex, '', regex=True) - duplicated = (s.duplicated()) & (s.notnull()) + duplicated = [False] * len(s) seq_matcher = SequenceMatcher() if verbose: @@ -102,4 +103,59 @@ def drop_duplicates_by_similarity( if verbose: _print_similar_list(similar_list, data) - asdata.df = asdata.df[~duplicated].reset_index(drop=True) \ No newline at end of file + asdata.df = asdata.df[~pd.Series(duplicated)].reset_index(drop=True) + + +def deduplicate_data(asdata: ASReviewData, args: Namespace) -> None: + initial_length = len(asdata.df) + + if args.pid not in asdata.df.columns: + print( + f"Not using {args.pid} for deduplication " + "because there is no such data." + ) + + if not args.similar: + if args.verbose: + before_dedup = asdata.df.copy() + + # retrieve deduplicated ASReview data object + asdata.drop_duplicates(pid=args.pid, inplace=True, reset_index=False) + duplicate_entries = before_dedup[~before_dedup.index.isin(asdata.df.index)] + + if len(duplicate_entries) > 0: + print("Duplicate entries:") + for i, row in duplicate_entries.iterrows(): + print(f"\tLine {i} - {row['title']}") + + asdata.df.reset_index(drop=True, inplace=True) + + else: + # retrieve deduplicated ASReview data object + asdata.drop_duplicates(pid=args.pid, inplace=True) + + else: + drop_duplicates_by_similarity( + asdata, + args.threshold, + args.title_only, + args.stopwords, + args.stopwords_language, + args.strict, + args.verbose, + ) + + # count duplicates + n_dup = initial_length - len(asdata.df) + + if args.output_path: + asdata.to_file(args.output_path) + print( + f"Removed {n_dup} duplicates from dataset with" + f" {initial_length} records." + ) + else: + print( + f"Found {n_dup} duplicates in dataset with" + f" {initial_length} records." + ) diff --git a/asreviewcontrib/datatools/entrypoint.py b/asreviewcontrib/datatools/entrypoint.py index a0665a5..2f1d0cc 100644 --- a/asreviewcontrib/datatools/entrypoint.py +++ b/asreviewcontrib/datatools/entrypoint.py @@ -8,7 +8,7 @@ from asreviewcontrib.datatools.compose import compose from asreviewcontrib.datatools.convert import _parse_arguments_convert from asreviewcontrib.datatools.convert import convert -from asreviewcontrib.datatools.dedup import drop_duplicates_by_similarity +from asreviewcontrib.datatools.dedup import deduplicate_data, drop_duplicates_by_similarity from asreviewcontrib.datatools.describe import _parse_arguments_describe from asreviewcontrib.datatools.describe import describe from asreviewcontrib.datatools.sample import _parse_arguments_sample @@ -61,7 +61,7 @@ def execute(self, argv): help="Persistent identifier used for deduplication. Default: doi.", ) dedup_parser.add_argument( - "--drop_similar", + "--similar", action='store_true', help="Drop similar records.", ) @@ -72,17 +72,17 @@ def execute(self, argv): help="Similarity threshold for deduplication. Default: 0.98.", ) dedup_parser.add_argument( - "--skip_abstract", + "--title_only", action='store_true', help="Use only title for deduplication.", ) dedup_parser.add_argument( - "--discard_stopwords", + "--stopwords", action='store_true', - help="Discard stopwords for deduplication.", + help="Ignore stopwords for deduplication, focusing on main words.", ) dedup_parser.add_argument( - "--strict_similarity", + "--strict", action='store_true', help="Use a more strict similarity for deduplication.", ) @@ -102,42 +102,8 @@ def execute(self, argv): # read data in ASReview data object asdata = load_data(args_dedup.input_path) - initial_length = len(asdata.df) + deduplicate_data(asdata, args_dedup) - if args_dedup.pid not in asdata.df.columns: - print( - f"Not using {args_dedup.pid} for deduplication " - "because there is no such data." - ) - - # retrieve deduplicated ASReview data object - asdata.drop_duplicates(pid=args_dedup.pid, inplace=True) - - if args_dedup.drop_similar: - drop_duplicates_by_similarity( - asdata, - args_dedup.threshold, - args_dedup.skip_abstract, - args_dedup.discard_stopwords, - args_dedup.stopwords_language, - args_dedup.strict_similarity, - args_dedup.verbose, - ) - - # count duplicates - n_dup = initial_length - len(asdata.df) - - if args_dedup.output_path: - asdata.to_file(args_dedup.output_path) - print( - f"Removed {n_dup} duplicates from dataset with" - f" {initial_length} records." - ) - else: - print( - f"Found {n_dup} duplicates in dataset with" - f" {initial_length} records." - ) if argv[0] == "compose": args_compose_parser = _parse_arguments_compose() args_compose = args_compose_parser.parse_args(argv[1:])