语义相关的词
- 例如,‘学生’、‘老师’、‘大学’等。
- 系统可以基于概念进行处理,而不用仅依赖于精确匹配的关键词。
- 常见的方法:
- WordNet上下位关系分析
- 潜在语义分析(Latent Semantic Analysis,LSA)
- 基于神经网络的Word2Vec
WordNet上下位关系分析
- 上位词表示更为抽象概念,下位词表示更具体概念。
- 借用hypernyms()上位词 和 hyponyms()下位词函数。
- WordNet中的词之间存在层级关系,相距越近,语义关系越强。可以借助hypernym_path()函数,返回其上义词的路径,确认层级关系(可以画出图)。
- 借助path_similarity()计算相似度,找到层级结构最短距离的选择。
但是较粗糙,根据路径结点数量定义的相似度,未考虑结点在层级中的位置,而离叶子节点越近的点所表示的语义范畴更广,因此在计算相似度时应该拥有更高的权重,反之越近,表示的语义范畴更窄,应该权重更低。 - 其他方法,如词嵌入,可以解决独热编码的向量高纬度很稀疏的问题。且与WordNet相比,词嵌入最大的不同是可能不依赖于人工构建的字典,而是从海量的文档中学习而来。而潜在语义分析LSA、Word2Vec属于词嵌入。
潜在语义分析
- LSA是通过大量的文档数据找到词语之间的关联。
- 线代知识,酉矩阵,特征值和特征向量,相似对角化。
- LSA通过词条和文档组成的矩阵,发掘词和词之间的语义关系。
步骤:
3.1. 分析文档集合,建立表示文档和词条关系的矩阵。
3.2. 对文档-词条矩阵进行奇异值分解。 - 实例
PS:
1、安装机器学习库sklearn。
2、矩阵:行向量表示某篇文档中不同单词的分布,列向量表示某单词在不同文档中的分布。
3、SVD非常耗时。
Word2Vec
- 将单词转为向量。
- 具体分为Skip-Gram和CBOW,皆是构建神经网络学习词向量,指定中心词,然后考虑中心词前后的若干个词。
- Skip-Gram构建的神经网络的输入层是中心词的向量,输出层是上下文词的向量。
- CBOW输入层是上下文词的向量,输出层是中心词的向量。
- 词嵌入方式,非监督式学习,只需要海量文档集合,数据规模要求高。
- 需要gensim库。