词汇相似度计算报告
摘要:词汇相似度计算是MLP领域最基本的任务,也是其它更上层(词语消歧、句子翻译、文章摘要)工作的基础。另一方面,从产业界的角度看,能够将词汇的相似度,特别的,尤其是词汇的语义相似度计算好,对于机器翻译、产品推荐、舆情控制、情感分析等众多应用将产生极大的促进作用,毕竟,词汇语义理解是所有这些工作的基础。词汇相似度计算需要考虑三个基本问题:第一,如何定义“共同出现”;第二,词语权重如何度量;第三,如何选择相似度计算公式。常见的词汇相似度计算方法包括:基于Word-Net的词汇关联性分析;基于Wikipedia的ESA;基于矩阵分解的LSA;基于主题模型的LDA;基于Web Search的页面共现;基于深度学习的表示学习方法等。本次试验综合考虑各种因素,采用 爬取Wikipedia关键词页面作为语料库,基于目标词tf、tfidf为特征,同时结合Linear Regression、Random Forest等有监督学习和LSA、LDA等无监督学习 的方法,进行本次试验。以斯皮尔曼相关系数为标准,通过和人工标注过的“WordSimilarity-353”数据集比较,我们所使用的方法得到的斯皮尔曼相关系数都大于零(最大为0.524),说明方法在一定程度上是可行的。通过对比不同的实验结果,我们发现:在语料库很少的情况下,使用简单的模型反而可以有较好的效果;通过LSA和LDA的使用,我们捕获到了语料库中一些有趣的Topics。另外,我们还尝试了基于Word-Net的词语相似度计算,但由于“definition”和“examples”两个函数的限制,本次试验只是用了“path_similarity”,造成很多同义词对之间相关性评估效果很差(很多词对没有path_similarity),不过算是对Word-Net的一次尝试。
先插入一个爬数据的代码:
#!usr/bin/env python
# -*-coding:utf-8 -*-
import pandas as pd
import numpy as np
import urllib, urllib2
import re
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding("utf8")
#for UnicodeEncodeError
def SaveFile(content, filename):
f