0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python自然语言处理实战:两篇文章相似度清晰透明

lviY_AI_shequ 来源:电子发烧友网 作者:工程师谭军 2018-07-09 09:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

此书专注于中文的自然语言处理,以Python及其相关框架为工具,以实战为导向,详细讲解了自然语言处理的各种核心技术、方法论和经典算法。三位作者在人工智能、大数据和算法领域有丰富的积累和经验,是阿里巴巴、前明略数据和七牛云的资深专家。同时,本书也得到了阿里巴巴达摩院高级算法专家、七牛云AI实验室Leader等专家的高度评价和鼎力推荐。

本节将利用训练好的词向量和段落向量对两篇关于天津全运会的新闻进行向量化,并计算两篇新闻的相似度。如下是两篇新闻:

新闻1:6日,第十三届全运会女子篮球成年组决赛在天津财经大学体育馆打响,中国篮协主席姚明到场观战。姚明在接受媒体采访时表示,天津全运会是全社会的体育盛会,他称赞了赛事保障与服务工作,并表示中国篮协将在未来的工作中挖掘天津篮球文化的价值。

本届天津全运会增加了包括攀岩、马拉松、象棋在内的19个大项的群众体育比赛项目,普通群众成为赛场“主角”。对此,姚明表示:“引入群众性的体育项目,真正做到了全运会的‘全’字,这不仅仅是专业运动员的盛会,更是全社会的体育盛会。”谈及本届全运会赛事筹备与保障服务时,姚明说:“全运会得到了天津市委市政府和各区、各学校的大力帮助,篮球项目比赛(顺利举办)要感谢天津方方面面的支持。”此外,姚明还对全运村内的保障服务和志愿者工作表示赞赏。“很多熟悉的教练员和运动员都表示服务保障很不错,志愿者态度很积极。”“毋庸置疑,天津是中国篮球发源地,1895年,在篮球运动诞生4年的时候就漂洋过海从天津上岸,这是中国篮球具有历史意义的地方。”姚明在谈及天津篮球文化和未来发展时说,“天津保留着迄今为止世界上最古老的室内篮球场,这都是非常重要的篮球文化遗产,希望能在未来的工作中挖掘这些历史遗产的价值。”姚明说:“天津是座美丽的城市,这次来天津能够感到浓厚的体育文化元素,希望运动员和教练员在比赛赛得好的同时,也能领略到天津的城市文化。”

新闻2:从开幕式前入住全运村到奔波于全运三座篮球场馆之间,中国篮协主席姚明抵津已有10多天了。昨天在天津财大篮球馆,姚明还饶有兴致地谈了对本次天津全运会的看法,能够让群众融入进来,是他觉得最有亮点的地方。 “全运会是一项很有传统的运动会,这次来到天津,得到市委、市政府的大力支持,天津各个区学校对于篮球比赛从人员到场馆给予很大帮助,中国篮协作为竞委会的一员,受到总局的委派承办篮球的比赛,真的非常感谢天津对我们方方面面的支持。”尽管之前多次到访津城,不过这次因为全运,还是给了姚明很多不一样的感受,“天津是座非常美丽的城市,我之前来这里很多次了,这次来感受到了非常浓烈的体育文化元素,我们希望运动员、教练员在这座美丽的城市比赛赛得好,同时能够领略到天津的城市文化。”本届全运的群众项目的比赛,引起了姚明极大的兴趣,“这次天津全运会最突出的特点是引入了群众性体育和群众性的项目,同时设立了群众性的奖牌和荣誉,是真的做到了一个‘全’字,这也符合体育融入社会的一个大趋势,全运会不该只是专业运动员的盛会,也是所有社会人的一个盛会。”对于这段时间在天津的生活,姚明也是赞不绝口,“我们作为篮协的官员都住在技术官员村,这段时间的生活工作都在里面,听到了很多熟悉的运动员、教练员对本次全运会的夸赞,生活工作非常方便,保障非常齐全,我们为天津感到非常高兴。很多场馆都很新,很多志愿者都很年轻,大家都积极奔波在各自的岗位上,这一点我们的运动员和教练员应该是最有发言权的。”作为中国最出色的篮球运动员,姚明也谈了天津作为中国篮球故乡的感受,“毋庸置疑,天津是中国篮球的发源地,是篮球传入中国的第一故乡,在篮球1891年诞生之后4年就漂洋过海来到中国,在天津上岸,这是对中国篮球具有历史意义的地方,并且我们也知道这里保留了迄今为止世界上最古老的室内篮球馆,这些都是我们非常重要的文化遗产。我希望我们在未来的工作中,可以让这样越来越多的历史故事被重新挖掘出来。

