我的目标是输入一组短语,如
array = ["Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.","At vero eos et accusam et justo duo dolores et ea rebum.","Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."]
给它一个新的短语,比如
^{pr2}$我想让它告诉我这是否是前面提到的array
中的一部分。在
我发现了如何检测单词的频率,但是我如何找到unsimilarity
?毕竟,我的目标是找到不寻常的短语,而不是某些单词的频率。在
你可以用Gensim Phrase (collocation) detection来查找句子中的常用短语
但是如果你想检测不寻常的短语,你可以用正则表达式来描述一些词性组合模式,并在输入句子上做词性标记,你就能提取出与你的模式相匹配的不可见词(短语)。在
为此,您可以构建一个简单的“语言模型”。它将估计一个短语的概率,并将平均每词概率较低的短语标记为异常。在
对于词的概率估计,它可以使用平滑的字数。在
模型的外观如下:
你可以训练这个模型并把它应用到不同的句子中。在
^{pr2}$哪一个印在你身上
你可以看到第一个短语的“不寻常”比第二个短语高,因为第二个短语是由训练词组成的。在
如果你的“常用”短语的语料库足够大,你可以从我使用的1-gram模型切换到N-gram(对于英语,sensible N是2或3)。或者,你可以使用前一个词的循环概率来预测所有的条件神经网络。但这需要一个非常庞大的训练语料库。在
如果你使用一种高度灵活的语言,比如土耳其语,你可以使用字符级N-grams来代替单词级模型,或者只是使用NLTK中的lemmatization算法对文本进行预处理。在
相关问题 更多 >
编程相关推荐