将字符串分为单词和句子(仅英文)

时间:2012-08-19 13:31:53

标签: text nlp artificial-intelligence

我正在寻找以下任务的解决方案。我从英文随机书中随机抽取几页并删除所有非字母字符并将所有字符转换为小写字母。结果我有类似的东西:

  

... wheniwasakidiwantedtobeapilot

现在我正在寻找的东西能够以非常好的准确度扭转这个过程。我需要找到单词和句子分隔符。任何想法如何处理这个问题?我是否可以在不重新发明轮子的情况下找到解决方案?

2 个答案:

答案 0 :(得分:4)

这比正常的标记化更难,因为基本标记化任务假定空格。基本上,正常的标记化必须弄清楚的是,例如,标点符号应该是单词的一部分(如“先生”)还是单独的(如句子末尾)。如果这是你想要的,你可以下载Stanford CoreNLP软件包,它可以很好地完成基于规则的系统。

对于您的任务,您需要找出放置在空间中的位置。关于贝叶斯推理的这个tutorial有一章关于中文分词(中文写作不使用空格)。同样的技术可以应用于无空间的英语。

基本思想是你有一个语言模型(N-Gram就可以了),你想选择一个根据语言模型最大化数据概率的分裂。因此,例如,在“when”和“iwasakidiwantedtobeapilot”之间放置一个空格会根据语言模型给出一个更高的概率,而不是在“whe”和“niwasakidiwantedtobeapilot”之间放置一个分区,因为“when”是一个比“whe”更好的单词”。你可以多次这样做,添加和删除空格,直到你弄清楚是什么给了你最英文的句子。

执行此操作会为您提供一长串令牌。然后,当你想将这些标记分成句子时,你可以实际使用相同的技术,除了使用基于单词的语言模型来帮助你在单词之间添加空格,你将使用基于句子的语言模型来分割该列表将标记分成单独的句子。同样的想法,只是在不同的层面。

答案 1 :(得分:0)

您描述的任务称为“words tokenization”和“句子分段”。在NLP中有很多关于它们的文献。它们具有非常简单直接的解决方案,以及基于语言模型的高级概率方法。选择一个取决于你的确切目标。