0

您好我想知道如何实现此类任务的解决方案:

有一个 500Mb 的纯英文文本文件。

我想收集有关单词频率的统计数据,但另外要确保正确识别每个单词(或大多数单词)。

用“她大声哭泣”句子中的“哭泣”而言,将被归类为名词,而“不要哭泣”将给统计数据提供动词。

此外,最好过滤专有名称,以便它们形成另一个字典。

另一个任务会更困难。我想找到经常出现的单词并建立此类出现的列表。

比方说,“绿草”、“美女”、“小心处理”、“你说得对”。这样我们就可以准确地说出语言中经常一起使用的词序列。

我将如何开始?是否有关于该主题的开放 Java 工具和好书?

4

4 回答 4

5

这些主题的一个很好的介绍是统计自然语言处理的基础

统计自然语言处理的基础

在软件方面,您可以查看诸如斯坦福词性标注器或LingPipe之类的东西。

于 2010-02-05T09:45:31.350 回答
0

您的“其他任务”似乎只是马尔可夫链问题。如果您对两个单词的组合感兴趣,您只需要一次读取一个单词,创建一个字典(散列、表等),其中键是当前单词和上一个单词,值是计数.

所以对于输入文本“家就是家”,你会得到

nil, home: 1   (ignore this)
home, is: 2
is, where: 1
where, the: 1
the, home: 1
于 2010-02-05T15:03:49.057 回答
0

您的“将更困难”的“其他任务”比区分 cry(v) 和 cry(n) 的原始任务要简单得多。你想要做的是生成一个索引(方便的搜索词)。确实存在为您执行此操作的工具,鉴于英语的流行,如果您找不到一个甚至可以为您处理变形的工具,而您不必做任何艰苦的工作,我会感到惊讶。

于 2010-02-05T09:47:07.090 回答
0

您可能会对Introduction to Linguistic Annotation and Text Analytics感兴趣,这本书非常关注用于文本注释和文本分析的软件工具。它不关注自然语言处理理论,但可以很好地介绍当前的 NLP 软件工具。

(请注意,由于这个重点,它可能很快就会过时。如果你可以从图书馆借到它,你可能应该这样做而不是购买它。)

于 2010-02-09T19:22:28.063 回答