您好我想知道如何为这样的任务实施解决方案:
有一份500Mb的普通英文文件。
我想收集有关单词频率的统计数据,
但另外要确保每个单词都被正确识别(或大部分单词)。
在句子中“哭”,“她给了一个响亮的CRY” 被归类为名词,“不要哭”会给统计数字添加动词。
此外,最好过滤正确的名称,以便他们形成另一个字典。
另一项任务将更加困难。我想找到那些词语的出现 经常聚集在一起并建立这样的事件清单。
让我们说,“绿草”,“漂亮女孩”,“小心处理”,“你是对的”。 因此,我们可以准确地说,在语言中经常使用哪些单词序列。我如何开始?是否有开放的Java工具和关于这个问题的好书?
答案 0 :(得分:5)
这些主题的精彩介绍是Foundations of Statistical Natural Language Processing。
Foundations of Statistical Natural Language Processing http://nlp.stanford.edu/fsnlp/fsnlp.gif
在软件方面,您可以查看Stanford Part-Of-Speech Tagger或LingPipe等内容。
答案 1 :(得分:0)
“比较困难”的“其他任务”远比将cry(v)与cry(n)区分开来的原始任务简单得多。您要做的是生成一致性(方便的搜索词)。有这样的工具可以为你做这件事,考虑到英语的流行,我会感到惊讶,如果你找不到一个甚至可以为你处理变形的东西,而不必做任何艰苦的工作。
答案 2 :(得分:0)
你的“其他任务”似乎只是一个马尔可夫链问题。如果你对两个单词的组合感兴趣,你只需要一次读一个单词,创建一个字典(散列,表,等等),其中键是当前和前一个单词,值是计数。
因此,对于输入文本“家就是家”,你得到
nil, home: 1 (ignore this)
home, is: 2
is, where: 1
where, the: 1
the, home: 1
答案 3 :(得分:0)
您可能对Introduction to Linguistic Annotation and Text Analytics感兴趣,这本书非常注重文本注释和文本分析的软件工具。它对自然语言处理理论没有任何关注,但可以作为当前NLP软件工具的良好介绍。
(预先警告说,由于这个焦点,它可能会非常快地过时。如果你可以从图书馆借用它,你可能应该这样做而不是购买它。)