1. word2vec计算网页相似度

word2vec计算网页相似度的基本方法是:抽取网页新闻中的关键词,接着将关键词向量化,然后将得到的各个词向量相加,最后得到的一个词向量总和代表网页新闻的向量化表示,利用这个总的向量计算网页相似度。包括的步骤是:1)关键词提取,2)关键词向量化,3)相似度计算。

首先是关键词提取,这里我们采用jiebag工具包中tfidf关键词提取方法,如下图7-14所示,函数KeyWord_Extract的功能就是提取句子的关键词,并将关键词保存在txt文件中。

def Word_cut(sentence, file_name):words = pseg.cut(sentence)for word in words:with open(file_name, "a") as f:f.write(str(word.word.encode("utf-8")) + " ")with open(file_name, "a") as f:f.write("\n")def KeyWord_Extract(data, file_name):tfidf = analyse.extract_tagskeywords = tfidf(data)for keyword in keywords:with open(file_name, "a") as f:f.write(str(word.word.encode("utf-8")) + " ")with open(file_name, "a") as f:f.write("\n")if __name__ == "__main__":DataFile = codes.open("P2.txt", "r")DataSet = DataFile.readlines()for data in DataSet:data = data[:len(data)-1]words = Word_cut(data, "P22.txt")KeyWord_Extract(data, "P22_keyword.txt")

图7-14

图7-15的函数word2vec便是从txt文件中读取关键词,利用上两节训练好的词向量获取关键词的词向量。需要注意的是,由于本文训练词向量的语料不是特别大(大约1.5G的纯文本)无法包括所有的汉语词语,所以在获取一个词语的词向量时,最好使用代码25行所示的方式判断模型是否包含该词语,如果包含再获取词向量,否则会报错。

def word2vec(file_name, model):DataFile = codes.open(file_name, "r")DataSet = DataFile.readlines()word_vec_all = numpy.zeros(wordvec_size)for data in DataSet:data = data.decode("utf-8")space_pos = get_char_pos(data, " ")first_word = data[0:space_pos[0]]if model.__contains__(first_word):word_vec_all = word_vec_all + model[first_word]for i in range(len(space_pos) - 1):word = data[space_pos[i]:space_pos[i+1]]if model.__contains__(word):word_vec_all = word_vec_all + model[word]return word_vec_all

图7.15关键词向量化代码

如图7.16所示的词向量相似度计算代码,通过余弦相似度计算两个向量的相似度。根据图7.16的代码,计算出新闻1和新闻2的相似度为0.66.

def SimlarityCalu(Vector1, Vector2):Vector1Mod = np.sqrt(Vector1.dot(Vector1))Vector2Mod = np.sqrt(Vector2.dot(Vector2))if Vector2Mod != 0 and Vector1Mod != 0:simlarity = (Vector1.dot(Vector2))/(Vector1Mod*Vector2Mod)else:simlarity = 0return simlarityif __name == "__main__":model = gensim.models.Word2Vec.load("zhiwiki_news")p1_vec = word2vec("P11_keyword.txt", model)p2_vec = word2vec("P22_keyword.txt", model)print(SimlarityCalu(p1_vec, p2_vec))

图7-16 word2vec词向量相似度计算

2. doc2vec计算网页相似度

跟word2vec计算网页相似度一样,doc2vec计算网页相似度主要包括如下三个步骤:1)预处理,2)句子向量化,3)计算文本相似。

