我正在寻找以下任务的解决方案。我从英文随机书中随机抽取几页并删除所有非字母字符并将所有字符转换为小写。结果我有类似的东西:
当iwasakidi想要成为飞行员时...
现在我正在寻找的是能够以相当高的准确度逆转该过程的东西。我需要找到单词和句子分隔符。任何想法如何解决这个问题?有没有我可以在不重新发明轮子的情况下使用的现有解决方案?
我正在寻找以下任务的解决方案。我从英文随机书中随机抽取几页并删除所有非字母字符并将所有字符转换为小写。结果我有类似的东西:
当iwasakidi想要成为飞行员时...
现在我正在寻找的是能够以相当高的准确度逆转该过程的东西。我需要找到单词和句子分隔符。任何想法如何解决这个问题?有没有我可以在不重新发明轮子的情况下使用的现有解决方案?
这比普通的标记化更难,因为基本的标记化任务假设有空格。基本上,所有正常的标记化必须弄清楚,例如,标点符号应该是单词的一部分(如“先生”)还是单独的(如句子的末尾)。如果这是您想要的,您可以下载 Stanford CoreNLP 包,它使用基于规则的系统很好地执行此任务。
对于您的任务,您需要弄清楚在哪里放置空格。这个贝叶斯推理教程有一章中文分词(中文写作不使用空格)。相同的技术可以应用于无空格的英语。
基本思想是你有一个语言模型(一个 N-Gram 就可以了),并且你想根据语言模型选择一个最大化数据概率的拆分。因此,例如,根据语言模型,在“when”和“iwasakidiwantedtobeapilot”之间放置一个空格会比在“whe”和“niwasakidiwantedtobeapilot”之间放置一个空格,因为“when”是一个比“whe”更好的词”。你可以这样做很多次,添加和删除空格,直到你弄清楚是什么让你的句子看起来最英文。
这样做会给你一长串令牌。然后,当您想将这些标记拆分为句子时,您实际上可以使用相同的技术,除了使用基于单词的语言模型来帮助您在单词之间添加空格之外,您将使用基于句子的语言模型来拆分该列表标记成单独的句子。同样的想法,只是在不同的层面上。
您描述的任务称为“单词标记化”和“句子分割”。NLP中有很多关于它们的文献。他们有非常简单直接的解决方案,以及基于语言模型的高级概率方法。选择一个取决于您的确切目标。