擅长:python、mysql、java
<p>您可以为此类任务定义各种相似性度量。然后你可以去看看哪一个效果最好。以下是一些想法:</p>
<p>1.)正如Max在文章中指出的,您可以计算文档和两个列表之间的Jaccard索引。Jaccard索引定义为两个项目的并集除以的交点:</p>
<pre><code>set1 = set(news_article.split())
set2 = set(phase_1)
jcc = len(set1.intersection(set2)) / len(set1.union(set2))
</code></pre>
<p>jaccard索引越高,文本与列表越相似。然而,Jaccard索引只有在您的新闻文章完全包含您在列表中定义的单词时才起作用。如果文本包含语义相似但与列表中不同的单词,则jaccard索引仍为0,即使其中包含相似的单词</p>
<p>2.)我还建议尝试一种基于移动距离(WMD)的稍微高级的方法。为此,您需要在一些向量空间中表示您的单词(例如,通过word2vec模型获得)。然后,您可以将一篇新闻文章和一个列表表示为该空间中的向量集合。该度量度量度量两个表示的不同程度(移动一个表示以匹配另一个表示的程度)。距离越小,两种表示形式越相似</p>
<p>您可以在新闻文章中训练word2vec模型。我建议使用gensim来训练模型,然后评估单词移动者的距离</p>
<p><a href="https://radimrehurek.com/gensim/auto_examples/tutorials/run_wmd.html" rel="nofollow noreferrer">https://radimrehurek.com/gensim/auto_examples/tutorials/run_wmd.html</a></p>
<p>这不一定能奏效,但我会试试看。根据我的经验,WMD通常比余弦距离更有效,但这当然取决于应用</p>
<p>这两种方法还取决于您事先进行的文本处理。在评估指标/培训word2vec模型之前,确保您的新闻文章采用您期望的格式</p>