3

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

D1 = 动员
D2 = 反光路面
D3 = 交通维护
D4 = 特别绕道
D5 = 车道商业材料

            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 ]  
4

1 回答 1

3

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

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

TFIDF 加权函数的想法是突出文档之间的差异,通过对出现在语料库的较小子集中的单词赋予更高的权重,而对到处使用的单词赋予更低的权重。更彻底的解释。

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

所以要得到你问题的关键:你可以通过对两个对应的向量(行)应用距离函数来判断单词与单词的相似程度。有几种距离函数可供选择,最常用的是余弦距离(测量两个向量之间的角度)。

希望这能让事情更清楚。

于 2011-11-07T19:11:20.673 回答