【问题标题】:Adding new language to spaCy: lemma lookup problem向 spaCy 添加新语言:引理查找问题
【发布时间】:2020-11-10 06:02:18
【问题描述】:

我正在为古希腊语 (grc) 编写一个新的 spacy 语言类,它在标记器级别工作,但无法在我从语料库构建的字典中进行引理查找。当我在 spacy_lookups_data 的相应目录中使用 python -m pytest spacy_lookups_data 并使用我编写的测试文件运行查找表的测试时,出现以下错误:

grc_nlp = , string = 'μοι', lemma = 'ἐγώ'

@pytest.mark.parametrize(
    "string,lemma",
    [
        ("ἄνδρα", " ἀνήρ"),
        ("μοι", " ἐγώ"),
        ("πολύτροπον", "πολύτροπονος"),
        ("ὃς", "ὃς"),
        ("πολλὰ", "πολύς"),
        ("Τροίης", "Τροία"),
    ],
)
def test_grc_lemmatizer_lookup_assigns(grc_nlp, string, lemma):
    tokens = grc_nlp(string)
  assert tokens[0].lemma_ == lemma

E AssertionError: assert 'μοι' == 'ἐγώ' E - ἐγώ E + μοι

test_grc.py:26: AssertionError _ test_grc_lemmatizer_lookup_assigns [\ u03c0 \ u03bf \ u03bb \ u03cd \ u03c4 \ u03c1 \ u03bf \ u03c0 \ u03bf \ u03bd- \ u03c0 \ u03bf \ u03bb \ u03cd \ u03c4 \ u03c1 \ u03bf \ u03c0 \ u03bf \ u03bd \ u03bf \ u03c2] _

我在测试文件中写入的所有 5 个引理都出现了类似的错误。这可能是与 unicode 有关的错误吗?也许空间字符定义中缺少希腊多调字符?我怀疑这是因为古代使用的变音符号可能不被 spacy 支持。或者这个错误是否指向我的引理表的问题?

谢谢。

雅各布

【问题讨论】:

    标签: spacy


    【解决方案1】:

    这可能不是 unicode 问题。您是否在setup.cfgspacy_lookups_data/__init__.py 中添加了入口点并重新安装了spacy-lookups-data 包?

    【讨论】:

    • 我确实在两个文件中添加了入口点。那么这可能是引理文件的问题吗?我注意到我的 json 文件没有验证,因为它有很多“重复”,实际上是同音异义词。但我看到其他引理文件没有这个问题。如果这是一个问题,我该如何处理同音异义词?
    • 查找表非常简单。每个标记只能有一个引理,因此如果一个标记不明确,您必须选择一个引理来提供。如果您想要更复杂的东西,您需要使用基于规则的词形还原器或您自己的自定义词形还原器。检查您的表是否是有效的 JSON(您可以使用 srsly.read_json() 加载文件)并为包重新运行 pip install .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多