python - Python Spacy 的 Lemmatizer:以最高效率获取所有引理选项
问题描述
使用 spacy 时,令牌 (lemma_) 的引理取决于 POS。因此,一个特定的字符串可以有多个引理。例如:
import spacy
nlp = spacy.load('en')
for tok in nlp(u'He leaves early'):
if tok.text == 'leaves':
print (tok, tok.lemma_)
for tok in nlp(u'These are green leaves'):
if tok.text == 'leaves':
print (tok, tok.lemma_)
将产生“叶子”的引理可以是“离开”或“叶子”,具体取决于上下文。我感兴趣的是:
1) 无论上下文如何,获取特定字符串的所有可能引理。这意味着,在不依赖 POS 或异常的情况下应用 Lemmatizer,只需获得所有可行的选项。
此外,但独立地,我还想应用标记化并获得“正确”的引理。
2) 尽可能高效地在大型语料库中运行仅标记化和词形还原器,而不会损坏词形还原器。例如,我知道我可以删除“ner”管道,并且不应该删除“标记器”,但没有收到关于解析器等的直接答案。从对语料库的模拟来看,结果似乎是相同的,但我认为'parser'或'sentenzicer'应该影响?我目前的代码是:
import multiprocessing
our_num_threads = multiprocessing.cpu_count()
corpus = [u'this is a text', u'this is another text'] ## just an example
nlp = spacy.load('en', disable = ['ner', 'textcat', 'similarity', 'merge_noun_chunks', 'merge_entities', 'tensorizer', 'parser', 'sbd', 'sentencizer'])
nlp.pipe(corpus, n_threads = our_num_threads)
如果我对 1+2 有一个好的答案,那么我可以根据我的需要使用“词形还原”的词,考虑其他可能的变体。
谢谢!
解决方案
推荐阅读
- javascript - 如何在不影响父节点的情况下对叶节点进行更改
- html - 为什么 TD 中的 IFRAME 会导致底部间距过大?
- json - http-outgoing:关闭连接
- go - 如何在网页抓取中模拟按钮按下?
- visual-studio-code - 如何在 VS Code 中编辑 crontab?
- python - 当我点击 QpushButton 时,没有变化?
- javascript - 如何在angular8中拦截脚本和链接标签的src和Href
- php - MOODLE:异常 - 找不到类
- python - 无法在 python 中使用 post 请求登录网站
- office-js - Office.js 是否具有下标或上标文本框的能力?