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不包括此功能。