Spacy:词汇中的单词 [英] spaCy: Word in vocabulary

查看:10
本文介绍了Spacy:词汇中的单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试用空格纠正打字错误,为此,我需要知道单词中是否存在单词。如果没有,这个想法是把这个词一分为二,直到所有的片段都存在。例如,"of the"不存在,"of"和"the"则不存在。因此,我首先需要知道单词中是否存在某个单词。这就是问题的起点。我尝试:

for token in nlp("apple"):
    print(token.lemma_, token.lemma, token.is_oov, "apple" in nlp.vocab)
apple 8566208034543834098 True True

for token in nlp("andshy"):
    print(token.lemma_, token.lemma, token.is_oov, "andshy" in nlp.vocab)
andshy 4682930577439079723 True True
很明显,这没有任何意义,在这两种情况下,"is_OOV"都是True,而且它在词汇表中。我在找一些简单的东西,比如

"andshy" in nlp.vocab = False, "andshy".is_oov = True
"apple" in nlp.vocab = True, "apple".is_oov = False

并在下一步中,还介绍了一些文字纠正的方法。我可以使用拼写检查库,但这与拼写单词不一致

这个问题似乎是一个常见的问题,欢迎提出任何建议(代码)。

谢谢,

Ahe

推荐答案

简明答案:Spacy的模型不包含任何适合进行拼写更正的单词列表。

更长的答案:

Spacy的vocab不是特定语言中的固定单词列表。它只是一个缓存,其中包含在训练和处理过程中看到的有关单词的词汇信息。检查标记是否在nlp.vocab中只检查标记是否在此缓存中,因此它不是拼写更正的有用检查。

Token.is_oov有一个更具体的含义,这在文档中的简短描述中并不明显:它报告模型是否像Token.prob那样包含关于该标记的一些附加词汇信息。对于像en_core_web_sm这样不包含任何概率的小型空间模型,默认情况下,对于所有令牌,is_oov将是Truemdlg模型包含有关1M+标记的词汇信息,单词向量包含600K+标记,但这些列表太大且噪声太大,不适用于拼写更正。

这篇关于Spacy:词汇中的单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