如何为现有语言添加新的引理规则

时间:2019-10-10 16:45:11

标签: spacy

我想为现有语言添加新的lemmatiser规则,即将所有以“ z”结尾的名词都以lemmatise到以“”结尾。

对于单个单词,使用

加载后,spaCy可以给现有语言添加一个tokeniser例外。
nlp.tokenizer.add_special_case("adidas", [{ORTH: 'adidas', LEMMA: 'Adidas', POS: 'NOUN', TAG: 'NNP'}])

以上设置了新单词的引理,pos和标记,并且这没有改变。 默认的英语lemmatiser返回“ adida”作为引理。

现在,我尝试将名词“ wordz”改成“ word”,“ windowz”改成“ window”等,而不将所有情况都设置为例外,而是添加新规则:以“ z”结尾的名词具有引理没有尾随“ z”的名词。

我知道这将取决于标记器的输出,因为_lemma_rules.py中存在的规则取决于pos。

有没有一种方法可以添加规则而无需创建新语言作为仅具有一个修改文件的现有语言的副本?

1 个答案:

答案 0 :(得分:1)

由于我的问题非常具体,我不得不与spaCy开发人员团队进行交流并获得了有效的答案。

实际上,它不适用于英语中的伪造示例,但在使用希腊模型的情况下,它在真实案例中仍然有效,因为希腊词条的词根化主要基于规则。

建议的解决方案是使用Lookups Api,该API仅在2.2版和更高版本中可用。

正如他们所提到的,

nlp.vocab.lookups.get_table("lemma_rules") 

返回可写的类似dict的表。

Full answer in spaCy GitHub