簡體   English   中英

NLTK pos tagger 可以正確識別收縮嗎?

[英]Can NLTK pos tagger recognize contractions correctly?

我想知道在將給定文本發送到 NLTK 的 pos 標記器之前是否需要編寫一個去收縮 function。 我不願意對單詞進行標記,因為它們最終可能會像 (don't='do',"'nt") 一樣,我懷疑這會使 pos 標記更加困難。

簡而言之,我的問題是:nltk 的 pos 標記器是否識別大多數收縮(根據我有限的經驗,它似乎在沒有詞標記化的情況下工作得很好)? 單詞標記化(相對於簡單的單詞拆分)會改善還是削弱這個過程? 我寫一個去收縮 function 會更容易嗎? 是否有其他識別收縮的 pos 標記器?

" example_text="我不能也不會去公園,因為我不喜歡草。

我目前遇到了類似的問題,並且我想在所有事情上都使用 nltk(因為我打算用它來掌握同義詞集),我發現 Spacy 在處理收縮時更加健壯。

安裝:

pip install spacy

python -m spacy download en_core_web_sm (或en_core_web_mden_core_web_lg

例子:

import spacy
nlp = spacy.load('en_core_web_md')

sent = "I didn't believe it"
tokens_pos = nlp(sent)
for token in tokens_pos:
    print(token.lemma_ + ' ' + token.pos_)

Output:

I PRON
do AUX
not PART
believe VERB
it PRON

如您所見,它同時進行詞形還原和標記,這需要使用 NLTK 單獨完成。

Spacy 甚至可以使用通常拼寫錯誤/懶惰的 forms 的收縮,例如沒有撇號的cantdont 在處理之前使用正則表達式確保您的句子是干凈的。

當然,沒有什么是 100% 完美的。 在我的 output 中,我實際上注意到我有一些標記為SPACE的流氓令牌,我認為這可能是原始文本中雙空格的結果。 它似乎在每個空格處將字符串拆分為標記,將相鄰空格視為其自身權利的一部分,因此您可能需要添加一些功能來過濾掉它們。

我在實驗中注意到的另一件事(實際上我可能會就此發表一篇文章),是撇號的處理方式。

在我的原始文本中,一些縮略詞有一個 6 或 9 形的撇號''通常出現在引號的開頭和結尾,而不是標准的垂直' ,並且 Spacy 的處理方式不同,因此您可能還想確保在您進行任何 NLPing 之前,這些會被替換。

我想知道在將給定文本發送到 NLTK 的 pos 標記器之前是否需要編寫一個去收縮 function。

你不。 默認 nltk 標記器使用通過默認 nltk 標記化標記化的文本進行訓練,並且可以正確處理以相同方式標記化的文本。 其他任何東西都將是 nltk 中的錯誤。 因此,如果您更改標記器,您將使性能更差,而不是更好。

如果您嘗試自己的示例,您會發現它正確地將“ca”和“wo”標記為 MD(情態動詞),即使英語中沒有這樣的詞; 我不是特別喜歡它(為什么不將“不能”標記為“不能”?),但標注者當然知道如何處理它。

>>> nltk.pos_tag(nltk.word_tokenize(example_text))
[('I', 'PRP'), ('ca', 'MD'), ("n't", 'RB'), ('and', 'CC'), ('I', 'PRP'),
 ('wo', 'MD'), ("n't", 'RB'), ('go', 'VB'), ('to', 'TO'), ('the', 'DT'),
 ('park', 'NN'), ('because', 'IN'), ('I', 'PRP'), ('do', 'VBP'), ("n't", 'RB'), 
('like', 'VB'), ('grass', 'NN'), ('.', '.')]

標注器會出錯嗎? 確實。 沒有標簽是完美的。 但是如果你想要更好的性能,你需要找到或訓練一個更好的標注器。 您無法“改進”標記器旨在使用的單詞標記器。

PS。 您應該一次只將一個(標記化的)句子傳遞給標記器。 如果您將整個文件作為單詞列表傳遞,您確實會不必要地損失性能。 你應該這樣做:

sents = [ nltk.word_tokenize(s) for s in nltk.sent_tokenize(long_text) ]
nltk.pos_tag_sents(sents)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM