0

我编写了一个小型 C# 程序,将一堆单词编译成一行文本,我想使用 NLP 只是为了给我一个百分比的可能性,即一堆单词是一个句子。我不需要令牌或标记,如果需要,所有这些都可以在后台完成。我在我的项目中引用了 OpenNLP 和 SharpEntropy,但我遇到了一个错误“数组尺寸超出了支持的范围”。使用这些时,所以我也尝试使用 IKVM 创建的 OpenNLP 没有锐熵,但是没有文档,我似乎无法围绕正确的步骤来仅获得百分比概率。

任何帮助或方向将不胜感激。

4

1 回答 1

0

我将推荐 2 个相对简单的测量方法,可以帮助您将单词序列分类为句子/非句子。不幸的是,我也不知道 SharpNLP 的处理效果如何。Java、Python 和 C++ 中存在更完整的工具包(LingPipe、Stanford CoreNLP、GATE、NLTK、OpenGRM,...)

语言模型概率:在句子的开头/结尾使用开始和停止标记训练句子的语言模型。根据该语言模型计算目标序列的概率。语法和/或语义敏感的词序列将比随机词序列得分高得多。这种方法应该适用于标准的 n-gram 模型、判别性条件概率模型或几乎任何其他语言建模方法。但绝对要从基本的 n-gram 模型开始。

解析树概率:类似地,您可以测量恢复的选区结构的内部概率(例如,通过概率上下文无关语法解析)。更多的语法序列(即更可能是一个完整的句子)将反映在更高的内部概率中。如果按序列长度进行归一化,您可能会得到更好的结果(这也可能适用于语言建模方法)。

我在推文上看到了初步(但未发表)的结果,这似乎表明标准化概率的双峰分布 - 被人类注释者判断为更符合语法的推文通常落在较高的峰值内,而那些被判断为语法较少的推文则聚集在较低的峰值内. 但我不知道这些结果在更大或更正式的研究中能保持多好。

于 2014-04-15T18:26:51.777 回答