预处理就是对文本进行分词,每个词用空格隔开,具体代码如图7-14的Word_cut函数所示,该函数完成文本的分词,并把分词结果按要求保存在txt文档中。在预处理文本之后便是利用doc2vec对句子向量化,句子向量的训练方法见7.3.2[计算机1]节,这里直接利用训练好的句子向量。代码如图7-17的doc2vec函数所示。同样用余弦相似度计算文本的相似度,代码入图7-17所示的main函数。最后经计算所得利用doc2vec计算新闻1和新闻2间的相似度为0.97。

def doc2vec(file_name, model):docs = [x.strip().split() for x in codecs.open(file_name, "r", "utf-8".readlines()]doc_vec_all = numpy.zeros(docvec_size)for d in docs:doc_vec_all = doc_vec_all + model.infer_vector(d, alpha=start_alpha,steps=infer_epoch)return doc_vec_allif __name__ == "__main__":model = g.Doc2Vec.load(model_path)P1_doc2vec = doc2vec("toy_data/P11.txt", model)p2_doc2vec = doc2vec("toy_data/P22.txt", model)print(SimlarityCalu(p1_doc2vec, p2_doc2vec)

图7-17 doc2vec文本相似度计算代码

3.两种相似度计算方法分析

前文介绍了word2vec和doc2vec两种计算网页相似度的方法,结果显示利用doc2vec方法计算的相似度为0.97高于word2vec计算的0.66,显然通过阅读前两篇新闻,知道这两篇新闻极为相似,因此可以判断doc2vec计算文本相似度的方法更胜一筹。这是因为:1)doc2vec不仅利用了词语的语义信息而且还综合了上下文语序信息,而word2vec则丢失了语序信息;2)word2vec方法中的关键词提取算法准确率不高,丢失了很多关键信息。

(1)三位作者资历深厚,分别是阿里巴巴的数据架构师和NLP专家、百炼智能的NLP专家(前明略数据的技术合伙人和科学家)、七牛云AI实验室NLP&OCR方向负责人

(2)以实战为导向,绕开各种复杂数学公式与证明,确保读者零基础入门,详细讲解自然语言处理 的各种核心技术、方法论和经典算法

(3)阿里巴巴达摩院高级算法专家、百炼智能CEO、七牛云AI LAB负责人、天善智能创始人联袂推荐

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    89

    文章

    38153

    浏览量

    296811
  • 人工智能
    +关注

    关注

    1813

    文章

    49746

    浏览量

    261603
  • 大数据
    +关注

    关注

    64

    文章

    9030

    浏览量

    143078
  • 阿里
    +关注

    关注

    6

    文章

    462

    浏览量

    34032

