2011-03-15 67 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

您可以通过使用两本字典,一个只含有医疗术语和一般英语中的一个可能使用的文字,你的优势的医疗性质。

如果你可以隔离出医疗单词,然后对通用字典运行字符串的其余部分,你应该得到一些体面的结果。