【问题标题】:Dividing string of characters to words and sentences (English only)将字符串分割成单词和句子(仅限英文)
【发布时间】:2012-08-19 13:31:53
【问题描述】:

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

当iwasakidi想要成为飞行员时......

现在我正在寻找能够以相当高的准确度逆转该过程的东西。我需要找到单词和句子分隔符。任何想法如何解决这个问题?有没有我可以在不重新发明轮子的情况下使用的现有解决方案?

【问题讨论】:

  • 为什么要删除空格等非字母字符?如果这是您在 OCR 之后进行的某种后处理,那么这些空格是您可以使用的非常有用的提示。
  • 在我工作的实际解决方案中,我有非空格文本作为输入。问题只是一个示例,如何实现类似于我们输入的内容。

标签: text nlp artificial-intelligence


【解决方案1】:

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

对于您的任务,您需要弄清楚在哪里放置空格。这个贝叶斯推理的tutorial有中文分词的章节(中文写作不使用空格)。相同的技术可以应用于无空格的英语。

基本思想是你有一个语言模型(一个 N-Gram 就可以了),并且你想根据语言模型选择一个最大化数据概率的拆分。因此,例如,根据语言模型,在“when”和“iwasakidiwantedtobeapilot”之间放置一个空格会比在“whe”和“niwasakidiwantedtobeapilot”之间放置一个空格,因为“when”是一个比“whe”更好的词”。您可以多次执行此操作,添加和删除空格,直到找出最符合英语的句子。

这样做会给你一个很长的令牌列表。然后,当您想将这些标记拆分为句子时,您实际上可以使用相同的技术,除了使用基于单词的语言模型来帮助您在单词之间添加空格之外,您将使用基于句子的语言模型来拆分该列表标记成单独的句子。相同的想法,只是在不同的层次上。

【讨论】:

  • 总结很有趣,以及如何处理句子标记化......记住 - 我在文本中没有点!
  • @Pawel,见新的最后一段。
【解决方案2】:

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

【讨论】:

  • 目标很简单,每个单词和句子的起点。我知道有很多关于这方面的文献,但你能建议一些已经实施的东西吗?我可以检查它是否合适,而无需在我自己实施论文中的内容的情况下获得博士学位
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多