原文标题:Python自然语言处理实战:计算两篇文章的相似度

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    云知声论文入选自然语言处理顶会EMNLP 2025

    近日,自然语言处理(NLP)领域国际权威会议 ——2025 年计算语言学与自然语言处理国际会议(EMNLP 2025)公布论文录用结果,云知
    的头像 发表于 11-10 17:30 524次阅读
    云知声论文入选<b class='flag-5'>自然语言</b><b class='flag-5'>处理</b>顶会EMNLP 2025

    SGS为TCL华星自然光MNT显示颁发高自然相似 Performance Tested Mark

    华星27"自然光MNT显示颁发"高自然相似Performance Tested Mark",这是继2025年9月1日TCL华星12.1"教育平板显示获得全球首张SGS高
    的头像 发表于 10-19 20:26 244次阅读
    SGS为TCL华星<b class='flag-5'>自然</b>光MNT显示颁发高<b class='flag-5'>自然</b>光<b class='flag-5'>相似</b><b class='flag-5'>度</b> Performance Tested Mark

    HarmonyOSAI编程自然语言代码生成

    安装CodeGenie后,在下方对话框内,输入代码需求描述,将根据描述智能生成代码,生成内容可一键复制或一键插入至编辑区当前光标位置。 提问示例 使用ArkTs语言写一段代码,在页面中间部分
    发表于 09-05 16:58

    【HZ-T536开发板免费体验】5- 无需死记 Linux 命令!用 CangjieMagic 在 HZ-T536 开发板上搭建 MCP 服务器,自然语言轻松控板

    引言:为什么需要 “自然语言控板”? 痛点引入 :嵌入式开发中,开发者常需通过 SSH 等工具登录开发板,手动输入复杂的 Linux 命令(如ls -l、gpio readall、ifconfig等
    发表于 08-23 13:10

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富
    的头像 发表于 07-24 15:32 649次阅读
    C++ 与 <b class='flag-5'>Python</b>:树莓派上哪种<b class='flag-5'>语言</b>更优?

    思必驰与上海交大联合实验室研究成果入选大顶级会议

    近日,计算语言学与自然语言处理领域全球顶级会议ACL 2025及语音研究领域旗舰会议INTERSPEECH 2025相继公布论文录用结果。思必驰-上海交大联合实验室表现亮眼,共有13篇论文被
    的头像 发表于 07-11 16:24 723次阅读
    思必驰与上海交大联合实验室研究成果入选<b class='flag-5'>两</b>大顶级会议

    思必驰与上海交大联合实验室两篇论文入选ICML 2025

    会议。会议涵盖了机器学习的各个前沿方向,包括但不限于深度学习、强化学习、自然语言处理、计算机视觉、贝叶斯方法及优化算法等。
    的头像 发表于 06-16 09:23 1287次阅读
    思必驰与上海交大联合实验室<b class='flag-5'>两篇</b>论文入选ICML 2025

    云知声四篇论文入选自然语言处理顶会ACL 2025

    近日,第63届国际计算语言学年会ACL 2025(Annual Meeting of the Association for Computational Linguistics,简称ACL)论文接收
    的头像 发表于 05-26 14:15 1049次阅读
    云知声四篇论文入选<b class='flag-5'>自然语言</b><b class='flag-5'>处理</b>顶会ACL 2025

    如何提高uvc相机的清晰度

    在使用小核的uvc例程时,修改了编码的分辨率设置为2592x1944,通过uvc连接到相机时看到的画面比较模糊,如何提高清晰度呢? 配置如下所示左边为大核编码,右边为uvc配置 下面是canaan-camera.sh新增的分辨率 下面是uvc下2592*1944的图片 下面是使用大核下面的编码图像
    发表于 04-28 06:33

    自然语言处理的发展历程和应用场景

    你是否曾经对着手机说:“嘿,Siri,今天天气怎么样?”或者在出国旅行时,打开翻译软件,对着菜单说:“请把这道菜翻译成英文”。
    的头像 发表于 04-17 11:40 1145次阅读

    自然语言提示原型在英特尔Vision大会上首次亮相

    在英特尔Vision大会上,Network Optix首次展示了自然语言提示原型,该方案将重新定义视频管理,为各行各业由AI驱动的洞察和效率提速。
    的头像 发表于 04-09 09:30 791次阅读

    《AI Agent 应用与项目实战》----- 学习如何开发视频应用

    学习、自然语言处理(NLP)、计算机视觉(CV)等先进技术提供的强大的数据处理和分析能力。 在视频应用开发中,AI Agent可以用于视频内容分析、推荐、编辑等。 下面跟随作者的指导,使用语聚AI平台
    发表于 03-05 19:52

    《AI Agent 应用与项目实战》阅读心得2——客服机器人、AutoGen框架 、生成式代理

    ,Airtable负责知识库管理,Voiceflow处理对话流程设计,再配合GPT模型进行自然语言理解和生成。前端功能设计中引入了用户意图识别模块,能够准确捕捉用户的查询意图并进行多维度分类,这种分类机制使得系统能够
    发表于 02-25 21:59

    语言模型的解码策略与关键优化总结

    的技术参考。主要涵盖贪婪解码、束搜索、采样技术等核心解码方法,以及温度参数、惩罚机制等关键优化手段。大型语言模型的技术基础大型语言模型是当代自然语言处理技术的核心
    的头像 发表于 02-18 12:00 1075次阅读
    大<b class='flag-5'>语言</b>模型的解码策略与关键优化总结

    微软重磅推出《GraphRAG实践应用白皮书》

    在全球数字化浪潮的推动下,大语言模型凭借其卓越的自然语言处理能力,引领着自然语言理解与生成的新纪元。但与此同时,数据随之呈爆炸式增长,也为企业带来了空前的机遇与挑战。如何在海量数据中高
    的头像 发表于 01-13 15:20 1608次阅读