mirror of
https://github.com/explosion/spaCy.git
synced 2024-12-26 09:56:28 +03:00
eddeb36c96
<!--- Provide a general summary of your changes in the title. --> ## Description - [x] Use [`black`](https://github.com/ambv/black) to auto-format all `.py` files. - [x] Update flake8 config to exclude very large files (lemmatization tables etc.) - [x] Update code to be compatible with flake8 rules - [x] Fix various small bugs, inconsistencies and messy stuff in the language data - [x] Update docs to explain new code style (`black`, `flake8`, when to use `# fmt: off` and `# fmt: on` and what `# noqa` means) Once #2932 is merged, which auto-formats and tidies up the CLI, we'll be able to run `flake8 spacy` actually get meaningful results. At the moment, the code style and linting isn't applied automatically, but I'm hoping that the new [GitHub Actions](https://github.com/features/actions) will let us auto-format pull requests and post comments with relevant linting information. ### Types of change enhancement, code style ## Checklist <!--- Before you submit the PR, go over this checklist and make sure you can tick off all the boxes. [] -> [x] --> - [x] I have submitted the spaCy Contributor Agreement. - [x] I ran the tests, and all new and existing tests passed. - [x] My changes don't require a change to the documentation, or if they do, I've added all required information.
104 lines
2.3 KiB
Python
104 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
from ...attrs import LIKE_NUM
|
|
|
|
_num_words = [
|
|
"μηδέν",
|
|
"ένας",
|
|
"δυο",
|
|
"δυό",
|
|
"τρεις",
|
|
"τέσσερις",
|
|
"πέντε",
|
|
"έξι",
|
|
"εφτά",
|
|
"επτά",
|
|
"οκτώ",
|
|
"οχτώ",
|
|
"εννιά",
|
|
"εννέα",
|
|
"δέκα",
|
|
"έντεκα",
|
|
"ένδεκα",
|
|
"δώδεκα",
|
|
"δεκατρείς",
|
|
"δεκατέσσερις",
|
|
"δεκαπέντε",
|
|
"δεκαέξι",
|
|
"δεκαεπτά",
|
|
"δεκαοχτώ",
|
|
"δεκαεννέα",
|
|
"δεκαεννεα",
|
|
"είκοσι",
|
|
"τριάντα",
|
|
"σαράντα",
|
|
"πενήντα",
|
|
"εξήντα",
|
|
"εβδομήντα",
|
|
"ογδόντα",
|
|
"ενενήντα",
|
|
"εκατό",
|
|
"διακόσιοι",
|
|
"διακόσοι",
|
|
"τριακόσιοι",
|
|
"τριακόσοι",
|
|
"τετρακόσιοι",
|
|
"τετρακόσοι",
|
|
"πεντακόσιοι",
|
|
"πεντακόσοι",
|
|
"εξακόσιοι",
|
|
"εξακόσοι",
|
|
"εφτακόσιοι",
|
|
"εφτακόσοι",
|
|
"επτακόσιοι",
|
|
"επτακόσοι",
|
|
"οχτακόσιοι",
|
|
"οχτακόσοι",
|
|
"οκτακόσιοι",
|
|
"οκτακόσοι",
|
|
"εννιακόσιοι",
|
|
"χίλιοι",
|
|
"χιλιάδα",
|
|
"εκατομμύριο",
|
|
"δισεκατομμύριο",
|
|
"τρισεκατομμύριο",
|
|
"τετράκις",
|
|
"πεντάκις",
|
|
"εξάκις",
|
|
"επτάκις",
|
|
"οκτάκις",
|
|
"εννεάκις",
|
|
"ένα",
|
|
"δύο",
|
|
"τρία",
|
|
"τέσσερα",
|
|
"δις",
|
|
"χιλιάδες",
|
|
]
|
|
|
|
|
|
def like_num(text):
|
|
if text.startswith(("+", "-", "±", "~")):
|
|
text = text[1:]
|
|
text = text.replace(",", "").replace(".", "")
|
|
if text.isdigit():
|
|
return True
|
|
if text.count("/") == 1:
|
|
num, denom = text.split("/")
|
|
if num.isdigit() and denom.isdigit():
|
|
return True
|
|
if text.count("^") == 1:
|
|
num, denom = text.split("^")
|
|
if num.isdigit() and denom.isdigit():
|
|
return True
|
|
if text.lower() in _num_words or text.lower().split(" ")[0] in _num_words:
|
|
return True
|
|
if text in _num_words:
|
|
return True
|
|
return False
|
|
|
|
|
|
LEX_ATTRS = {LIKE_NUM: like_num}
|