mirror of
https://github.com/explosion/spaCy.git
synced 2024-11-11 04:08:09 +03:00
Merge pull request #6671 from explosion/chore/tidy-autoformat
Tidy up and auto-format
This commit is contained in:
commit
81f018fb67
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -51,6 +51,7 @@ env3.*/
|
|||
.pypyenv
|
||||
.pytest_cache/
|
||||
.mypy_cache/
|
||||
.hypothesis/
|
||||
|
||||
# Distribution / packaging
|
||||
env/
|
||||
|
|
|
@ -35,7 +35,10 @@ def download_cli(
|
|||
|
||||
|
||||
def download(model: str, direct: bool = False, *pip_args) -> None:
|
||||
if not (is_package("spacy") or is_package("spacy-nightly")) and "--no-deps" not in pip_args:
|
||||
if (
|
||||
not (is_package("spacy") or is_package("spacy-nightly"))
|
||||
and "--no-deps" not in pip_args
|
||||
):
|
||||
msg.warn(
|
||||
"Skipping pipeline package dependencies and setting `--no-deps`. "
|
||||
"You don't seem to have the spaCy package itself installed "
|
||||
|
|
|
@ -172,7 +172,9 @@ def render_parses(
|
|||
file_.write(html)
|
||||
|
||||
|
||||
def print_prf_per_type(msg: Printer, scores: Dict[str, Dict[str, float]], name: str, type: str) -> None:
|
||||
def print_prf_per_type(
|
||||
msg: Printer, scores: Dict[str, Dict[str, float]], name: str, type: str
|
||||
) -> None:
|
||||
data = [
|
||||
(k, f"{v['p']*100:.2f}", f"{v['r']*100:.2f}", f"{v['f']*100:.2f}")
|
||||
for k, v in scores.items()
|
||||
|
|
|
@ -214,8 +214,22 @@ _macedonian_lower = r"ѓѕјљњќѐѝ"
|
|||
_macedonian_upper = r"ЃЅЈЉЊЌЀЍ"
|
||||
_macedonian = r"ѓѕјљњќѐѝЃЅЈЉЊЌЀЍ"
|
||||
|
||||
_upper = LATIN_UPPER + _russian_upper + _tatar_upper + _greek_upper + _ukrainian_upper + _macedonian_upper
|
||||
_lower = LATIN_LOWER + _russian_lower + _tatar_lower + _greek_lower + _ukrainian_lower + _macedonian_lower
|
||||
_upper = (
|
||||
LATIN_UPPER
|
||||
+ _russian_upper
|
||||
+ _tatar_upper
|
||||
+ _greek_upper
|
||||
+ _ukrainian_upper
|
||||
+ _macedonian_upper
|
||||
)
|
||||
_lower = (
|
||||
LATIN_LOWER
|
||||
+ _russian_lower
|
||||
+ _tatar_lower
|
||||
+ _greek_lower
|
||||
+ _ukrainian_lower
|
||||
+ _macedonian_lower
|
||||
)
|
||||
|
||||
_uncased = (
|
||||
_bengali
|
||||
|
@ -230,7 +244,9 @@ _uncased = (
|
|||
+ _cjk
|
||||
)
|
||||
|
||||
ALPHA = group_chars(LATIN + _russian + _tatar + _greek + _ukrainian + _macedonian + _uncased)
|
||||
ALPHA = group_chars(
|
||||
LATIN + _russian + _tatar + _greek + _ukrainian + _macedonian + _uncased
|
||||
)
|
||||
ALPHA_LOWER = group_chars(_lower + _uncased)
|
||||
ALPHA_UPPER = group_chars(_upper + _uncased)
|
||||
|
||||
|
|
|
@ -1,18 +1,11 @@
|
|||
from .stop_words import STOP_WORDS
|
||||
from .tag_map import TAG_MAP
|
||||
from ...language import Language
|
||||
from ...attrs import LANG
|
||||
from .lex_attrs import LEX_ATTRS
|
||||
from ...language import Language
|
||||
|
||||
|
||||
class CzechDefaults(Language.Defaults):
|
||||
lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
|
||||
lex_attr_getters.update(LEX_ATTRS)
|
||||
lex_attr_getters[LANG] = lambda text: "cs"
|
||||
tag_map = TAG_MAP
|
||||
stop_words = STOP_WORDS
|
||||
lex_attr_getters = LEX_ATTRS
|
||||
stop_words = STOP_WORDS
|
||||
|
||||
|
||||
class Czech(Language):
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,7 +14,7 @@ class MacedonianLemmatizer(Lemmatizer):
|
|||
if univ_pos in ("", "eol", "space"):
|
||||
return [string.lower()]
|
||||
|
||||
if string[-3:] == 'јќи':
|
||||
if string[-3:] == "јќи":
|
||||
string = string[:-3]
|
||||
univ_pos = "verb"
|
||||
|
||||
|
@ -23,7 +23,13 @@ class MacedonianLemmatizer(Lemmatizer):
|
|||
index_table = self.lookups.get_table("lemma_index", {})
|
||||
exc_table = self.lookups.get_table("lemma_exc", {})
|
||||
rules_table = self.lookups.get_table("lemma_rules", {})
|
||||
if not any((index_table.get(univ_pos), exc_table.get(univ_pos), rules_table.get(univ_pos))):
|
||||
if not any(
|
||||
(
|
||||
index_table.get(univ_pos),
|
||||
exc_table.get(univ_pos),
|
||||
rules_table.get(univ_pos),
|
||||
)
|
||||
):
|
||||
if univ_pos == "propn":
|
||||
return [string]
|
||||
else:
|
||||
|
|
|
@ -1,21 +1,104 @@
|
|||
from ...attrs import LIKE_NUM
|
||||
|
||||
_num_words = [
|
||||
"нула", "еден", "една", "едно", "два", "две", "три", "четири", "пет", "шест", "седум", "осум", "девет", "десет",
|
||||
"единаесет", "дванаесет", "тринаесет", "четиринаесет", "петнаесет", "шеснаесет", "седумнаесет", "осумнаесет",
|
||||
"деветнаесет", "дваесет", "триесет", "четириесет", "педесет", "шеесет", "седумдесет", "осумдесет", "деведесет",
|
||||
"сто", "двесте", "триста", "четиристотини", "петстотини", "шестотини", "седумстотини", "осумстотини",
|
||||
"деветстотини", "илјада", "илјади", 'милион', 'милиони', 'милијарда', 'милијарди', 'билион', 'билиони',
|
||||
|
||||
"двајца", "тројца", "четворица", "петмина", "шестмина", "седуммина", "осуммина", "деветмина", "обата", "обајцата",
|
||||
|
||||
"прв", "втор", "трет", "четврт", "седм", "осм", "двестоти",
|
||||
|
||||
"два-три", "два-триесет", "два-триесетмина", "два-тринаесет", "два-тројца", "две-три", "две-тристотини",
|
||||
"пет-шеесет", "пет-шеесетмина", "пет-шеснаесетмина", "пет-шест", "пет-шестмина", "пет-шестотини", "петина",
|
||||
"осмина", "седум-осум", "седум-осумдесет", "седум-осуммина", "седум-осумнаесет", "седум-осумнаесетмина",
|
||||
"три-четириесет", "три-четиринаесет", "шеесет", "шеесетина", "шеесетмина", "шеснаесет", "шеснаесетмина",
|
||||
"шест-седум", "шест-седумдесет", "шест-седумнаесет", "шест-седумстотини", "шестоти", "шестотини"
|
||||
"нула",
|
||||
"еден",
|
||||
"една",
|
||||
"едно",
|
||||
"два",
|
||||
"две",
|
||||
"три",
|
||||
"четири",
|
||||
"пет",
|
||||
"шест",
|
||||
"седум",
|
||||
"осум",
|
||||
"девет",
|
||||
"десет",
|
||||
"единаесет",
|
||||
"дванаесет",
|
||||
"тринаесет",
|
||||
"четиринаесет",
|
||||
"петнаесет",
|
||||
"шеснаесет",
|
||||
"седумнаесет",
|
||||
"осумнаесет",
|
||||
"деветнаесет",
|
||||
"дваесет",
|
||||
"триесет",
|
||||
"четириесет",
|
||||
"педесет",
|
||||
"шеесет",
|
||||
"седумдесет",
|
||||
"осумдесет",
|
||||
"деведесет",
|
||||
"сто",
|
||||
"двесте",
|
||||
"триста",
|
||||
"четиристотини",
|
||||
"петстотини",
|
||||
"шестотини",
|
||||
"седумстотини",
|
||||
"осумстотини",
|
||||
"деветстотини",
|
||||
"илјада",
|
||||
"илјади",
|
||||
"милион",
|
||||
"милиони",
|
||||
"милијарда",
|
||||
"милијарди",
|
||||
"билион",
|
||||
"билиони",
|
||||
"двајца",
|
||||
"тројца",
|
||||
"четворица",
|
||||
"петмина",
|
||||
"шестмина",
|
||||
"седуммина",
|
||||
"осуммина",
|
||||
"деветмина",
|
||||
"обата",
|
||||
"обајцата",
|
||||
"прв",
|
||||
"втор",
|
||||
"трет",
|
||||
"четврт",
|
||||
"седм",
|
||||
"осм",
|
||||
"двестоти",
|
||||
"два-три",
|
||||
"два-триесет",
|
||||
"два-триесетмина",
|
||||
"два-тринаесет",
|
||||
"два-тројца",
|
||||
"две-три",
|
||||
"две-тристотини",
|
||||
"пет-шеесет",
|
||||
"пет-шеесетмина",
|
||||
"пет-шеснаесетмина",
|
||||
"пет-шест",
|
||||
"пет-шестмина",
|
||||
"пет-шестотини",
|
||||
"петина",
|
||||
"осмина",
|
||||
"седум-осум",
|
||||
"седум-осумдесет",
|
||||
"седум-осуммина",
|
||||
"седум-осумнаесет",
|
||||
"седум-осумнаесетмина",
|
||||
"три-четириесет",
|
||||
"три-четиринаесет",
|
||||
"шеесет",
|
||||
"шеесетина",
|
||||
"шеесетмина",
|
||||
"шеснаесет",
|
||||
"шеснаесетмина",
|
||||
"шест-седум",
|
||||
"шест-седумдесет",
|
||||
"шест-седумнаесет",
|
||||
"шест-седумстотини",
|
||||
"шестоти",
|
||||
"шестотини",
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -21,8 +21,7 @@ _abbr_exc = [
|
|||
{ORTH: "хл", NORM: "хектолитар"},
|
||||
{ORTH: "дкл", NORM: "декалитар"},
|
||||
{ORTH: "л", NORM: "литар"},
|
||||
{ORTH: "дл", NORM: "децилитар"}
|
||||
|
||||
{ORTH: "дл", NORM: "децилитар"},
|
||||
]
|
||||
for abbr in _abbr_exc:
|
||||
_exc[abbr[ORTH]] = [abbr]
|
||||
|
@ -33,7 +32,6 @@ _abbr_line_exc = [
|
|||
{ORTH: "г-ѓа", NORM: "госпоѓа"},
|
||||
{ORTH: "г-ца", NORM: "госпоѓица"},
|
||||
{ORTH: "г-дин", NORM: "господин"},
|
||||
|
||||
]
|
||||
|
||||
for abbr in _abbr_line_exc:
|
||||
|
@ -54,7 +52,6 @@ _abbr_dot_exc = [
|
|||
{ORTH: "т.", NORM: "точка"},
|
||||
{ORTH: "т.е.", NORM: "то ест"},
|
||||
{ORTH: "т.н.", NORM: "таканаречен"},
|
||||
|
||||
{ORTH: "бр.", NORM: "број"},
|
||||
{ORTH: "гр.", NORM: "град"},
|
||||
{ORTH: "др.", NORM: "другар"},
|
||||
|
@ -68,7 +65,6 @@ _abbr_dot_exc = [
|
|||
{ORTH: "с.", NORM: "страница"},
|
||||
{ORTH: "стр.", NORM: "страница"},
|
||||
{ORTH: "чл.", NORM: "член"},
|
||||
|
||||
{ORTH: "арх.", NORM: "архитект"},
|
||||
{ORTH: "бел.", NORM: "белешка"},
|
||||
{ORTH: "гимн.", NORM: "гимназија"},
|
||||
|
@ -89,8 +85,6 @@ _abbr_dot_exc = [
|
|||
{ORTH: "истор.", NORM: "историја"},
|
||||
{ORTH: "геогр.", NORM: "географија"},
|
||||
{ORTH: "литер.", NORM: "литература"},
|
||||
|
||||
|
||||
]
|
||||
|
||||
for abbr in _abbr_dot_exc:
|
||||
|
|
|
@ -45,7 +45,7 @@ _abbr_period_exc = [
|
|||
{ORTH: "Doç.", NORM: "doçent"},
|
||||
{ORTH: "doğ."},
|
||||
{ORTH: "Dr.", NORM: "doktor"},
|
||||
{ORTH: "dr.", NORM:"doktor"},
|
||||
{ORTH: "dr.", NORM: "doktor"},
|
||||
{ORTH: "drl.", NORM: "derleyen"},
|
||||
{ORTH: "Dz.", NORM: "deniz"},
|
||||
{ORTH: "Dz.K.K.lığı"},
|
||||
|
@ -163,7 +163,6 @@ for abbr in _abbr_exc:
|
|||
_exc[abbr[ORTH]] = [abbr]
|
||||
|
||||
|
||||
|
||||
_num = r"[+-]?\d+([,.]\d+)*"
|
||||
_ord_num = r"(\d+\.)"
|
||||
_date = r"(((\d{1,2}[./-]){2})?(\d{4})|(\d{1,2}[./]\d{1,2}(\.)?))"
|
||||
|
@ -175,7 +174,18 @@ _time_exp = r"\d+(:\d+)*"
|
|||
_inflections = r"'[{al}]+".format(al=ALPHA_LOWER)
|
||||
_abbrev_inflected = r"[{a}]+\.'[{al}]+".format(a=ALPHA, al=ALPHA_LOWER)
|
||||
|
||||
_nums = r"(({d})|({dn})|({te})|({on})|({n})|({ro})|({rn}))({inf})?".format(d=_date, dn=_dash_num, te=_time_exp, on=_ord_num, n=_num, ro=_roman_ord, rn=_roman_num, inf=_inflections)
|
||||
_nums = r"(({d})|({dn})|({te})|({on})|({n})|({ro})|({rn}))({inf})?".format(
|
||||
d=_date,
|
||||
dn=_dash_num,
|
||||
te=_time_exp,
|
||||
on=_ord_num,
|
||||
n=_num,
|
||||
ro=_roman_ord,
|
||||
rn=_roman_num,
|
||||
inf=_inflections,
|
||||
)
|
||||
|
||||
TOKENIZER_EXCEPTIONS = _exc
|
||||
TOKEN_MATCH = re.compile(r"^({abbr})|({n})$".format(n=_nums, abbr=_abbrev_inflected)).match
|
||||
TOKEN_MATCH = re.compile(
|
||||
r"^({abbr})|({n})$".format(n=_nums, abbr=_abbrev_inflected)
|
||||
).match
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import numpy
|
||||
from thinc.api import Model
|
||||
|
||||
from ..attrs import LOWER
|
||||
|
|
|
@ -28,7 +28,7 @@ def transition_parser_v1(
|
|||
maxout_pieces,
|
||||
use_upper,
|
||||
nO,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@registry.architectures.register("spacy.TransitionBasedParser.v2")
|
||||
|
@ -49,7 +49,8 @@ def transition_parser_v2(
|
|||
maxout_pieces,
|
||||
use_upper,
|
||||
nO,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def build_tb_parser_model(
|
||||
tok2vec: Model[List[Doc], List[Floats2d]],
|
||||
|
@ -162,8 +163,8 @@ def _resize_upper(model, new_nO):
|
|||
# just adding rows here.
|
||||
if smaller.has_dim("nO"):
|
||||
old_nO = smaller.get_dim("nO")
|
||||
larger_W[: old_nO] = smaller_W
|
||||
larger_b[: old_nO] = smaller_b
|
||||
larger_W[:old_nO] = smaller_W
|
||||
larger_b[:old_nO] = smaller_b
|
||||
for i in range(old_nO, new_nO):
|
||||
model.attrs["unseen_classes"].add(i)
|
||||
|
||||
|
|
|
@ -72,7 +72,9 @@ def build_text_classifier_v2(
|
|||
cnn_model = (
|
||||
tok2vec
|
||||
>> list2ragged()
|
||||
>> ParametricAttention(width) # TODO: benchmark performance difference of this layer
|
||||
>> ParametricAttention(
|
||||
width
|
||||
) # TODO: benchmark performance difference of this layer
|
||||
>> reduce_sum()
|
||||
>> residual(Maxout(nO=width, nI=width))
|
||||
>> Linear(nO=nO, nI=width)
|
||||
|
@ -92,6 +94,7 @@ def build_text_classifier_v2(
|
|||
model.attrs["multi_label"] = not exclusive_classes
|
||||
return model
|
||||
|
||||
|
||||
# TODO: move to legacy
|
||||
@registry.architectures.register("spacy.TextCatEnsemble.v1")
|
||||
def build_text_classifier_v1(
|
||||
|
|
|
@ -47,8 +47,7 @@ def forward(
|
|||
except ValueError:
|
||||
raise RuntimeError(Errors.E896)
|
||||
output = Ragged(
|
||||
vectors_data,
|
||||
model.ops.asarray([len(doc) for doc in docs], dtype="i")
|
||||
vectors_data, model.ops.asarray([len(doc) for doc in docs], dtype="i")
|
||||
)
|
||||
mask = None
|
||||
if is_train:
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
from thinc.api import Model, noop, use_ops, Linear
|
||||
from thinc.api import Model, noop
|
||||
from .parser_model import ParserStepModel
|
||||
|
||||
|
||||
def TransitionModel(tok2vec, lower, upper, resize_output, dropout=0.2, unseen_classes=set()):
|
||||
def TransitionModel(
|
||||
tok2vec, lower, upper, resize_output, dropout=0.2, unseen_classes=set()
|
||||
):
|
||||
"""Set up a stepwise transition-based model"""
|
||||
if upper is None:
|
||||
has_upper = False
|
||||
|
@ -44,4 +46,3 @@ def init(model, X=None, Y=None):
|
|||
if model.attrs["has_upper"]:
|
||||
statevecs = model.ops.alloc2f(2, lower.get_dim("nO"))
|
||||
model.get_ref("upper").initialize(X=statevecs)
|
||||
|
||||
|
|
|
@ -226,6 +226,7 @@ class AttributeRuler(Pipe):
|
|||
|
||||
DOCS: https://nightly.spacy.io/api/tagger#score
|
||||
"""
|
||||
|
||||
def morph_key_getter(token, attr):
|
||||
return getattr(token, attr).key
|
||||
|
||||
|
@ -240,8 +241,16 @@ class AttributeRuler(Pipe):
|
|||
elif attr == POS:
|
||||
results.update(Scorer.score_token_attr(examples, "pos", **kwargs))
|
||||
elif attr == MORPH:
|
||||
results.update(Scorer.score_token_attr(examples, "morph", getter=morph_key_getter, **kwargs))
|
||||
results.update(Scorer.score_token_attr_per_feat(examples, "morph", getter=morph_key_getter, **kwargs))
|
||||
results.update(
|
||||
Scorer.score_token_attr(
|
||||
examples, "morph", getter=morph_key_getter, **kwargs
|
||||
)
|
||||
)
|
||||
results.update(
|
||||
Scorer.score_token_attr_per_feat(
|
||||
examples, "morph", getter=morph_key_getter, **kwargs
|
||||
)
|
||||
)
|
||||
elif attr == LEMMA:
|
||||
results.update(Scorer.score_token_attr(examples, "lemma", **kwargs))
|
||||
return results
|
||||
|
|
|
@ -3,7 +3,7 @@ import numpy as np
|
|||
from collections import defaultdict
|
||||
|
||||
from .training import Example
|
||||
from .tokens import Token, Doc, Span, MorphAnalysis
|
||||
from .tokens import Token, Doc, Span
|
||||
from .errors import Errors
|
||||
from .util import get_lang_class, SimpleFrozenList
|
||||
from .morphology import Morphology
|
||||
|
@ -176,7 +176,7 @@ class Scorer:
|
|||
"token_acc": None,
|
||||
"token_p": None,
|
||||
"token_r": None,
|
||||
"token_f": None
|
||||
"token_f": None,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
|
@ -276,7 +276,10 @@ class Scorer:
|
|||
if gold_i not in missing_indices:
|
||||
value = getter(token, attr)
|
||||
morph = gold_doc.vocab.strings[value]
|
||||
if value not in missing_values and morph != Morphology.EMPTY_MORPH:
|
||||
if (
|
||||
value not in missing_values
|
||||
and morph != Morphology.EMPTY_MORPH
|
||||
):
|
||||
for feat in morph.split(Morphology.FEATURE_SEP):
|
||||
field, values = feat.split(Morphology.FIELD_SEP)
|
||||
if field not in per_feat:
|
||||
|
@ -367,7 +370,6 @@ class Scorer:
|
|||
f"{attr}_per_type": None,
|
||||
}
|
||||
|
||||
|
||||
@staticmethod
|
||||
def score_cats(
|
||||
examples: Iterable[Example],
|
||||
|
@ -473,7 +475,10 @@ class Scorer:
|
|||
macro_f = sum(prf.fscore for prf in f_per_type.values()) / n_cats
|
||||
# Limit macro_auc to those labels with gold annotations,
|
||||
# but still divide by all cats to avoid artificial boosting of datasets with missing labels
|
||||
macro_auc = sum(auc.score if auc.is_binary() else 0.0 for auc in auc_per_type.values()) / n_cats
|
||||
macro_auc = (
|
||||
sum(auc.score if auc.is_binary() else 0.0 for auc in auc_per_type.values())
|
||||
/ n_cats
|
||||
)
|
||||
results = {
|
||||
f"{attr}_score": None,
|
||||
f"{attr}_score_desc": None,
|
||||
|
@ -485,7 +490,9 @@ class Scorer:
|
|||
f"{attr}_macro_f": macro_f,
|
||||
f"{attr}_macro_auc": macro_auc,
|
||||
f"{attr}_f_per_type": {k: v.to_dict() for k, v in f_per_type.items()},
|
||||
f"{attr}_auc_per_type": {k: v.score if v.is_binary() else None for k, v in auc_per_type.items()},
|
||||
f"{attr}_auc_per_type": {
|
||||
k: v.score if v.is_binary() else None for k, v in auc_per_type.items()
|
||||
},
|
||||
}
|
||||
if len(labels) == 2 and not multi_label and positive_label:
|
||||
positive_label_f = results[f"{attr}_f_per_type"][positive_label]["f"]
|
||||
|
@ -675,8 +682,7 @@ class Scorer:
|
|||
|
||||
|
||||
def get_ner_prf(examples: Iterable[Example]) -> Dict[str, Any]:
|
||||
"""Compute micro-PRF and per-entity PRF scores for a sequence of examples.
|
||||
"""
|
||||
"""Compute micro-PRF and per-entity PRF scores for a sequence of examples."""
|
||||
score_per_type = defaultdict(PRFScore)
|
||||
for eg in examples:
|
||||
if not eg.y.has_annotation("ENT_IOB"):
|
||||
|
|
|
@ -154,10 +154,10 @@ def test_doc_api_serialize(en_tokenizer, text):
|
|||
|
||||
logger = logging.getLogger("spacy")
|
||||
with mock.patch.object(logger, "warning") as mock_warning:
|
||||
_ = tokens.to_bytes()
|
||||
_ = tokens.to_bytes() # noqa: F841
|
||||
mock_warning.assert_not_called()
|
||||
tokens.user_hooks["similarity"] = inner_func
|
||||
_ = tokens.to_bytes()
|
||||
_ = tokens.to_bytes() # noqa: F841
|
||||
mock_warning.assert_called_once()
|
||||
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ def test_tokenizer_handles_long_text(mk_tokenizer):
|
|||
(",", False),
|
||||
("милијарда", True),
|
||||
("билион", True),
|
||||
]
|
||||
],
|
||||
)
|
||||
def test_mk_lex_attrs_like_number(mk_tokenizer, word, match):
|
||||
tokens = mk_tokenizer(word)
|
||||
|
@ -53,14 +53,7 @@ def test_mk_lex_attrs_like_number(mk_tokenizer, word, match):
|
|||
assert tokens[0].like_num == match
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"word",
|
||||
[
|
||||
"двесте",
|
||||
"два-три",
|
||||
"пет-шест"
|
||||
]
|
||||
)
|
||||
@pytest.mark.parametrize("word", ["двесте", "два-три", "пет-шест"])
|
||||
def test_mk_lex_attrs_capitals(word):
|
||||
assert like_num(word)
|
||||
assert like_num(word.upper())
|
||||
|
@ -77,8 +70,8 @@ def test_mk_lex_attrs_capitals(word):
|
|||
"петто",
|
||||
"стоти",
|
||||
"шеесетите",
|
||||
"седумдесетите"
|
||||
]
|
||||
"седумдесетите",
|
||||
],
|
||||
)
|
||||
def test_mk_lex_attrs_like_number_for_ordinal(word):
|
||||
assert like_num(word)
|
||||
|
|
|
@ -21,8 +21,6 @@ ve gevşek bir biçimde birbirine yaklaştırarak 2 cm eninde bir pamuk şeridi
|
|||
assert len(tokens) == 146
|
||||
|
||||
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"word",
|
||||
[
|
||||
|
|
|
@ -6,8 +6,14 @@ ABBREV_TESTS = [
|
|||
("Dr.la görüştüm.", ["Dr.la", "görüştüm", "."]),
|
||||
("Dr.'la görüştüm.", ["Dr.'la", "görüştüm", "."]),
|
||||
("TBMM'de çalışıyormuş.", ["TBMM'de", "çalışıyormuş", "."]),
|
||||
("Hem İst. hem Ank. bu konuda gayet iyi durumda.", ["Hem", "İst.", "hem", "Ank.", "bu", "konuda", "gayet", "iyi", "durumda", "."]),
|
||||
("Hem İst. hem Ank.'da yağış var.", ["Hem", "İst.", "hem", "Ank.'da", "yağış", "var", "."]),
|
||||
(
|
||||
"Hem İst. hem Ank. bu konuda gayet iyi durumda.",
|
||||
["Hem", "İst.", "hem", "Ank.", "bu", "konuda", "gayet", "iyi", "durumda", "."],
|
||||
),
|
||||
(
|
||||
"Hem İst. hem Ank.'da yağış var.",
|
||||
["Hem", "İst.", "hem", "Ank.'da", "yağış", "var", "."],
|
||||
),
|
||||
("Dr.", ["Dr."]),
|
||||
("Yrd.Doç.", ["Yrd.Doç."]),
|
||||
("Prof.'un", ["Prof.'un"]),
|
||||
|
@ -15,25 +21,59 @@ ABBREV_TESTS = [
|
|||
]
|
||||
|
||||
|
||||
|
||||
URL_TESTS = [
|
||||
("Bizler de www.duygu.com.tr adında bir websitesi kurduk.", ["Bizler", "de", "www.duygu.com.tr", "adında", "bir", "websitesi", "kurduk", "."]),
|
||||
("Bizler de https://www.duygu.com.tr adında bir websitesi kurduk.", ["Bizler", "de", "https://www.duygu.com.tr", "adında", "bir", "websitesi", "kurduk", "."]),
|
||||
("Bizler de www.duygu.com.tr'dan satın aldık.", ["Bizler", "de", "www.duygu.com.tr'dan", "satın", "aldık", "."]),
|
||||
("Bizler de https://www.duygu.com.tr'dan satın aldık.", ["Bizler", "de", "https://www.duygu.com.tr'dan", "satın", "aldık", "."]),
|
||||
(
|
||||
"Bizler de www.duygu.com.tr adında bir websitesi kurduk.",
|
||||
[
|
||||
"Bizler",
|
||||
"de",
|
||||
"www.duygu.com.tr",
|
||||
"adında",
|
||||
"bir",
|
||||
"websitesi",
|
||||
"kurduk",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Bizler de https://www.duygu.com.tr adında bir websitesi kurduk.",
|
||||
[
|
||||
"Bizler",
|
||||
"de",
|
||||
"https://www.duygu.com.tr",
|
||||
"adında",
|
||||
"bir",
|
||||
"websitesi",
|
||||
"kurduk",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Bizler de www.duygu.com.tr'dan satın aldık.",
|
||||
["Bizler", "de", "www.duygu.com.tr'dan", "satın", "aldık", "."],
|
||||
),
|
||||
(
|
||||
"Bizler de https://www.duygu.com.tr'dan satın aldık.",
|
||||
["Bizler", "de", "https://www.duygu.com.tr'dan", "satın", "aldık", "."],
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
|
||||
NUMBER_TESTS = [
|
||||
("Rakamla 6 yazılıydı.", ["Rakamla", "6", "yazılıydı", "."]),
|
||||
("Hava -4 dereceydi.", ["Hava", "-4", "dereceydi", "."]),
|
||||
("Hava sıcaklığı -4ten +6ya yükseldi.", ["Hava", "sıcaklığı", "-4ten", "+6ya", "yükseldi", "."]),
|
||||
("Hava sıcaklığı -4'ten +6'ya yükseldi.", ["Hava", "sıcaklığı", "-4'ten", "+6'ya", "yükseldi", "."]),
|
||||
(
|
||||
"Hava sıcaklığı -4ten +6ya yükseldi.",
|
||||
["Hava", "sıcaklığı", "-4ten", "+6ya", "yükseldi", "."],
|
||||
),
|
||||
(
|
||||
"Hava sıcaklığı -4'ten +6'ya yükseldi.",
|
||||
["Hava", "sıcaklığı", "-4'ten", "+6'ya", "yükseldi", "."],
|
||||
),
|
||||
("Yarışta 6. oldum.", ["Yarışta", "6.", "oldum", "."]),
|
||||
("Yarışta 438547745. oldum.", ["Yarışta", "438547745.", "oldum", "."]),
|
||||
("Kitap IV. Murat hakkında.",["Kitap", "IV.", "Murat", "hakkında", "."]),
|
||||
#("Bana söylediği sayı 6.", ["Bana", "söylediği", "sayı", "6", "."]),
|
||||
("Kitap IV. Murat hakkında.", ["Kitap", "IV.", "Murat", "hakkında", "."]),
|
||||
# ("Bana söylediği sayı 6.", ["Bana", "söylediği", "sayı", "6", "."]),
|
||||
("Saat 6'da buluşalım.", ["Saat", "6'da", "buluşalım", "."]),
|
||||
("Saat 6dan sonra buluşalım.", ["Saat", "6dan", "sonra", "buluşalım", "."]),
|
||||
("6.dan sonra saymadım.", ["6.dan", "sonra", "saymadım", "."]),
|
||||
|
@ -55,22 +95,103 @@ NUMBER_TESTS = [
|
|||
("VI.dan", ["VI.dan"]),
|
||||
("Hepsi 1994 yılında oldu.", ["Hepsi", "1994", "yılında", "oldu", "."]),
|
||||
("Hepsi 1994'te oldu.", ["Hepsi", "1994'te", "oldu", "."]),
|
||||
("2/3 tarihli faturayı bulamadım.", ["2/3", "tarihli", "faturayı", "bulamadım", "."]),
|
||||
("2.3 tarihli faturayı bulamadım.", ["2.3", "tarihli", "faturayı", "bulamadım", "."]),
|
||||
("2.3. tarihli faturayı bulamadım.", ["2.3.", "tarihli", "faturayı", "bulamadım", "."]),
|
||||
("2/3/2020 tarihli faturayı bulamadm.", ["2/3/2020", "tarihli", "faturayı", "bulamadm", "."]),
|
||||
("2/3/1987 tarihinden beri burda yaşıyorum.", ["2/3/1987", "tarihinden", "beri", "burda", "yaşıyorum", "."]),
|
||||
("2-3-1987 tarihinden beri burdayım.", ["2-3-1987", "tarihinden", "beri", "burdayım", "."]),
|
||||
("2.3.1987 tarihinden beri burdayım.", ["2.3.1987", "tarihinden", "beri", "burdayım", "."]),
|
||||
("Bu olay 2005-2006 tarihleri arasında oldu.", ["Bu", "olay", "2005", "-", "2006", "tarihleri", "arasında", "oldu", "."]),
|
||||
("Bu olay 4/12/2005-21/3/2006 tarihleri arasında oldu.", ["Bu", "olay", "4/12/2005", "-", "21/3/2006", "tarihleri", "arasında", "oldu", ".",]),
|
||||
("Ek fıkra: 5/11/2003-4999/3 maddesine göre uygundur.", ["Ek", "fıkra", ":", "5/11/2003", "-", "4999/3", "maddesine", "göre", "uygundur", "."]),
|
||||
("2/A alanları: 6831 sayılı Kanunun 2nci maddesinin birinci fıkrasının (A) bendine göre", ["2/A", "alanları", ":", "6831", "sayılı", "Kanunun", "2nci", "maddesinin", "birinci", "fıkrasının", "(", "A", ")", "bendine", "göre"]),
|
||||
("ŞEHİTTEĞMENKALMAZ Cad. No: 2/311", ["ŞEHİTTEĞMENKALMAZ", "Cad.", "No", ":", "2/311"]),
|
||||
("2-3-2025", ["2-3-2025",]),
|
||||
(
|
||||
"2/3 tarihli faturayı bulamadım.",
|
||||
["2/3", "tarihli", "faturayı", "bulamadım", "."],
|
||||
),
|
||||
(
|
||||
"2.3 tarihli faturayı bulamadım.",
|
||||
["2.3", "tarihli", "faturayı", "bulamadım", "."],
|
||||
),
|
||||
(
|
||||
"2.3. tarihli faturayı bulamadım.",
|
||||
["2.3.", "tarihli", "faturayı", "bulamadım", "."],
|
||||
),
|
||||
(
|
||||
"2/3/2020 tarihli faturayı bulamadm.",
|
||||
["2/3/2020", "tarihli", "faturayı", "bulamadm", "."],
|
||||
),
|
||||
(
|
||||
"2/3/1987 tarihinden beri burda yaşıyorum.",
|
||||
["2/3/1987", "tarihinden", "beri", "burda", "yaşıyorum", "."],
|
||||
),
|
||||
(
|
||||
"2-3-1987 tarihinden beri burdayım.",
|
||||
["2-3-1987", "tarihinden", "beri", "burdayım", "."],
|
||||
),
|
||||
(
|
||||
"2.3.1987 tarihinden beri burdayım.",
|
||||
["2.3.1987", "tarihinden", "beri", "burdayım", "."],
|
||||
),
|
||||
(
|
||||
"Bu olay 2005-2006 tarihleri arasında oldu.",
|
||||
["Bu", "olay", "2005", "-", "2006", "tarihleri", "arasında", "oldu", "."],
|
||||
),
|
||||
(
|
||||
"Bu olay 4/12/2005-21/3/2006 tarihleri arasında oldu.",
|
||||
[
|
||||
"Bu",
|
||||
"olay",
|
||||
"4/12/2005",
|
||||
"-",
|
||||
"21/3/2006",
|
||||
"tarihleri",
|
||||
"arasında",
|
||||
"oldu",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Ek fıkra: 5/11/2003-4999/3 maddesine göre uygundur.",
|
||||
[
|
||||
"Ek",
|
||||
"fıkra",
|
||||
":",
|
||||
"5/11/2003",
|
||||
"-",
|
||||
"4999/3",
|
||||
"maddesine",
|
||||
"göre",
|
||||
"uygundur",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"2/A alanları: 6831 sayılı Kanunun 2nci maddesinin birinci fıkrasının (A) bendine göre",
|
||||
[
|
||||
"2/A",
|
||||
"alanları",
|
||||
":",
|
||||
"6831",
|
||||
"sayılı",
|
||||
"Kanunun",
|
||||
"2nci",
|
||||
"maddesinin",
|
||||
"birinci",
|
||||
"fıkrasının",
|
||||
"(",
|
||||
"A",
|
||||
")",
|
||||
"bendine",
|
||||
"göre",
|
||||
],
|
||||
),
|
||||
(
|
||||
"ŞEHİTTEĞMENKALMAZ Cad. No: 2/311",
|
||||
["ŞEHİTTEĞMENKALMAZ", "Cad.", "No", ":", "2/311"],
|
||||
),
|
||||
(
|
||||
"2-3-2025",
|
||||
[
|
||||
"2-3-2025",
|
||||
],
|
||||
),
|
||||
("2/3/2025", ["2/3/2025"]),
|
||||
("Yıllardır 0.5 uç kullanıyorum.", ["Yıllardır", "0.5", "uç", "kullanıyorum", "."]),
|
||||
("Kan değerlerim 0.5-0.7 arasıydı.", ["Kan", "değerlerim", "0.5", "-", "0.7", "arasıydı", "."]),
|
||||
(
|
||||
"Kan değerlerim 0.5-0.7 arasıydı.",
|
||||
["Kan", "değerlerim", "0.5", "-", "0.7", "arasıydı", "."],
|
||||
),
|
||||
("0.5", ["0.5"]),
|
||||
("1/2", ["1/2"]),
|
||||
("%1", ["%", "1"]),
|
||||
|
@ -79,11 +200,20 @@ NUMBER_TESTS = [
|
|||
("%1lik dilim", ["%", "1lik", "dilim"]),
|
||||
("%1'lik dilim", ["%", "1'lik", "dilim"]),
|
||||
("%1.5", ["%", "1.5"]),
|
||||
#("%1-%2 arası büyüme bekleniyor.", ["%", "1", "-", "%", "2", "arası", "büyüme", "bekleniyor", "."]),
|
||||
("%1-2 arası büyüme bekliyoruz.", ["%", "1", "-", "2", "arası", "büyüme", "bekliyoruz", "."]),
|
||||
("%11-12 arası büyüme bekliyoruz.", ["%", "11", "-", "12", "arası", "büyüme", "bekliyoruz", "."]),
|
||||
# ("%1-%2 arası büyüme bekleniyor.", ["%", "1", "-", "%", "2", "arası", "büyüme", "bekleniyor", "."]),
|
||||
(
|
||||
"%1-2 arası büyüme bekliyoruz.",
|
||||
["%", "1", "-", "2", "arası", "büyüme", "bekliyoruz", "."],
|
||||
),
|
||||
(
|
||||
"%11-12 arası büyüme bekliyoruz.",
|
||||
["%", "11", "-", "12", "arası", "büyüme", "bekliyoruz", "."],
|
||||
),
|
||||
("%1.5luk büyüme bekliyoruz.", ["%", "1.5luk", "büyüme", "bekliyoruz", "."]),
|
||||
("Saat 1-2 arası gelin lütfen.", ["Saat", "1", "-", "2", "arası", "gelin", "lütfen", "."]),
|
||||
(
|
||||
"Saat 1-2 arası gelin lütfen.",
|
||||
["Saat", "1", "-", "2", "arası", "gelin", "lütfen", "."],
|
||||
),
|
||||
("Saat 15:30 gibi buluşalım.", ["Saat", "15:30", "gibi", "buluşalım", "."]),
|
||||
("Saat 15:30'da buluşalım.", ["Saat", "15:30'da", "buluşalım", "."]),
|
||||
("Saat 15.30'da buluşalım.", ["Saat", "15.30'da", "buluşalım", "."]),
|
||||
|
@ -94,9 +224,74 @@ NUMBER_TESTS = [
|
|||
("Okulumuz 3/B şubesi", ["Okulumuz", "3/B", "şubesi"]),
|
||||
("Okulumuz 3B şubesi", ["Okulumuz", "3B", "şubesi"]),
|
||||
("Okulumuz 3b şubesi", ["Okulumuz", "3b", "şubesi"]),
|
||||
("Antonio Gaudí 20. yüzyılda, 1904-1914 yılları arasında on yıl süren bir reform süreci getirmiştir.", ["Antonio", "Gaudí", "20.", "yüzyılda", ",", "1904", "-", "1914", "yılları", "arasında", "on", "yıl", "süren", "bir", "reform", "süreci", "getirmiştir", "."]),
|
||||
("Dizel yakıtın avro bölgesi ortalaması olan 1,165 avroya kıyasla litre başına 1,335 avroya mal olduğunu gösteriyor.", ["Dizel", "yakıtın", "avro", "bölgesi", "ortalaması", "olan", "1,165", "avroya", "kıyasla", "litre", "başına", "1,335", "avroya", "mal", "olduğunu", "gösteriyor", "."]),
|
||||
("Marcus Antonius M.Ö. 1 Ocak 49'da, Sezar'dan Vali'nin kendisini barış dostu ilan ettiği bir bildiri yayınlamıştır.", ["Marcus", "Antonius", "M.Ö.", "1", "Ocak", "49'da", ",", "Sezar'dan", "Vali'nin", "kendisini", "barış", "dostu", "ilan", "ettiği", "bir", "bildiri", "yayınlamıştır", "."])
|
||||
(
|
||||
"Antonio Gaudí 20. yüzyılda, 1904-1914 yılları arasında on yıl süren bir reform süreci getirmiştir.",
|
||||
[
|
||||
"Antonio",
|
||||
"Gaudí",
|
||||
"20.",
|
||||
"yüzyılda",
|
||||
",",
|
||||
"1904",
|
||||
"-",
|
||||
"1914",
|
||||
"yılları",
|
||||
"arasında",
|
||||
"on",
|
||||
"yıl",
|
||||
"süren",
|
||||
"bir",
|
||||
"reform",
|
||||
"süreci",
|
||||
"getirmiştir",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Dizel yakıtın avro bölgesi ortalaması olan 1,165 avroya kıyasla litre başına 1,335 avroya mal olduğunu gösteriyor.",
|
||||
[
|
||||
"Dizel",
|
||||
"yakıtın",
|
||||
"avro",
|
||||
"bölgesi",
|
||||
"ortalaması",
|
||||
"olan",
|
||||
"1,165",
|
||||
"avroya",
|
||||
"kıyasla",
|
||||
"litre",
|
||||
"başına",
|
||||
"1,335",
|
||||
"avroya",
|
||||
"mal",
|
||||
"olduğunu",
|
||||
"gösteriyor",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Marcus Antonius M.Ö. 1 Ocak 49'da, Sezar'dan Vali'nin kendisini barış dostu ilan ettiği bir bildiri yayınlamıştır.",
|
||||
[
|
||||
"Marcus",
|
||||
"Antonius",
|
||||
"M.Ö.",
|
||||
"1",
|
||||
"Ocak",
|
||||
"49'da",
|
||||
",",
|
||||
"Sezar'dan",
|
||||
"Vali'nin",
|
||||
"kendisini",
|
||||
"barış",
|
||||
"dostu",
|
||||
"ilan",
|
||||
"ettiği",
|
||||
"bir",
|
||||
"bildiri",
|
||||
"yayınlamıştır",
|
||||
".",
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
|
@ -106,41 +301,393 @@ PUNCT_TESTS = [
|
|||
("Gitsek mi?", ["Gitsek", "mi", "?"]),
|
||||
("Gitsek mi??", ["Gitsek", "mi", "?", "?"]),
|
||||
("Gitsek mi?!?", ["Gitsek", "mi", "?", "!", "?"]),
|
||||
("Ankara - Antalya arası otobüs işliyor.", ["Ankara", "-", "Antalya", "arası", "otobüs", "işliyor", "."]),
|
||||
("Ankara-Antalya arası otobüs işliyor.", ["Ankara", "-", "Antalya", "arası", "otobüs", "işliyor", "."]),
|
||||
(
|
||||
"Ankara - Antalya arası otobüs işliyor.",
|
||||
["Ankara", "-", "Antalya", "arası", "otobüs", "işliyor", "."],
|
||||
),
|
||||
(
|
||||
"Ankara-Antalya arası otobüs işliyor.",
|
||||
["Ankara", "-", "Antalya", "arası", "otobüs", "işliyor", "."],
|
||||
),
|
||||
("Sen--ben, ya da onlar.", ["Sen", "--", "ben", ",", "ya", "da", "onlar", "."]),
|
||||
("Senden, benden, bizden şarkısını biliyor musun?", ["Senden", ",", "benden", ",", "bizden", "şarkısını", "biliyor", "musun", "?"]),
|
||||
("Akif'le geldik, sonra da o ayrıldı.", ["Akif'le", "geldik", ",", "sonra", "da", "o", "ayrıldı", "."]),
|
||||
(
|
||||
"Senden, benden, bizden şarkısını biliyor musun?",
|
||||
["Senden", ",", "benden", ",", "bizden", "şarkısını", "biliyor", "musun", "?"],
|
||||
),
|
||||
(
|
||||
"Akif'le geldik, sonra da o ayrıldı.",
|
||||
["Akif'le", "geldik", ",", "sonra", "da", "o", "ayrıldı", "."],
|
||||
),
|
||||
("Bu adam ne dedi şimdi???", ["Bu", "adam", "ne", "dedi", "şimdi", "?", "?", "?"]),
|
||||
("Yok hasta olmuş, yok annesi hastaymış, bahaneler işte...", ["Yok", "hasta", "olmuş", ",", "yok", "annesi", "hastaymış", ",", "bahaneler", "işte", "..."]),
|
||||
("Ankara'dan İstanbul'a ... bir aşk hikayesi.", ["Ankara'dan", "İstanbul'a", "...", "bir", "aşk", "hikayesi", "."]),
|
||||
(
|
||||
"Yok hasta olmuş, yok annesi hastaymış, bahaneler işte...",
|
||||
[
|
||||
"Yok",
|
||||
"hasta",
|
||||
"olmuş",
|
||||
",",
|
||||
"yok",
|
||||
"annesi",
|
||||
"hastaymış",
|
||||
",",
|
||||
"bahaneler",
|
||||
"işte",
|
||||
"...",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Ankara'dan İstanbul'a ... bir aşk hikayesi.",
|
||||
["Ankara'dan", "İstanbul'a", "...", "bir", "aşk", "hikayesi", "."],
|
||||
),
|
||||
("Ahmet'te", ["Ahmet'te"]),
|
||||
("İstanbul'da", ["İstanbul'da"]),
|
||||
]
|
||||
|
||||
GENERAL_TESTS = [
|
||||
("1914'teki Endurance seferinde, Sir Ernest Shackleton'ın kaptanlığını yaptığı İngiliz Endurance gemisi yirmi sekiz kişi ile Antarktika'yı geçmek üzere yelken açtı.", ["1914'teki", "Endurance", "seferinde", ",", "Sir", "Ernest", "Shackleton'ın", "kaptanlığını", "yaptığı", "İngiliz", "Endurance", "gemisi", "yirmi", "sekiz", "kişi", "ile", "Antarktika'yı", "geçmek", "üzere", "yelken", "açtı", "."]),
|
||||
("Danışılan \"%100 Cospedal\" olduğunu belirtti.", ["Danışılan", '"', "%", "100", "Cospedal", '"', "olduğunu", "belirtti", "."]),
|
||||
("1976'da parkur artık kullanılmıyordu; 1990'da ise bir yangın, daha sonraları ahırlarla birlikte yıkılacak olan tahta tribünlerden geri kalanları da yok etmişti.", ["1976'da", "parkur", "artık", "kullanılmıyordu", ";", "1990'da", "ise", "bir", "yangın", ",", "daha", "sonraları", "ahırlarla", "birlikte", "yıkılacak", "olan", "tahta", "tribünlerden", "geri", "kalanları", "da", "yok", "etmişti", "."]),
|
||||
("Dahiyane bir ameliyat ve zorlu bir rehabilitasyon sürecinden sonra, tamamen iyileştim.", ["Dahiyane", "bir", "ameliyat", "ve", "zorlu", "bir", "rehabilitasyon", "sürecinden", "sonra", ",", "tamamen", "iyileştim", "."]),
|
||||
("Yaklaşık iki hafta süren bireysel erken oy kullanma döneminin ardından 5,7 milyondan fazla Floridalı sandık başına gitti.", ["Yaklaşık", "iki", "hafta", "süren", "bireysel", "erken", "oy", "kullanma", "döneminin", "ardından", "5,7", "milyondan", "fazla", "Floridalı", "sandık", "başına", "gitti", "."]),
|
||||
("Ancak, bu ABD Çevre Koruma Ajansı'nın dünyayı bu konularda uyarmasının ardından ortaya çıktı.", ["Ancak", ",", "bu", "ABD", "Çevre", "Koruma", "Ajansı'nın", "dünyayı", "bu", "konularda", "uyarmasının", "ardından", "ortaya", "çıktı", "."]),
|
||||
("Ortalama şansa ve 10.000 Sterlin değerinde tahvillere sahip bir yatırımcı yılda 125 Sterlin ikramiye kazanabilir.", ["Ortalama", "şansa", "ve", "10.000", "Sterlin", "değerinde", "tahvillere", "sahip", "bir", "yatırımcı", "yılda", "125", "Sterlin", "ikramiye", "kazanabilir", "."]),
|
||||
("Granit adaları; Seyşeller ve Tioman ile Saint Helena gibi volkanik adaları kapsar." , ["Granit", "adaları", ";", "Seyşeller", "ve", "Tioman", "ile", "Saint", "Helena", "gibi", "volkanik", "adaları", "kapsar", "."]),
|
||||
("Barış antlaşmasıyla İspanya, Amerika'ya Porto Riko, Guam ve Filipinler kolonilerini devretti.", ["Barış", "antlaşmasıyla", "İspanya", ",", "Amerika'ya", "Porto", "Riko", ",", "Guam", "ve", "Filipinler", "kolonilerini", "devretti", "."]),
|
||||
("Makedonya\'nın sınır bölgelerini güvence altına alan Philip, büyük bir Makedon ordusu kurdu ve uzun bir fetih seferi için Trakya\'ya doğru yürüdü.", ["Makedonya\'nın", "sınır", "bölgelerini", "güvence", "altına", "alan", "Philip", ",", "büyük", "bir", "Makedon", "ordusu", "kurdu", "ve", "uzun", "bir", "fetih", "seferi", "için", "Trakya\'ya", "doğru", "yürüdü", "."]),
|
||||
("Fransız gazetesi Le Figaro'ya göre bu hükumet planı sayesinde 42 milyon Euro kazanç sağlanabilir ve elde edilen paranın 15.5 milyonu ulusal güvenlik için kullanılabilir.", ["Fransız", "gazetesi", "Le", "Figaro'ya", "göre", "bu", "hükumet", "planı", "sayesinde", "42", "milyon", "Euro", "kazanç", "sağlanabilir", "ve", "elde", "edilen", "paranın", "15.5", "milyonu", "ulusal", "güvenlik", "için", "kullanılabilir", "."]),
|
||||
("Ortalama şansa ve 10.000 Sterlin değerinde tahvillere sahip bir yatırımcı yılda 125 Sterlin ikramiye kazanabilir.", ["Ortalama", "şansa", "ve", "10.000", "Sterlin", "değerinde", "tahvillere", "sahip", "bir", "yatırımcı", "yılda", "125", "Sterlin", "ikramiye", "kazanabilir", "."]),
|
||||
("3 Kasım Salı günü, Ankara Belediye Başkanı 2014'te hükümetle birlikte oluşturulan kentsel gelişim anlaşmasını askıya alma kararı verdi.", ["3", "Kasım", "Salı", "günü", ",", "Ankara", "Belediye", "Başkanı", "2014'te", "hükümetle", "birlikte", "oluşturulan", "kentsel", "gelişim", "anlaşmasını", "askıya", "alma", "kararı", "verdi", "."]),
|
||||
("Stalin, Abakumov'u Beria'nın enerji bakanlıkları üzerindeki baskınlığına karşı MGB içinde kendi ağını kurmaya teşvik etmeye başlamıştı.", ["Stalin", ",", "Abakumov'u", "Beria'nın", "enerji", "bakanlıkları", "üzerindeki", "baskınlığına", "karşı", "MGB", "içinde", "kendi", "ağını", "kurmaya", "teşvik", "etmeye", "başlamıştı", "."]),
|
||||
("Güney Avrupa'daki kazı alanlarının çoğunluğu gibi, bu bulgu M.Ö. 5. yüzyılın başlar", ["Güney", "Avrupa'daki", "kazı", "alanlarının", "çoğunluğu", "gibi", ",", "bu", "bulgu", "M.Ö.", "5.", "yüzyılın", "başlar"]),
|
||||
("Sağlığın bozulması Hitchcock hayatının son yirmi yılında üretimini azalttı.", ["Sağlığın", "bozulması", "Hitchcock", "hayatının", "son", "yirmi", "yılında", "üretimini", "azalttı", "."]),
|
||||
(
|
||||
"1914'teki Endurance seferinde, Sir Ernest Shackleton'ın kaptanlığını yaptığı İngiliz Endurance gemisi yirmi sekiz kişi ile Antarktika'yı geçmek üzere yelken açtı.",
|
||||
[
|
||||
"1914'teki",
|
||||
"Endurance",
|
||||
"seferinde",
|
||||
",",
|
||||
"Sir",
|
||||
"Ernest",
|
||||
"Shackleton'ın",
|
||||
"kaptanlığını",
|
||||
"yaptığı",
|
||||
"İngiliz",
|
||||
"Endurance",
|
||||
"gemisi",
|
||||
"yirmi",
|
||||
"sekiz",
|
||||
"kişi",
|
||||
"ile",
|
||||
"Antarktika'yı",
|
||||
"geçmek",
|
||||
"üzere",
|
||||
"yelken",
|
||||
"açtı",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
'Danışılan "%100 Cospedal" olduğunu belirtti.',
|
||||
["Danışılan", '"', "%", "100", "Cospedal", '"', "olduğunu", "belirtti", "."],
|
||||
),
|
||||
(
|
||||
"1976'da parkur artık kullanılmıyordu; 1990'da ise bir yangın, daha sonraları ahırlarla birlikte yıkılacak olan tahta tribünlerden geri kalanları da yok etmişti.",
|
||||
[
|
||||
"1976'da",
|
||||
"parkur",
|
||||
"artık",
|
||||
"kullanılmıyordu",
|
||||
";",
|
||||
"1990'da",
|
||||
"ise",
|
||||
"bir",
|
||||
"yangın",
|
||||
",",
|
||||
"daha",
|
||||
"sonraları",
|
||||
"ahırlarla",
|
||||
"birlikte",
|
||||
"yıkılacak",
|
||||
"olan",
|
||||
"tahta",
|
||||
"tribünlerden",
|
||||
"geri",
|
||||
"kalanları",
|
||||
"da",
|
||||
"yok",
|
||||
"etmişti",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Dahiyane bir ameliyat ve zorlu bir rehabilitasyon sürecinden sonra, tamamen iyileştim.",
|
||||
[
|
||||
"Dahiyane",
|
||||
"bir",
|
||||
"ameliyat",
|
||||
"ve",
|
||||
"zorlu",
|
||||
"bir",
|
||||
"rehabilitasyon",
|
||||
"sürecinden",
|
||||
"sonra",
|
||||
",",
|
||||
"tamamen",
|
||||
"iyileştim",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Yaklaşık iki hafta süren bireysel erken oy kullanma döneminin ardından 5,7 milyondan fazla Floridalı sandık başına gitti.",
|
||||
[
|
||||
"Yaklaşık",
|
||||
"iki",
|
||||
"hafta",
|
||||
"süren",
|
||||
"bireysel",
|
||||
"erken",
|
||||
"oy",
|
||||
"kullanma",
|
||||
"döneminin",
|
||||
"ardından",
|
||||
"5,7",
|
||||
"milyondan",
|
||||
"fazla",
|
||||
"Floridalı",
|
||||
"sandık",
|
||||
"başına",
|
||||
"gitti",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Ancak, bu ABD Çevre Koruma Ajansı'nın dünyayı bu konularda uyarmasının ardından ortaya çıktı.",
|
||||
[
|
||||
"Ancak",
|
||||
",",
|
||||
"bu",
|
||||
"ABD",
|
||||
"Çevre",
|
||||
"Koruma",
|
||||
"Ajansı'nın",
|
||||
"dünyayı",
|
||||
"bu",
|
||||
"konularda",
|
||||
"uyarmasının",
|
||||
"ardından",
|
||||
"ortaya",
|
||||
"çıktı",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Ortalama şansa ve 10.000 Sterlin değerinde tahvillere sahip bir yatırımcı yılda 125 Sterlin ikramiye kazanabilir.",
|
||||
[
|
||||
"Ortalama",
|
||||
"şansa",
|
||||
"ve",
|
||||
"10.000",
|
||||
"Sterlin",
|
||||
"değerinde",
|
||||
"tahvillere",
|
||||
"sahip",
|
||||
"bir",
|
||||
"yatırımcı",
|
||||
"yılda",
|
||||
"125",
|
||||
"Sterlin",
|
||||
"ikramiye",
|
||||
"kazanabilir",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Granit adaları; Seyşeller ve Tioman ile Saint Helena gibi volkanik adaları kapsar.",
|
||||
[
|
||||
"Granit",
|
||||
"adaları",
|
||||
";",
|
||||
"Seyşeller",
|
||||
"ve",
|
||||
"Tioman",
|
||||
"ile",
|
||||
"Saint",
|
||||
"Helena",
|
||||
"gibi",
|
||||
"volkanik",
|
||||
"adaları",
|
||||
"kapsar",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Barış antlaşmasıyla İspanya, Amerika'ya Porto Riko, Guam ve Filipinler kolonilerini devretti.",
|
||||
[
|
||||
"Barış",
|
||||
"antlaşmasıyla",
|
||||
"İspanya",
|
||||
",",
|
||||
"Amerika'ya",
|
||||
"Porto",
|
||||
"Riko",
|
||||
",",
|
||||
"Guam",
|
||||
"ve",
|
||||
"Filipinler",
|
||||
"kolonilerini",
|
||||
"devretti",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Makedonya'nın sınır bölgelerini güvence altına alan Philip, büyük bir Makedon ordusu kurdu ve uzun bir fetih seferi için Trakya'ya doğru yürüdü.",
|
||||
[
|
||||
"Makedonya'nın",
|
||||
"sınır",
|
||||
"bölgelerini",
|
||||
"güvence",
|
||||
"altına",
|
||||
"alan",
|
||||
"Philip",
|
||||
",",
|
||||
"büyük",
|
||||
"bir",
|
||||
"Makedon",
|
||||
"ordusu",
|
||||
"kurdu",
|
||||
"ve",
|
||||
"uzun",
|
||||
"bir",
|
||||
"fetih",
|
||||
"seferi",
|
||||
"için",
|
||||
"Trakya'ya",
|
||||
"doğru",
|
||||
"yürüdü",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Fransız gazetesi Le Figaro'ya göre bu hükumet planı sayesinde 42 milyon Euro kazanç sağlanabilir ve elde edilen paranın 15.5 milyonu ulusal güvenlik için kullanılabilir.",
|
||||
[
|
||||
"Fransız",
|
||||
"gazetesi",
|
||||
"Le",
|
||||
"Figaro'ya",
|
||||
"göre",
|
||||
"bu",
|
||||
"hükumet",
|
||||
"planı",
|
||||
"sayesinde",
|
||||
"42",
|
||||
"milyon",
|
||||
"Euro",
|
||||
"kazanç",
|
||||
"sağlanabilir",
|
||||
"ve",
|
||||
"elde",
|
||||
"edilen",
|
||||
"paranın",
|
||||
"15.5",
|
||||
"milyonu",
|
||||
"ulusal",
|
||||
"güvenlik",
|
||||
"için",
|
||||
"kullanılabilir",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Ortalama şansa ve 10.000 Sterlin değerinde tahvillere sahip bir yatırımcı yılda 125 Sterlin ikramiye kazanabilir.",
|
||||
[
|
||||
"Ortalama",
|
||||
"şansa",
|
||||
"ve",
|
||||
"10.000",
|
||||
"Sterlin",
|
||||
"değerinde",
|
||||
"tahvillere",
|
||||
"sahip",
|
||||
"bir",
|
||||
"yatırımcı",
|
||||
"yılda",
|
||||
"125",
|
||||
"Sterlin",
|
||||
"ikramiye",
|
||||
"kazanabilir",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"3 Kasım Salı günü, Ankara Belediye Başkanı 2014'te hükümetle birlikte oluşturulan kentsel gelişim anlaşmasını askıya alma kararı verdi.",
|
||||
[
|
||||
"3",
|
||||
"Kasım",
|
||||
"Salı",
|
||||
"günü",
|
||||
",",
|
||||
"Ankara",
|
||||
"Belediye",
|
||||
"Başkanı",
|
||||
"2014'te",
|
||||
"hükümetle",
|
||||
"birlikte",
|
||||
"oluşturulan",
|
||||
"kentsel",
|
||||
"gelişim",
|
||||
"anlaşmasını",
|
||||
"askıya",
|
||||
"alma",
|
||||
"kararı",
|
||||
"verdi",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Stalin, Abakumov'u Beria'nın enerji bakanlıkları üzerindeki baskınlığına karşı MGB içinde kendi ağını kurmaya teşvik etmeye başlamıştı.",
|
||||
[
|
||||
"Stalin",
|
||||
",",
|
||||
"Abakumov'u",
|
||||
"Beria'nın",
|
||||
"enerji",
|
||||
"bakanlıkları",
|
||||
"üzerindeki",
|
||||
"baskınlığına",
|
||||
"karşı",
|
||||
"MGB",
|
||||
"içinde",
|
||||
"kendi",
|
||||
"ağını",
|
||||
"kurmaya",
|
||||
"teşvik",
|
||||
"etmeye",
|
||||
"başlamıştı",
|
||||
".",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Güney Avrupa'daki kazı alanlarının çoğunluğu gibi, bu bulgu M.Ö. 5. yüzyılın başlar",
|
||||
[
|
||||
"Güney",
|
||||
"Avrupa'daki",
|
||||
"kazı",
|
||||
"alanlarının",
|
||||
"çoğunluğu",
|
||||
"gibi",
|
||||
",",
|
||||
"bu",
|
||||
"bulgu",
|
||||
"M.Ö.",
|
||||
"5.",
|
||||
"yüzyılın",
|
||||
"başlar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"Sağlığın bozulması Hitchcock hayatının son yirmi yılında üretimini azalttı.",
|
||||
[
|
||||
"Sağlığın",
|
||||
"bozulması",
|
||||
"Hitchcock",
|
||||
"hayatının",
|
||||
"son",
|
||||
"yirmi",
|
||||
"yılında",
|
||||
"üretimini",
|
||||
"azalttı",
|
||||
".",
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
|
||||
TESTS = (ABBREV_TESTS + URL_TESTS + NUMBER_TESTS + PUNCT_TESTS + GENERAL_TESTS)
|
||||
|
||||
TESTS = ABBREV_TESTS + URL_TESTS + NUMBER_TESTS + PUNCT_TESTS + GENERAL_TESTS
|
||||
|
||||
|
||||
@pytest.mark.parametrize("text,expected_tokens", TESTS)
|
||||
|
@ -149,4 +696,3 @@ def test_tr_tokenizer_handles_allcases(tr_tokenizer, text, expected_tokens):
|
|||
token_list = [token.text for token in tokens if not token.is_space]
|
||||
print(token_list)
|
||||
assert expected_tokens == token_list
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ from spacy.tokens import Doc
|
|||
from spacy.pipeline._parser_internals.nonproj import projectivize
|
||||
from spacy.pipeline._parser_internals.arc_eager import ArcEager
|
||||
from spacy.pipeline.dep_parser import DEFAULT_PARSER_MODEL
|
||||
from spacy.pipeline._parser_internals.stateclass import StateClass
|
||||
|
||||
|
||||
def get_sequence_costs(M, words, heads, deps, transitions):
|
||||
|
@ -59,7 +58,7 @@ def test_oracle_four_words(arc_eager, vocab):
|
|||
["S"],
|
||||
["L-left"],
|
||||
["S"],
|
||||
["D"]
|
||||
["D"],
|
||||
]
|
||||
assert state.is_final()
|
||||
for i, state_costs in enumerate(cost_history):
|
||||
|
@ -268,7 +267,9 @@ def test_oracle_bad_tokenization(vocab, arc_eager):
|
|||
arc_eager.add_action(2, dep) # Left
|
||||
arc_eager.add_action(3, dep) # Right
|
||||
reference = Doc(Vocab(), words=gold_words, deps=gold_deps, heads=gold_heads)
|
||||
predicted = Doc(reference.vocab, words=["[", "catalase", "]", ":", "that", "is", "bad"])
|
||||
predicted = Doc(
|
||||
reference.vocab, words=["[", "catalase", "]", ":", "that", "is", "bad"]
|
||||
)
|
||||
example = Example(predicted=predicted, reference=reference)
|
||||
ae_oracle_actions = arc_eager.get_oracle_sequence(example, _debug=False)
|
||||
ae_oracle_actions = [arc_eager.get_class_name(i) for i in ae_oracle_actions]
|
||||
|
|
|
@ -301,9 +301,7 @@ def test_block_ner():
|
|||
assert [token.ent_type_ for token in doc] == expected_types
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"use_upper", [True, False]
|
||||
)
|
||||
@pytest.mark.parametrize("use_upper", [True, False])
|
||||
def test_overfitting_IO(use_upper):
|
||||
# Simple test to try and quickly overfit the NER component - ensuring the ML models work correctly
|
||||
nlp = English()
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
# coding: utf8
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import pytest
|
||||
import hypothesis
|
||||
import hypothesis.strategies
|
||||
import numpy
|
||||
from spacy.vocab import Vocab
|
||||
from spacy.language import Language
|
||||
from spacy.pipeline import DependencyParser
|
||||
from spacy.pipeline._parser_internals.arc_eager import ArcEager
|
||||
from spacy.tokens import Doc
|
||||
from spacy.pipeline._parser_internals._beam_utils import BeamBatch
|
||||
|
@ -44,7 +40,7 @@ def docs(vocab):
|
|||
words=["Rats", "bite", "things"],
|
||||
heads=[1, 1, 1],
|
||||
deps=["nsubj", "ROOT", "dobj"],
|
||||
sent_starts=[True, False, False]
|
||||
sent_starts=[True, False, False],
|
||||
)
|
||||
]
|
||||
|
||||
|
@ -77,10 +73,12 @@ def batch_size(docs):
|
|||
def beam_width():
|
||||
return 4
|
||||
|
||||
|
||||
@pytest.fixture(params=[0.0, 0.5, 1.0])
|
||||
def beam_density(request):
|
||||
return request.param
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def vector_size():
|
||||
return 6
|
||||
|
@ -100,7 +98,9 @@ def scores(moves, batch_size, beam_width):
|
|||
numpy.random.uniform(-0.1, 0.1, (beam_width, moves.n_moves))
|
||||
for _ in range(batch_size)
|
||||
]
|
||||
), dtype="float32")
|
||||
),
|
||||
dtype="float32",
|
||||
)
|
||||
|
||||
|
||||
def test_create_beam(beam):
|
||||
|
@ -128,8 +128,6 @@ def test_beam_parse(examples, beam_width):
|
|||
parser(doc)
|
||||
|
||||
|
||||
|
||||
|
||||
@hypothesis.given(hyp=hypothesis.strategies.data())
|
||||
def test_beam_density(moves, examples, beam_width, hyp):
|
||||
beam_density = float(hyp.draw(hypothesis.strategies.floats(0.0, 1.0, width=32)))
|
||||
|
|
|
@ -4,14 +4,17 @@ from spacy.tokens.doc import Doc
|
|||
from spacy.vocab import Vocab
|
||||
from spacy.pipeline._parser_internals.stateclass import StateClass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def vocab():
|
||||
return Vocab()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def doc(vocab):
|
||||
return Doc(vocab, words=["a", "b", "c", "d"])
|
||||
|
||||
|
||||
def test_init_state(doc):
|
||||
state = StateClass(doc)
|
||||
assert state.stack == []
|
||||
|
@ -19,6 +22,7 @@ def test_init_state(doc):
|
|||
assert not state.is_final()
|
||||
assert state.buffer_length() == 4
|
||||
|
||||
|
||||
def test_push_pop(doc):
|
||||
state = StateClass(doc)
|
||||
state.push()
|
||||
|
@ -33,6 +37,7 @@ def test_push_pop(doc):
|
|||
assert state.stack == [0]
|
||||
assert 1 not in state.queue
|
||||
|
||||
|
||||
def test_stack_depth(doc):
|
||||
state = StateClass(doc)
|
||||
assert state.stack_depth() == 0
|
||||
|
|
|
@ -161,7 +161,7 @@ def test_attributeruler_score(nlp, pattern_dicts):
|
|||
# "cat" is the only correct lemma
|
||||
assert scores["lemma_acc"] == pytest.approx(0.2)
|
||||
# no morphs are set
|
||||
assert scores["morph_acc"] == None
|
||||
assert scores["morph_acc"] is None
|
||||
|
||||
|
||||
def test_attributeruler_rule_order(nlp):
|
||||
|
|
|
@ -201,13 +201,9 @@ def test_entity_ruler_overlapping_spans(nlp):
|
|||
|
||||
@pytest.mark.parametrize("n_process", [1, 2])
|
||||
def test_entity_ruler_multiprocessing(nlp, n_process):
|
||||
texts = [
|
||||
"I enjoy eating Pizza Hut pizza."
|
||||
]
|
||||
texts = ["I enjoy eating Pizza Hut pizza."]
|
||||
|
||||
patterns = [
|
||||
{"label": "FASTFOOD", "pattern": "Pizza Hut", "id": "1234"}
|
||||
]
|
||||
patterns = [{"label": "FASTFOOD", "pattern": "Pizza Hut", "id": "1234"}]
|
||||
|
||||
ruler = nlp.add_pipe("entity_ruler")
|
||||
ruler.add_patterns(patterns)
|
||||
|
|
|
@ -159,8 +159,12 @@ def test_pipe_class_component_model():
|
|||
"model": {
|
||||
"@architectures": "spacy.TextCatEnsemble.v2",
|
||||
"tok2vec": DEFAULT_TOK2VEC_MODEL,
|
||||
"linear_model": {"@architectures": "spacy.TextCatBOW.v1", "exclusive_classes": False, "ngram_size": 1,
|
||||
"no_output_layer": False},
|
||||
"linear_model": {
|
||||
"@architectures": "spacy.TextCatBOW.v1",
|
||||
"exclusive_classes": False,
|
||||
"ngram_size": 1,
|
||||
"no_output_layer": False,
|
||||
},
|
||||
},
|
||||
"value1": 10,
|
||||
}
|
||||
|
|
|
@ -126,6 +126,7 @@ def test_incomplete_data():
|
|||
assert doc[1].tag_ is "V"
|
||||
assert doc[2].tag_ is "J"
|
||||
|
||||
|
||||
def test_overfitting_IO():
|
||||
# Simple test to try and quickly overfit the tagger - ensuring the ML models work correctly
|
||||
nlp = English()
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import pydantic
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
from spacy.schemas import TokenPattern, TokenPatternSchema
|
||||
|
|
|
@ -207,7 +207,7 @@ def test_create_nlp_from_pretraining_config():
|
|||
config = Config().from_str(pretrain_config_string)
|
||||
pretrain_config = load_config(DEFAULT_CONFIG_PRETRAIN_PATH)
|
||||
filled = config.merge(pretrain_config)
|
||||
resolved = registry.resolve(filled["pretraining"], schema=ConfigSchemaPretrain)
|
||||
registry.resolve(filled["pretraining"], schema=ConfigSchemaPretrain)
|
||||
|
||||
|
||||
def test_create_nlp_from_config_multiple_instances():
|
||||
|
@ -291,7 +291,6 @@ def test_serialize_parser(parser_config_string):
|
|||
assert model.get_ref("lower").get_dim("nI") == 66
|
||||
|
||||
|
||||
|
||||
def test_config_nlp_roundtrip():
|
||||
"""Test that a config prduced by the nlp object passes training config
|
||||
validation."""
|
||||
|
|
|
@ -24,7 +24,7 @@ def parser(en_vocab):
|
|||
"update_with_oracle_cut_size": 100,
|
||||
"beam_width": 1,
|
||||
"beam_update_prob": 1.0,
|
||||
"beam_density": 0.0
|
||||
"beam_density": 0.0,
|
||||
}
|
||||
cfg = {"model": DEFAULT_PARSER_MODEL}
|
||||
model = registry.resolve(cfg, validate=True)["model"]
|
||||
|
@ -41,7 +41,7 @@ def blank_parser(en_vocab):
|
|||
"update_with_oracle_cut_size": 100,
|
||||
"beam_width": 1,
|
||||
"beam_update_prob": 1.0,
|
||||
"beam_density": 0.0
|
||||
"beam_density": 0.0,
|
||||
}
|
||||
cfg = {"model": DEFAULT_PARSER_MODEL}
|
||||
model = registry.resolve(cfg, validate=True)["model"]
|
||||
|
@ -66,7 +66,7 @@ def test_serialize_parser_roundtrip_bytes(en_vocab, Parser):
|
|||
"update_with_oracle_cut_size": 100,
|
||||
"beam_width": 1,
|
||||
"beam_update_prob": 1.0,
|
||||
"beam_density": 0.0
|
||||
"beam_density": 0.0,
|
||||
}
|
||||
cfg = {"model": DEFAULT_PARSER_MODEL}
|
||||
model = registry.resolve(cfg, validate=True)["model"]
|
||||
|
@ -90,7 +90,7 @@ def test_serialize_parser_strings(Parser):
|
|||
"update_with_oracle_cut_size": 100,
|
||||
"beam_width": 1,
|
||||
"beam_update_prob": 1.0,
|
||||
"beam_density": 0.0
|
||||
"beam_density": 0.0,
|
||||
}
|
||||
cfg = {"model": DEFAULT_PARSER_MODEL}
|
||||
model = registry.resolve(cfg, validate=True)["model"]
|
||||
|
@ -112,7 +112,7 @@ def test_serialize_parser_roundtrip_disk(en_vocab, Parser):
|
|||
"update_with_oracle_cut_size": 100,
|
||||
"beam_width": 1,
|
||||
"beam_update_prob": 1.0,
|
||||
"beam_density": 0.0
|
||||
"beam_density": 0.0,
|
||||
}
|
||||
cfg = {"model": DEFAULT_PARSER_MODEL}
|
||||
model = registry.resolve(cfg, validate=True)["model"]
|
||||
|
|
|
@ -83,6 +83,7 @@ def test_PrecomputableAffine(nO=4, nI=5, nF=3, nP=2):
|
|||
def test_prefer_gpu():
|
||||
try:
|
||||
import cupy # noqa: F401
|
||||
|
||||
prefer_gpu()
|
||||
assert isinstance(get_current_ops(), CupyOps)
|
||||
except ImportError:
|
||||
|
@ -92,17 +93,20 @@ def test_prefer_gpu():
|
|||
def test_require_gpu():
|
||||
try:
|
||||
import cupy # noqa: F401
|
||||
|
||||
require_gpu()
|
||||
assert isinstance(get_current_ops(), CupyOps)
|
||||
except ImportError:
|
||||
with pytest.raises(ValueError):
|
||||
require_gpu()
|
||||
|
||||
|
||||
def test_require_cpu():
|
||||
require_cpu()
|
||||
assert isinstance(get_current_ops(), NumpyOps)
|
||||
try:
|
||||
import cupy # noqa: F401
|
||||
|
||||
require_gpu()
|
||||
assert isinstance(get_current_ops(), CupyOps)
|
||||
except ImportError:
|
||||
|
|
|
@ -294,7 +294,7 @@ def test_partial_annotation(en_tokenizer):
|
|||
# cats doesn't have an unset state
|
||||
if key.startswith("cats"):
|
||||
continue
|
||||
assert scores[key] == None
|
||||
assert scores[key] is None
|
||||
|
||||
# partially annotated reference, not overlapping with predicted annotation
|
||||
ref_doc = en_tokenizer("a b c d e")
|
||||
|
@ -306,13 +306,13 @@ def test_partial_annotation(en_tokenizer):
|
|||
example = Example(pred_doc, ref_doc)
|
||||
scorer = Scorer()
|
||||
scores = scorer.score([example])
|
||||
assert scores["token_acc"] == None
|
||||
assert scores["token_acc"] is None
|
||||
assert scores["tag_acc"] == 0.0
|
||||
assert scores["pos_acc"] == 0.0
|
||||
assert scores["morph_acc"] == 0.0
|
||||
assert scores["dep_uas"] == 1.0
|
||||
assert scores["dep_las"] == 0.0
|
||||
assert scores["sents_f"] == None
|
||||
assert scores["sents_f"] is None
|
||||
|
||||
# partially annotated reference, overlapping with predicted annotation
|
||||
ref_doc = en_tokenizer("a b c d e")
|
||||
|
@ -324,13 +324,13 @@ def test_partial_annotation(en_tokenizer):
|
|||
example = Example(pred_doc, ref_doc)
|
||||
scorer = Scorer()
|
||||
scores = scorer.score([example])
|
||||
assert scores["token_acc"] == None
|
||||
assert scores["token_acc"] is None
|
||||
assert scores["tag_acc"] == 1.0
|
||||
assert scores["pos_acc"] == 1.0
|
||||
assert scores["morph_acc"] == 0.0
|
||||
assert scores["dep_uas"] == 1.0
|
||||
assert scores["dep_las"] == 0.0
|
||||
assert scores["sents_f"] == None
|
||||
assert scores["sents_f"] is None
|
||||
|
||||
|
||||
def test_roc_auc_score():
|
||||
|
@ -391,7 +391,7 @@ def test_roc_auc_score():
|
|||
score.score_set(0.25, 0)
|
||||
score.score_set(0.75, 0)
|
||||
with pytest.raises(ValueError):
|
||||
s = score.score
|
||||
_ = score.score # noqa: F841
|
||||
|
||||
y_true = [1, 1]
|
||||
y_score = [0.25, 0.75]
|
||||
|
@ -402,4 +402,4 @@ def test_roc_auc_score():
|
|||
score.score_set(0.25, 1)
|
||||
score.score_set(0.75, 1)
|
||||
with pytest.raises(ValueError):
|
||||
s = score.score
|
||||
_ = score.score # noqa: F841
|
||||
|
|
|
@ -37,9 +37,17 @@ def init_nlp(config: Config, *, use_gpu: int = -1) -> "Language":
|
|||
T = registry.resolve(config["training"], schema=ConfigSchemaTraining)
|
||||
dot_names = [T["train_corpus"], T["dev_corpus"]]
|
||||
if not isinstance(T["train_corpus"], str):
|
||||
raise ConfigValidationError(desc=Errors.E897.format(field="training.train_corpus", type=type(T["train_corpus"])))
|
||||
raise ConfigValidationError(
|
||||
desc=Errors.E897.format(
|
||||
field="training.train_corpus", type=type(T["train_corpus"])
|
||||
)
|
||||
)
|
||||
if not isinstance(T["dev_corpus"], str):
|
||||
raise ConfigValidationError(desc=Errors.E897.format(field="training.dev_corpus", type=type(T["dev_corpus"])))
|
||||
raise ConfigValidationError(
|
||||
desc=Errors.E897.format(
|
||||
field="training.dev_corpus", type=type(T["dev_corpus"])
|
||||
)
|
||||
)
|
||||
train_corpus, dev_corpus = resolve_dot_names(config, dot_names)
|
||||
optimizer = T["optimizer"]
|
||||
# Components that shouldn't be updated during training
|
||||
|
|
|
@ -10,7 +10,7 @@ from wasabi import Printer
|
|||
|
||||
from .example import Example
|
||||
from ..tokens import Doc
|
||||
from ..schemas import ConfigSchemaTraining, ConfigSchemaPretrain
|
||||
from ..schemas import ConfigSchemaPretrain
|
||||
from ..util import registry, load_model_from_config, dot_to_object
|
||||
|
||||
|
||||
|
@ -30,7 +30,6 @@ def pretrain(
|
|||
set_gpu_allocator(allocator)
|
||||
nlp = load_model_from_config(config)
|
||||
_config = nlp.config.interpolate()
|
||||
T = registry.resolve(_config["training"], schema=ConfigSchemaTraining)
|
||||
P = registry.resolve(_config["pretraining"], schema=ConfigSchemaPretrain)
|
||||
corpus = dot_to_object(_config, P["corpus"])
|
||||
corpus = registry.resolve({"corpus": corpus})["corpus"]
|
||||
|
|
|
@ -69,7 +69,7 @@ CONFIG_SECTION_ORDER = ["paths", "variables", "system", "nlp", "components", "co
|
|||
|
||||
logger = logging.getLogger("spacy")
|
||||
logger_stream_handler = logging.StreamHandler()
|
||||
logger_stream_handler.setFormatter(logging.Formatter('%(message)s'))
|
||||
logger_stream_handler.setFormatter(logging.Formatter("%(message)s"))
|
||||
logger.addHandler(logger_stream_handler)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user