[英]Some NLP stuff to do with grammar, tagging, stemming, and word sense disambiguation in Python
[英]NLP: How do I combine stemming and tagging?
我正在嘗試編寫代碼,該代碼傳入已標記化並過濾掉停用詞的文本,然后對其進行詞干和標記。 但是,我不確定應該按什么順序進行詞干和標記。 這就是我現在所擁有的:
#### Stemming
ps = PorterStemmer() # PorterStemmer imported from nltk.stem
stemText = []
for word in swFiltText: # Tagged text w/o stop words
stemText.append(ps.stem(word))
#### POS Tagging
def tagging():
tagTot = []
try:
for i in stemText:
words = nltk.word_tokenize(i) # I need to tokenize again (idk why?)
tagged = nltk.pos_tag(words)
tagTot = tagTot + tagged # Combine tagged words into list
except Exception as e:
print(str(e))
return tagTot
tagText = tagging()
乍一看,這很好用。 但是,因為我先提取詞干,所以pos_tag
經常錯誤地標記單詞。 例如,它把“house”標記為形容詞,而原來的詞實際上是名詞“house”。 但是當我在標記后嘗試詞干時,它給我一個關於pos_tag
如何無法處理“元組”的錯誤 - 我猜這與詞干分析器將單詞列表格式化為[('come', 'VB'), ('hous', 'JJ')
等
我應該使用不同的詞干分析器/標記器嗎? 或者是我的代碼中的錯誤?
提前致謝!
在對其應用詞干提取或詞形還原之前,您應該標記文本。
刪除單詞的結尾會帶走關於單詞的詞性標記的重要線索。
你將hous作為形容詞的原因是任何標注器都需要未處理的標記,而英語中以-ous結尾的詞通常是形容詞( nefarious 、 serious )。 如果您先標記它,它可以被識別(即使沒有上下文)為名詞或動詞。 然后標注器可以使用上下文(前面有? -> 名詞)來消除最有可能的歧義。
一個好的詞形還原器可以考慮詞性,例如housing可以是名詞(詞條: housing )或動詞(詞條: house )。 有了 pos 信息,詞形還原器可以在那里做出正確的選擇。
您是使用詞干提取還是詞形還原取決於您的應用程序。 對於許多目的,它們將是等價的。 與我的經驗的主要區別在於:
我建議使用詞形還原而不是詞干提取,詞干提取只是從末尾切掉字母,直到到達根/詞干詞。 詞形還原還會查看周圍的文本以確定給定單詞的詞性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.