2017-03-12 15:07:28 +03:00
|
|
|
|
# coding: utf8
|
2017-03-15 19:33:39 +03:00
|
|
|
|
from __future__ import unicode_literals
|
2015-07-07 15:00:07 +03:00
|
|
|
|
|
2017-05-08 16:47:25 +03:00
|
|
|
|
from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS
|
|
|
|
|
from .tag_map import TAG_MAP
|
|
|
|
|
from .stop_words import STOP_WORDS
|
2017-05-09 02:09:52 +03:00
|
|
|
|
from .lex_attrs import LEX_ATTRS
|
2017-05-08 16:47:25 +03:00
|
|
|
|
from .morph_rules import MORPH_RULES
|
2017-05-17 12:37:48 +03:00
|
|
|
|
from .syntax_iterators import SYNTAX_ITERATORS
|
2017-05-08 16:47:25 +03:00
|
|
|
|
|
2017-05-08 23:29:04 +03:00
|
|
|
|
from ..tokenizer_exceptions import BASE_EXCEPTIONS
|
|
|
|
|
from ...language import Language
|
2020-05-19 16:59:14 +03:00
|
|
|
|
from ...attrs import LANG
|
|
|
|
|
from ...util import update_exc
|
2016-01-19 04:54:56 +03:00
|
|
|
|
|
💫 Tidy up and auto-format .py files (#2983)
<!--- 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.
2018-11-30 19:03:03 +03:00
|
|
|
|
|
2017-10-17 19:21:20 +03:00
|
|
|
|
def _return_en(_):
|
💫 Tidy up and auto-format .py files (#2983)
<!--- 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.
2018-11-30 19:03:03 +03:00
|
|
|
|
return "en"
|
|
|
|
|
|
2017-03-15 19:33:39 +03:00
|
|
|
|
|
2017-05-20 10:18:19 +03:00
|
|
|
|
class EnglishDefaults(Language.Defaults):
|
|
|
|
|
lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
|
2017-06-03 22:47:55 +03:00
|
|
|
|
lex_attr_getters.update(LEX_ATTRS)
|
2017-10-17 19:21:20 +03:00
|
|
|
|
lex_attr_getters[LANG] = _return_en
|
2017-05-20 10:18:19 +03:00
|
|
|
|
tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS)
|
2017-10-11 16:34:55 +03:00
|
|
|
|
tag_map = TAG_MAP
|
|
|
|
|
stop_words = STOP_WORDS
|
|
|
|
|
morph_rules = MORPH_RULES
|
|
|
|
|
syntax_iterators = SYNTAX_ITERATORS
|
2019-09-11 15:00:36 +03:00
|
|
|
|
single_orth_variants = [
|
|
|
|
|
{"tags": ["NFP"], "variants": ["…", "..."]},
|
|
|
|
|
{"tags": [":"], "variants": ["-", "—", "–", "--", "---", "——"]},
|
|
|
|
|
]
|
|
|
|
|
paired_orth_variants = [
|
|
|
|
|
{"tags": ["``", "''"], "variants": [("'", "'"), ("‘", "’")]},
|
|
|
|
|
{"tags": ["``", "''"], "variants": [('"', '"'), ("“", "”")]},
|
|
|
|
|
]
|
2017-05-20 10:18:19 +03:00
|
|
|
|
|
2020-07-09 23:11:24 +03:00
|
|
|
|
@classmethod
|
|
|
|
|
def is_base_form(cls, univ_pos, morphology=None):
|
|
|
|
|
"""
|
|
|
|
|
Check whether we're dealing with an uninflected paradigm, so we can
|
|
|
|
|
avoid lemmatization entirely.
|
|
|
|
|
|
|
|
|
|
univ_pos (unicode / int): The token's universal part-of-speech tag.
|
|
|
|
|
morphology (dict): The token's morphological features following the
|
|
|
|
|
Universal Dependencies scheme.
|
|
|
|
|
"""
|
|
|
|
|
if morphology is None:
|
|
|
|
|
morphology = {}
|
|
|
|
|
if univ_pos == "noun" and morphology.get("Number") == "sing":
|
|
|
|
|
return True
|
|
|
|
|
elif univ_pos == "verb" and morphology.get("VerbForm") == "inf":
|
|
|
|
|
return True
|
|
|
|
|
# This maps 'VBP' to base form -- probably just need 'IS_BASE'
|
|
|
|
|
# morphology
|
|
|
|
|
elif univ_pos == "verb" and (
|
|
|
|
|
morphology.get("VerbForm") == "fin"
|
|
|
|
|
and morphology.get("Tense") == "pres"
|
|
|
|
|
and morphology.get("Number") is None
|
|
|
|
|
):
|
|
|
|
|
return True
|
|
|
|
|
elif univ_pos == "adj" and morphology.get("Degree") == "pos":
|
|
|
|
|
return True
|
|
|
|
|
elif morphology.get("VerbForm") == "inf":
|
|
|
|
|
return True
|
|
|
|
|
elif morphology.get("VerbForm") == "none":
|
|
|
|
|
return True
|
|
|
|
|
elif morphology.get("Degree") == "pos":
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
return False
|
|
|
|
|
|
2017-05-20 10:18:19 +03:00
|
|
|
|
|
2015-08-25 16:37:30 +03:00
|
|
|
|
class English(Language):
|
💫 Tidy up and auto-format .py files (#2983)
<!--- 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.
2018-11-30 19:03:03 +03:00
|
|
|
|
lang = "en"
|
2017-05-20 10:18:19 +03:00
|
|
|
|
Defaults = EnglishDefaults
|
2017-03-15 12:52:50 +03:00
|
|
|
|
|
2016-12-19 00:29:31 +03:00
|
|
|
|
|
💫 Tidy up and auto-format .py files (#2983)
<!--- 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.
2018-11-30 19:03:03 +03:00
|
|
|
|
__all__ = ["English"]
|