lemminflect用于英语诱饵和拐点的Python模块。
Lemminflect使用一种词典方法来使英语单词诱惑,并将其转化为用户提供的通用依赖项或Penn Treebank标签指定的形式。该图书馆通过应用神经网络技术来对单词形式进行分类并选择适当的变形规则,以与唱片库(OOV)单词使用。
该系统充当独立模块或Spacy NLP系统的扩展。
词典和形态规则源自NIH的专家词典,其中包含有关英语单词形式的广泛设定信息。
一个更简单的拐点系统可作为pyinflect提供。创建了Lemminflect,以解决该项目的一些缺点并添加功能,例如...
有关最新文档,请参见ReadThedocs 。
Lemminflect和其他几个流行的NLP实用程序的准确性使用自动生成的拐点数据库(AGID)作为基线进行了测试。这不是“黄金”标准数据集,但它具有广泛的引理及其相应的拐点列表,并且似乎是一般的“良好”测试集。每个拐点都通过测试软件进行了诱导,然后将其与语料库的原始值进行了比较。该测试包括119,194个不同的单词。
| Package | Verb | Noun | ADJ/ADV | Overall | Speed |
|-----------------------------------------------------------------------------|
| LemmInflect 0.2.3 | 96.1% | 95.4% | 93.9% | 95.6% | 42.0 uS |
| Stanza 1.5.0 + CoreNLP 4.5.4 | 94.0% | 96.4% | 93.1% | 95.5% | 30.0 us |
| spaCy 3.5.0 | 79.5% | 88.9% | 60.5% | 84.7% | 393.0 uS |
| NLTK 3.8.1 | 53.3% | 52.2% | 53.3% | 52.6% | 12.0 uS |
|-----------------------------------------------------------------------------|
速度以每凸的微秒为单位,是在I9-7940x CPU上进行的。请注意,由于STANZA正在呼叫Java Corenlp软件,因此将所有120K测试用例分组为一个呼叫。对于Spacy,除了Lemmatizer以外,所有管道组件均被禁用。每个引理时间的高度可能反映了管道架构的一般开销。
运行lemminflect的唯一外部要求是numpy ,用于驱动神经网的矩阵数学。这些网相对较小,不需要大量的CPU电源运行。
安装做..
pip3 install lemminflect
该项目是在Python 3和Ubuntu下构建和测试的,但应在任何Linux,Windows,Mac等系统上运行。在Python 2下未经测试,但可能在该环境中起作用最小或没有变化。
代码库还包括库功能和脚本,以创建各种数据文件和神经网。这包括...
这些运行时操作不需要这些。但是,如果您想修改系统,请参见文档以获取更多信息。
为了诱惑一个单词,请使用方法getLemma() 。这是一个单词和通用依赖性标签,并将引理作为可能的拼写列表。词典系统首先使用,如果找不到引理,则采用规则系统。
> from lemminflect import getLemma
getLemma('watches', upos='VERB')
('watch',)
要使单词变化,请使用方法getInflection 。这采用引理和宾夕法尼亚州立树库标签,并返回与该标签相关的特定拐点的元组。与上述相似,首先使用字典,然后在需要时应用拐点规则。
> from lemminflect import getInflection
> getInflection('watch', tag='VBD')
('watched',)
> getInflection('xxwatch', tag='VBD')
('xxwatched',)
该库提供了较低级别的功能,以直接访问字典和OOV规则。有关详细说明,请参见lemmatizer或拐点。
要用作扩展,您需要Spacy 2.0版或更高版本。版本1.9和更早的版本不支持此处使用的扩展方法。
要设置扩展名,请首先导入lemminflect 。这将为每个Spacy Token创建新的lemma和inflect方法。这些方法与上述方法相似,但返回字符串,其中包含最常见的拼写,而不是元组。
> import spacy
> import lemminflect
> nlp = spacy.load('en_core_web_sm')
> doc = nlp('I am testing this example.')
> doc[2]._.lemma()
test
> doc[4]._.inflect('NNS')
examples
如果找到错误,请在GitHub问题列表中报告。但是请注意,在返回正确的拐点时,可能会出现许多不同类型的问题。其中一些不容易解决。发动形式的问题包括...
一个常见的问题是,某些形式的动词“ be”并未由treekbank标签完全指定。例如,be/vbd向“或“”为“”或“ be/vbp”向“ am”或“ as”。为了消除这些形式,需要检查句子中的其他单词。目前,Lemminflect不包括此功能。