2011-03-15 66 views
6

我有一些由其他系統生成的文本。它把一些詞彙結合在一起,我認爲它是某種wordwrap副產品。所以像'狗'這樣簡單的東西就會結合成'狗'。組合單詞的自然語言處理修復程序

我檢查了ascii和unicode字符串,看看有沒有一些看不見的字符,但沒有。一個混淆的問題是,這是醫學文本和檢查對象的語料庫不可用。所以,真正的例子是'...測試排除SARS與肺炎'最終成爲'...對肺炎'。

任何人都有建議找到並分離這些?

+0

這是OCR的文字嗎? – tchrist 2011-03-21 20:29:22

回答

0

這是我做的。我結合了一些想法,並使用一種通用的引導方法提出了一個很好的解決方案。我爲這一切使用了Python。

  1. 接受了一個報告樣本,標記了所有單詞並創建了一個頻率表。
  2. 對於頻率爲3或以下(頻率等於或大於4的頻率被認爲是足夠正確的),我使用PyEnchant包(附魔庫)檢查了它們
  3. 構建了來自'拼錯'在第2步中,這些詞是臨牀的。
  4. 所有報表,創建下4與高頻詞的頻率表
  5. ,我拼寫檢查每一個使用PyEnchant和我的醫學詞典
  6. 接過每個拼錯的單詞,並將它們在所有可能的方式分割。分裂測試是爲了創建2個拼寫正確的單詞。保持任何成功的拆分
  7. 對於每個潛在的解決方案,使用最高加權解決方案。
1

這是一個相當棘手的問題。

我可能會說一個組合方法是你最好的選擇。

  1. 搜索「拼寫錯誤的單詞」
  2. 對於這些每個人,檢查,看看是否有字典單詞它可以使某種組合。您可以假定一個詞只由兩個詞組成,因爲步驟4 2.1。如果你得到一個匹配,與人類確認。
  3. 如果沒有匹配,請人說:「這是你沒有一個真正的單詞」,或「這是修正」

它會幾乎是一種高級形式拼寫檢查。你可以更自動化它,但我不會冒險那些重要的事情。

或者,您可以查找發生斷裂時的模式。因此,例如,如果應該是空格的每個第n個字符都不是,那麼可以修復它。

2

這可能是你的興趣http://www.perlmonks.org/?node_id=336331

您可以通過使用兩本字典,一個只含有醫療術語和一般英語中的一個可能使用的文字,你的優勢的醫療性質。

如果你可以隔離出醫療單詞,然後對通用字典運行字符串的其餘部分,你應該得到一些體面的結果。