验证句子的正确性,最好使用自定义语料库

时间:2016-11-19 20:16:45

标签: nlp

目标

我的目标是创建一个可以验证句子语法正确程度的API。我正在使用马尔可夫链生成一堆线条,我想根据它们的含义对它们进行排名。

我希望能够提供一些输入:

[ 
  "This sentence is totally great!",
  "Not great so sentence this one.",
  "From on in where is are for pig."
]

然后得到一些输出:

[
    0.71,
    0.30,
    -0.43,
]

我目前在哪里

我已经看过使用斯坦福分析器,但我认为没有办法使用你自己的语料库。

目前,我正在使用微软联合概率认知服务,它也不允许使用自定义语料库,而且看起来很不成熟。

直接提问

这是一个解决的问题吗?

这种问题/研究叫什么? (所以我知道如何谷歌四处寻找它)

有什么方法可以完成这样的事情?

2 个答案:

答案 0 :(得分:0)

我不知道为什么你无法使用自己的语料库和stanford解析器,但你总是可以使用OpenNLP

这就是我要做的事情:

  1. 用一些正确的句子创建一个解析过的句子语料库。我可以在这里停下来做你正在做的事情。或者我会做2。

  2. 创建一个word2vec模型,看看解析后的输入句子有多接近(余弦相似度)。希望你会得到很好的结果。

  3. 您可以快速启动here以使用OpenNLP。

    希望这有帮助!

答案 1 :(得分:0)

解决您需求的最简单方法是从语料库中创建一个语言模型,然后针对它评估您的测试句子,这将为您提供某种分数。您可以查看结果,看看是否需要更复杂的方法。

我会从一个字符语言模型开始,对于10k左右的句子大概可达6克,如果你有大量数据则更长,更短,更少。你将不得不玩它。您还可以在2-4令牌范围内尝试令牌语言模型。 LingPipe的教程是here。 不完全是你的用例,但它最不具体。

很容易构建并对语料库敏感。

您可以尝试将问题视为拼写检查问题而不是拼写纠正,而是使用支持语言模型进行语法修正,通知编辑是否有改进的内容。获得良好估计所需的更多编辑将转化为原始语法的较低分数。最接近的代码是我们的教程here

但是需要进行大量修改才能应用于语法用例。

如果语言模型方法不起作用,有许多方法可以解决您的问题,但我会从那里开始。

Breck的