处理缩写的一般解决方案

时间:2016-06-27 20:58:57

标签: python nltk

问题?

给出输入句子:
Hello, Mr. Anderson.

默认的句子标记器(punkt和nltk样本pickle)将其转换为:
句子1:Hello, Mr
句子2:Anderson

什么时候应该保持原样。

为什么现有的解决方案很难找到?

这是否有一般解决方案?这似乎是一个常见的问题,因为它甚至在nltk python教程书中提到过。

Sentence segmentation is difficult because period is used to mark abbreviations, and some periods simultaneously mark an abbreviation and terminate a sentence, as often happens with acronyms like U.S.A.

然而,我所见过的所有解决方案都是基于手动输入缩写,例如this one;或者训练一个新的泡菜 - 因为我的搜索不会出现其他人训练过的(句子边界消歧的第一条规则......)。

手动建立英文缩写列表是一项艰巨的任务;而且我还没有在nltk中找到任何关于此类列表的明确文档。

我目前的方法:我正在尝试编写一个网络浏览器来使用this列表。我讨厌它。这个列表远非完整,我真正希望的最好是扩展webscraper以组合几个这样的列表。然后,我将使用该列表形成假设的缩写扩展,看看它们是否有意义......我在开什么玩笑?我可能会回去睡觉。

1 个答案:

答案 0 :(得分:1)

你可以采取反动的,排他性的方式:任何至少两个字母而不是合法的词,然后是句号,必须是缩写。你的文本语料库会允许吗?缺点是错别字,其他拼写错误,无偿使用短信,俚语或其他不正式的#34;被认可的,以及缩写也是合法词的情况(例如" Ed.note")。

如果您想要一个全面的解决方案......那么,机器学习模型在您的应用程序中是否有用?喂它的例子,让它了解"期间服装" [是|不是缩写,并将其合并到您选择的句子切片器中。