Skip to content
Snippets Groups Projects
Commit cd864a63 authored by Michał Pogoda's avatar Michał Pogoda
Browse files

style: format with black

parent fd58542c
No related branches found
No related tags found
1 merge request!10Anonimizer v2
Pipeline #9325 passed
Showing
with 86 additions and 54 deletions
......@@ -2,6 +2,7 @@ import hydra
from omegaconf import OmegaConf
import json
@hydra.main(config_path="config", config_name="config")
def main(cfg):
cfg_resolved = OmegaConf.to_container(cfg, resolve=True)
......@@ -9,5 +10,6 @@ def main(cfg):
print(cfg_resolved_json)
if __name__ == "__main__":
main()
from lpmn_client_biz import Connection, IOType, upload, download, Task, delete
import json
lpmn = ["morphodita",
{"posconverter":
{"input_fromat": "ccl", "output_fromat": "json"}
},
"winer"]
lpmn = [
"morphodita",
{"posconverter": {"input_fromat": "ccl", "output_fromat": "json"}},
"winer",
]
_connection = Connection()
FILE = upload(_connection, "test.txt")
......@@ -13,5 +14,5 @@ task = Task(lpmn, _connection)
output_file_id = task.run(FILE, IOType.FILE, verbose=True)
downloaded = download(_connection, output_file_id, IOType.TEXT)
result = json.loads(downloaded)
with open("test.jsonl","wt", encoding='utf8') as f:
with open("test.jsonl", "wt", encoding="utf8") as f:
json.dump(result, f, ensure_ascii=False)
from dataclasses import dataclass
@dataclass
class Annotation:
def __hash__(self) -> int:
......@@ -8,6 +10,8 @@ class Annotation:
class MorphosyntacticAnnotation(Annotation):
def __init__(self, morphosyntactic_tag) -> None:
self.morphosyntactic_tag = morphosyntactic_tag
@dataclass
class NerAnnotation(Annotation):
ner_type: str
from typing import Optional
from dataclasses import dataclass
@dataclass
class Detection:
TYPE_NAME = "detection"
......@@ -32,36 +33,42 @@ class SurnameDetection(MorphosyntacticInfoMixin, Detection):
def __init__(self, morpho_tag: Optional[str] = None) -> None:
super().__init__(morpho_tag=morpho_tag)
class LocationDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "location"
def __init__(self, morpho_tag: Optional[str] = None) -> None:
super().__init__(morpho_tag=morpho_tag)
class OrganizationNameDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "organization_name"
def __init__(self, morpho_tag: Optional[str] = None) -> None:
super().__init__(morpho_tag=morpho_tag)
class ProperNameDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "proper_name"
def __init__(self, morpho_tag: Optional[str] = None) -> None:
super().__init__(morpho_tag=morpho_tag)
class TitleDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "title"
def __init__(self, morpho_tag: Optional[str] = None) -> None:
super().__init__(morpho_tag=morpho_tag)
class HydronymDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "hydronym"
def __init__(self, morpho_tag: Optional[str] = None) -> None:
super().__init__(morpho_tag=morpho_tag)
class StreetNameDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "street_name"
......@@ -76,7 +83,6 @@ class CityDetection(MorphosyntacticInfoMixin, Detection):
super().__init__(morpho_tag=morpho_tag)
class CountryDetection(MorphosyntacticInfoMixin, Detection):
TYPE_NAME = "country"
......@@ -132,12 +138,14 @@ class KRSDetection(Detection): # National Court Register
def __init__(self) -> None:
super().__init__()
class SerialNumberDetection(Detection):
TYPE_NAME = "serial_number"
def __init__(self) -> None:
super().__init__()
class OtherDetection(Detection): # Non standard entity
TYPE_NAME = "other"
......
......@@ -27,9 +27,7 @@ PL_DATES_REGEX = re.compile(
re.I,
)
PL_YEAR_REGEX = re.compile(
r"(?<year>\d+)\s*(?<addon>roku?)"
)
PL_YEAR_REGEX = re.compile(r"(?<year>\d+)\s*(?<addon>roku?)")
def detect_dates_pl(text: str) -> List[Tuple[int, int, DateDetection]]:
......
......@@ -168,6 +168,7 @@ def _parse_year_only(re_entry) -> List[Tuple[DateDetection.AnnotationPart, str]]
return result
def parse_date_to_format(
re_entry,
) -> Optional[List[Tuple[DateDetection.AnnotationPart, str]]]:
......
......@@ -2,6 +2,7 @@ from typing import List, Dict, Any, Tuple
from src.detections import Detection
from abc import ABC, abstractmethod
class Detector(ABC):
@abstractmethod
def detect(
......
......@@ -2,6 +2,7 @@ from src.detections import Detection
from typing import Optional, List, Type
from abc import ABC, abstractmethod
class MorphosyntacticDictionary(ABC):
@abstractmethod
def get_supported_detection_classes(self) -> List[Type[Detection]]:
......
......@@ -42,21 +42,26 @@ class NERFileMorphosyntacticDictionary(MorphosyntacticDictionary):
if issubclass(original_entry_type, MorphosyntacticInfoMixin):
morpho_tag = original_entry.morpho_tag
if (
original_entry_type_name in self._dictionary
):
if original_entry_type_name in self._dictionary:
if morpho_tag in self._dictionary[original_entry_type_name]:
result = random.choice(
list(
self._dictionary[original_entry_type_name][morpho_tag].values()
self._dictionary[original_entry_type_name][
morpho_tag
].values()
)
)
else:
morpho_tag = result = random.choice(list(self._dictionary[original_entry_type_name].keys()))
morpho_tag = result = random.choice(
list(self._dictionary[original_entry_type_name].keys())
)
result = random.choice(
list(self._dictionary[original_entry_type_name][morpho_tag].keys())
list(
self._dictionary[original_entry_type_name][
morpho_tag
].keys()
)
)
if result is None and self._always_replace:
random_type = random.choice(list(self._dictionary.keys()))
......
......@@ -10,7 +10,7 @@ class NERFileNKJPMorphosyntacticDictionary(NERFileMorphosyntacticDictionary):
self,
dictionary_path: Optional[str] = None,
always_replace=True,
remove_first_morpho_subtag=True
remove_first_morpho_subtag=True,
) -> None:
super().__init__(dictionary_path, always_replace)
self._remove_first_morpho_subtag = remove_first_morpho_subtag
......
from abc import ABC, abstractmethod
class Pipeline(ABC):
@abstractmethod
def run(self, input_path) -> str:
......
......@@ -51,7 +51,11 @@ class SequentialJSONLPipeline(Pipeline):
result_text = ""
for item in result:
text = item["text"]
if result_text != "" and result_text.rstrip() == result_text and text.lstrip() == text:
if (
result_text != ""
and result_text.rstrip() == result_text
and text.lstrip() == text
):
result_text += " " + text
else:
result_text += text
......
......@@ -19,7 +19,7 @@ from src.detections import (
HydronymDetection,
SerialNumberDetection,
KRSDetection,
NumberDetection
NumberDetection,
)
from src.string_replacements import replace
from src.replacers.interface import ReplacerInterface
......@@ -46,7 +46,7 @@ class TagReplacer(ReplacerInterface):
TINDetection: "[CYFRY]",
KRSDetection: "[CYFRY]",
SerialNumberDetection: "[NUMER IDENTYFIKACYJNY]",
NumberDetection: "[CYFRY]"
NumberDetection: "[CYFRY]",
}
def replace(
......
......@@ -6,7 +6,10 @@ def test_wiktorner_jsonl_txt_output_configuration():
with initialize(config_path="../../../config", version_base="1.1"):
config = compose(
config_name="config",
overrides=["paths.root_path=../../../", "configuration=wiktorner_jsonl_txt_output"],
overrides=[
"paths.root_path=../../../",
"configuration=wiktorner_jsonl_txt_output",
],
)
pipeline = instantiate(config.pipeline)
......@@ -16,5 +19,5 @@ def test_wiktorner_jsonl_txt_output_configuration():
assert (
result
== 'ROZDZIAŁ I. CO NIECO O SAMEJ PIPIDÓWCE Przede wszystkim muszę uprzedzić z góry czytelników, aby się daremnie nie trudzili nad szukaniem wyżej wyrażonego miasteczka na mapach [MIEJSCE] i [MIEJSCE], bo go tam nie znajdą. Nie dlatego, jakoby [MIEJSCE] nie istniała w rzeczywistości i była tylko wytworem fantazji autora, ale po prostu dlatego, że mieszkańcy owego sławnego grodu, urosłszy z czasem w ambicję, uważali tę nazwę jako ubliżającą ich powadze i podali do c. k. namiestnictwa pokorną prośbę o pozwolenie zamienienia jej na inną. Podobne zamiany nazwisk praktykują się dość często w [MIEJSCE], szczególnie u pojedynczych osób, które nie czując się na siłach uszlachetnienia sobą, swymi czynami własnego nazwiska, chcą nazwiskiem uszlachetnić siebie, i tak np. ROZDZIAŁ I. CO NIECO O SAMEJ PIPIDÓWCE Przede wszystkim muszę uprzedzić z góry czytelników, aby się daremnie nie trudzili nad szukaniem wyżej wyrażonego miasteczka na mapach [MIEJSCE] i [MIEJSCE], bo go tam nie znajdą. Nie dlatego, jakoby [MIEJSCE] nie istniała w rzeczywistości i była tylko wytworem fantazji autora, ale po prostu dlatego, że mieszkańcy owego sławnego grodu, urosłszy z czasem w ambicję, uważali tę nazwę jako ubliżającą ich powadze i podali do c. k. namiestnictwa pokorną prośbę o pozwolenie zamienienia jej na inną. Podobne zamiany nazwisk praktykują się dość często w [MIEJSCE], szczególnie u pojedynczych osób, które nie czując się na siłach uszlachetnienia sobą, swymi czynami własnego nazwiska, chcą nazwiskiem uszlachetnić siebie, i tak np.'
== "ROZDZIAŁ I. CO NIECO O SAMEJ PIPIDÓWCE Przede wszystkim muszę uprzedzić z góry czytelników, aby się daremnie nie trudzili nad szukaniem wyżej wyrażonego miasteczka na mapach [MIEJSCE] i [MIEJSCE], bo go tam nie znajdą. Nie dlatego, jakoby [MIEJSCE] nie istniała w rzeczywistości i była tylko wytworem fantazji autora, ale po prostu dlatego, że mieszkańcy owego sławnego grodu, urosłszy z czasem w ambicję, uważali tę nazwę jako ubliżającą ich powadze i podali do c. k. namiestnictwa pokorną prośbę o pozwolenie zamienienia jej na inną. Podobne zamiany nazwisk praktykują się dość często w [MIEJSCE], szczególnie u pojedynczych osób, które nie czując się na siłach uszlachetnienia sobą, swymi czynami własnego nazwiska, chcą nazwiskiem uszlachetnić siebie, i tak np. ROZDZIAŁ I. CO NIECO O SAMEJ PIPIDÓWCE Przede wszystkim muszę uprzedzić z góry czytelników, aby się daremnie nie trudzili nad szukaniem wyżej wyrażonego miasteczka na mapach [MIEJSCE] i [MIEJSCE], bo go tam nie znajdą. Nie dlatego, jakoby [MIEJSCE] nie istniała w rzeczywistości i była tylko wytworem fantazji autora, ale po prostu dlatego, że mieszkańcy owego sławnego grodu, urosłszy z czasem w ambicję, uważali tę nazwę jako ubliżającą ich powadze i podali do c. k. namiestnictwa pokorną prośbę o pozwolenie zamienienia jej na inną. Podobne zamiany nazwisk praktykują się dość często w [MIEJSCE], szczególnie u pojedynczych osób, które nie czując się na siłach uszlachetnienia sobą, swymi czynami własnego nazwiska, chcą nazwiskiem uszlachetnić siebie, i tak np."
)
......@@ -35,6 +35,7 @@ def test_detect_dates_pl():
(34, 49, DateDetection(format_date2)),
]
def test_date_with_different_punctuations():
# There is discussion about this wheter we should even detect such cases
# as a dates... However, for now we do and if we find cases where that is
......@@ -60,6 +61,7 @@ def test_date_with_different_punctuations():
(0, 9, DateDetection(format_date)),
]
def test_28_czerwca_1847():
detector = DateDetector("pl")
......@@ -81,6 +83,7 @@ def test_28_czerwca_1847():
(0, 15, DateDetection(format_date)),
]
def test_year_only():
detector = DateDetector("pl")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment