gpt4 book ai didi

ruby - 在 Ruby 中使用 LSA 转换从一组文档中发现同义词

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:50 24 4
gpt4 key购买 nike

将 LSA 转换应用于文档数组后,如何使用它来生成同义词?例如,我有以下示例文档:

D1 = 动员
D2 = 反光路面
D3 = 交通维护
D4 = 特殊绕行
D5 = 车道商业 Material

            D1    D2    D3    D4    D5    
commerci[ +0.00 +0.00 +0.00 +0.00 +1.00 ]
materi[ +0.00 +0.00 +0.00 +0.00 +1.00 ]
drivewai[ +0.00 +0.00 +0.00 +0.00 +1.00 ]
special[ +0.00 +0.00 +0.00 +1.00 +0.00 ]
detour[ +0.00 +0.00 +0.00 +1.00 +0.00 ]
mainten[ +0.00 +0.00 +1.00 +0.00 +0.00 ]
traffic[ +0.00 +0.00 +1.00 +0.00 +0.00 ]
reflect[ +0.00 +1.00 +0.00 +0.00 +0.00 ]
pavement[ +0.00 +1.00 +0.00 +0.00 +0.00 ]
mobil [ +1.00 +0.00 +0.00 +0.00 +0.00 ]

应用 TFIDF 变换

            D1    D2    D3    D4    D5  
commerci[ +0.00 +0.00 +0.00 +0.00 +0.54 ]
materi[ +0.00 +0.00 +0.00 +0.00 +0.54 ]
drivewai[ +0.00 +0.00 +0.00 +0.00 +0.54 ]
special[ +0.00 +0.00 +0.00 +0.80 +0.00 ]
detour[ +0.00 +0.00 +0.00 +0.80 +0.00 ]
mainten[ +0.00 +0.00 +0.80 +0.00 +0.00 ]
traffic[ +0.00 +0.00 +0.80 +0.00 +0.00 ]
reflect[ +0.00 +0.80 +0.00 +0.00 +0.00 ]
pavement[ +0.00 +0.80 +0.00 +0.00 +0.00 ]
mobil [ +1.61 +0.00 +0.00 +0.00 +0.00 ]

应用 LSA 变换

            D1    D2    D3    D4    D5  
commerci[ +0.00 +0.00 +0.00 +0.00 +0.00 ]
materi[ +0.00 +0.00 +0.00 +0.00 +0.00 ]
drivewai[ +0.00 +0.00 +0.00 +0.00 +0.00 ]
special[ +0.00 +0.00 +0.00 +0.80 +0.00 ]
detour[ +0.00 +0.00 +0.00 +0.80 +0.00 ]
mainten[ +0.00 +0.00 +0.80 +0.00 +0.00 ]
traffic[ +0.00 +0.00 +0.80 +0.00 +0.00 ]
reflect[ +0.00 +0.80 +0.00 +0.00 +0.00 ]
pavement[ +0.00 +0.80 +0.00 +0.00 +0.00 ]
mobil [ +1.61 +0.00 +0.00 +0.00 +0.00 ]

最佳答案

首先,这个例子行不通。其背后的原理是,单词在相似上下文中出现的频率越高,它们在含义上的相关性就越大。因此,输入文档之间需要有一些重叠。段落长度的文档是理想的(因为它们有合理数量的单词并且每个段落往往只有一个主题)。

要了解 LSA 如何用于同义词识别,您首先需要了解单词出现的向量空间表示(您得到的第一个矩阵)如何用于同义词识别。这是因为您可以计算此高维向量空间中两个项目之间的距离,以衡量它们的相似性(假定它衡量的是它们一起出现的频率)。 LSA 的神奇之处在于它重新排列了向量空间的维度,因此通过相似维度的相互折叠,将不同时出现但出现在相似上下文中的项目聚集在一起。

TFIDF 权重函数的想法是突出文档之间的差异,方法是为在语料库的较小子集中出现较多的词赋予更高的权重,而为无处不在的词赋予较低的权重。 A more thorough explanation.

“LSA”变换实际上是一种奇异值分解 (SVD)——传统上潜在语义分析或潜在语义索引指的是 TFIDF 与 SVD 的组合——它用于减少向量空间的维数,或在其他方面换句话说,它将列数减少为更小、更简洁的描述(如上所述)。

因此,要了解问题的要点:您可以通过对两个对应的向量(行)应用距离函数来判断单词的相似程度。有几种距离函数可供选择,最常用的是 cosine distance。 (测量两个向量之间的角度)。

希望这能让事情变得更清楚。

关于ruby - 在 Ruby 中使用 LSA 转换从一组文档中发现同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5467167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com