2016-01-20 57 views
5

我正在做一些NLP,當我發現患者被診斷爲多發性硬化症時。有沒有辦法告訴NLTK某個單詞不是專有名詞,而是名詞?

我想用nltk來告訴我,一個句子的名詞是多發性硬化症。問題是,醫生經常將多發性硬化症稱爲MS,它們被認爲是專有名詞。

例如,這句話,「他的MS在1999年被診斷出來。」被標記爲:[('His', 'PRP$'), ('MS', 'NNP'), ('was', 'VBD'), ('diagnosed', 'VBN'), ('in', 'IN'), ('1999', 'CD'), ('.', '.')]

MS應該是一個名詞。有什麼建議麼?

+1

命名實體識別是一個難題。嘗試[this](http://textminingonline.com/how-to-use-stanford-named-entity-recognizer-ner-in-python-nltk-and-other-programming-languages)。 –

+0

您目前使用默認的POS標記。所以在這種情況下,您需要使用正確的POS標記值來訓練您自己的語料庫。如果不是作爲回退機制,則在使用默認語料庫POS Tagger模型後應該有另一個錯誤糾正層。 – Renien

+0

數據的來源是什麼?是否有可能分享?是否有你希望他們總是名詞的單詞/短語/縮寫列表?你有數據標籤嗎?數據的領域是什麼?什麼是POS標籤的最終目的?回答這些問題將縮小解決您的問題的範圍。 – alvas

回答

0

總結起來,有以下選項:

  1. 正在修復處理後的標籤 - 有點難看,但方便快捷。
  2. 僱用一個外部姓名實體識別器(Stanford NER,@Bob Dylan已經深思熟慮) - 這一個更加涉及,特別是因爲斯坦福NER在java中並不是特別快。
  3. 重新訓練一個POS標註器在特定領域的數據(你有一個足夠大的註解數據集來使用它嗎?)
  4. 使用WSD(詞義消)方法 - 一開始,你需要有一個很好的域名詞典使用。
相關問題