自然语言处理修复组合词

时间:2011-03-15 23:41:28

标签: regex nlp

我有一些由另一个系统生成的文本。它将一些单词组合在一起,我认为是某种文字包装副产品。所以像“狗”这样简单的东西就会组合成“狗”。

我检查了ascii和unicode字符串,看看那里没有一些看不见的字符,但没有。一个令人困惑的问题是,这是医学文本,要检查的语料库不是可用的。所以,真正的例子是'...排除SARS与肺炎的试验'最终成为'......肺炎。'

有人建议找到并分离这些吗?

3 个答案:

答案 0 :(得分:2)

您可能会感兴趣http://www.perlmonks.org/?node_id=336331

您可以使用两个词典,一个只包含医学术语和一个通用英语,可以使用文本的医学性质。

如果你可以找出医学单词,那么在一般字典中运行其余的字符串你应该得到一些不错的结果。

答案 1 :(得分:1)

这是一个相当棘手的问题。

我可能会说组合方法是你最好的选择。

  1. 搜索“拼写错误的单词”
  2. 对于其中的每一个,检查是否存在可以制作它的字典单词的某种组合。由于步骤4,您可以假设一个单词仅由两个单词组成 2.1。如果你得到一个匹配,请与人确认。
  3. 如果没有匹配,请让人说“这是一个你没有的真实词汇”,或“这是更正”
  4. 它几乎是一种高级形式的拼写检查。你可以更多地自动化它,但我不会冒重要的事情。

    或者,您可以在发生休息时查找模式。因此,例如,如果每个应该是空格的第n个字符不是,则可以解决该问题。

答案 2 :(得分:0)

这就是我所做的。我结合了一些想法并使用一般的自举方法提出了一个非常好的解决方案。我使用Python来完成所有这些。

  1. 拿了一份报告样本,对所有单词进行了标记,并创建了一个频率表。
  2. 对于频率为3或以下的频率(频率为4或更高被认为足够正常),我拼写使用PyEnchant包(附魔库)进行检查
  3. 在步骤2中用'拼错'字词构建了一本医学字典,这是临床的。
  4. 对于所有报告,创建了一个频率表
  5. 对于频率低于4的单词,我拼写检查每个使用PyEnchant和我的医学词典
  6. 拿出每个拼写错误的单词并以各种可能的方式将它们分开。测试了分裂以创建2个正确拼写的单词。保持任何成功的分裂
  7. 对于每种可能的解决方案,使用了最高加权解决方案。