Python 处理缩略语的一般解决方案 问题

Python 处理缩略语的一般解决方案 问题,python,nltk,Python,Nltk,给定输入句子: 你好,安德森先生。 默认的句子标记器(punkt和nltk示例pickle)将其转换为: 第一句:你好,先生 第二句:Anderson 当它真的应该保持原样的时候 为什么现有的解决方案如此难以找到? 有没有一个通用的解决方案?这似乎是一个常见的问题,nltk python教程中甚至提到了这一点 句子切分很困难,因为句点用于标记缩写,有些句点同时标记缩写和终止句子,就像美国等首字母缩略词经常出现的情况一样。 然而,我看到的所有解决方案要么基于手动输入缩写,例如;或者训练一个新的pi

给定输入句子:
你好,安德森先生。

默认的句子标记器(punkt和nltk示例pickle)将其转换为:
第一句:
你好,先生

第二句:
Anderson

当它真的应该保持原样的时候

为什么现有的解决方案如此难以找到? 有没有一个通用的解决方案?这似乎是一个常见的问题,nltk python教程中甚至提到了这一点

句子切分很困难,因为句点用于标记缩写,有些句点同时标记缩写和终止句子,就像美国等首字母缩略词经常出现的情况一样。

然而,我看到的所有解决方案要么基于手动输入缩写,例如;或者训练一个新的pickle——因为我的搜索不会出现其他人训练过的搜索(句子边界消歧的第一条规则…)

手动创建英文缩写列表是一项艰巨的任务;我还没有在nltk中找到任何关于这样一个列表的清晰文档


我当前的方法:我正在尝试编写一个webscraper使用列表。我讨厌它。这个列表还远远不够完整,我最希望的就是扩展webscraper来合并几个这样的列表。然后我将使用这个列表来形成假设的缩写扩展,看看它们是否有意义。。。我在跟谁开玩笑?我可能会回去睡觉

你可以采取一种反动的、排他性的策略:任何至少是两个字母且不是合法单词,后跟句点的词都必须是缩写。您的文本语料库允许这样做吗?缺点是拼写错误、其他拼写错误、无偿使用SMS、俚语或其他未“正式”承认的词语,以及缩写词也是合法词语的情况(如“Ed.note”)


如果你想要一个全面的解决方案。。。那么,机器学习模型在您的应用程序中有用吗?给它举个例子,让它知道“period attire”中的哪些项目[不是]缩写,并将其纳入你选择的句子切分器。

你在猜测一个著名轮子的重新发明。
punkt
tokenizer(nltk附带)使用无监督学习算法来检测句子边界,有监督的方法非常简单。“任何至少是两个字母而不是一个合法单词,后跟句号的,都必须是缩写”,除了你提到的缺点,
Anderson
你好,Anderson先生。
以上不是一个缩写。这是
nltk
标签中的一个常见问题:“我有一个通用统计工具,但它会出错。包括一些对我来说显而易见的情况。我应该怎么做?”回答:首先评估(衡量)你拥有的工具。这真的是个问题吗?不要因为一次可笑的失败而拖延。如果性能低得让人无法接受:选择一个更好的工具(不总是可能的),构建或训练一个更好的工具(硬的),或者对你所拥有的工具的结果进行预处理或后处理。再次,通过评估结果的性能进行选择。