当前位置: 首页 > news >正文

【Python机器学习】NLP分词——利用分词器构建词汇表(三)——度量词袋之间的重合度

如果能够度量两个向量词袋之间的重合度,就可以很好地估计他们所用词的相似程度,而这也是它们语义上重合度的一个很好的估计。因此,下面用点积来估计一些新句子和原始的Jefferson句子之间的词袋向量重合度:

import pandas as pdsentence="""
Thomas Jefferson Began buliding Monticelli as the age of 26.\n
"""
sentence=sentence+"""Construction was done mostly by local masons and carpenters.\n"""
sentence=sentence+"""He moved into the South Pavilion in 1770.\n"""
sentence=sentence+"""Turning Monticello into a neoclassical masterpiece was Thomas Jefferson's obsession."""
corpus={}
#一般来说,只需要使用.splitlines()即可,但是这里显式地在每个行尾增加了 \n  字符,因此这里要显式地对此字符串进行分割
for i,sent in enumerate(sentence.split('\n')):corpus['sent{}'.format(i)]=dict((tok,1) for tok in sent.split())
df=pd.DataFrame.from_records(corpus).fillna(0).astype(int).Tdf=df.T
print(df.sent0.dot(df.sent1))
print(df.sent0.dot(df.sent2))
print(df.sent0.dot(df.sent3))

运行结果表明,没有词同时出现在sent0和其他句子中。

词之间的重合度可以作为句子相似度的一种度量方法。

下面是一种找出sent0和sent3之间共享词(如果有)的方法:

print([(k,v) for (k,v) in (df.sent0 & df.sent3).items() if v])

这是自然语言文档(句子)的第一个向量空间模型VSM)。对于词袋向量,不仅可以使用点积,也可以定义其他的向量运算,如向量加、减、OR与AND等,甚至还可以采用类似欧几里得距离或者向量夹角这样的运算。将文档表示成二值向量具有巨大的作用、所有现代CPI都有硬连线内存寻址指令,这些指令可以有效地哈希、索引和搜索大量这样的二值向量。虽然这些指令是为另一个目的(索引内存位置以从内存中检索数据)而构建的,但是它们在搜索和检索文本的二值向量运算中同样有效。


http://www.mrgr.cn/news/12704.html

相关文章:

  • tcpip协议学习
  • 应用框架也需要进行工具规划
  • JVM垃圾回收算法以及垃圾收集器
  • FCIS+mxnet的大坑
  • 慢sql问题解决,sql优化,数据库(mysql)
  • 8.26 T4 日记和编辑器(fhq维护kmp——kmp本身含有的单射与可合并性)
  • 浅谈安科瑞系能源配套产品在美特新材料光储充一体化项目上的应用
  • 探索联邦学习:保护隐私的机器学习新范式
  • C# .Net 条码批量自动打印框架 基于Bartender 10.1 V1.0
  • 代码随想录训练营 Day41打卡 动态规划 part08 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机II 123. 买卖股票的最佳时机III
  • Android settings命令讲解和实战
  • [记录] linux 虚拟机装 windows10
  • 免费分享:中国三级及以上河流(附下载方法)
  • HTML静态网页成品作业(HTML+CSS)——世博园介绍(2个页面)
  • vm 虚拟机无法调用摄像头(亲测有效)
  • 边缘物联网平台AIoTedge推荐
  • matlab 创建复数数组
  • 搜维尔科技:利用 Xsens最大程度提高影视动画制作效率
  • 重构多重children数据 减少数据
  • 一道关于php文件包含的CTF题