基于Gensim的文本相似度计算
语料库是一组原始文本,用于无监督地训练文本主题的隐藏结构。不需要手动标记语料库中的附加信息。在Gensim中,语料库通常是一个迭代对象(比如一个列表)。每次迭代返回一个稀疏向量,可用于表达文本对象。
向量是一组文本特征的列表。它是一个文本在Gensim中的内部表达。
词典是所有文档中所有单词的集合,记录了每个单词出现的次数等信息。?
模型是一个抽象的术语。定义了两个向量空间的变换(即从文本的一个向量表示到另一个向量表示)。
用一个实验来了解:
# -*-编码:UTF-8 -*-?
从gensim导入语料库,相似性,模型
进口洁霸
classGensimExp(对象):
def__init__(self,documents,test_document,Type,feature_num,best_num):
self.raw_documents =文档
自我测试文档=测试文档
自我。SimCalType =类型
self.num_features = feature_num
self.num_best =最佳数量
defCalSim(self):
corpora_documents = []
#分词
for item _ textin self . raw _ documents:
item _ seg = list(jieba . cut(item _ text))
corpora_documents.append
#生成词典和语料库
字典=语料库。词典(语料库_文档)
#计算每条新闻对应的弓矢。
corpus =[dictionary . doc 2 bow(text)for text incorporation _ documents]#迭代器
如果自己。simcal type = = ' Similarity-tfi df-index ':
#统计语料库中每个特征的IDF值?
tfidf_model =模型。TfidfModel(语料库)
语料库_ tfi df = tfi df _ model[语料库]
自我。_相似性=相似性。相似性(自我。SimCalType,corpus_tfidf,\
num_features=self.num_features,num_best=self.num_best)
test _ cut _ raw = list(jieba . cut(self . test _ document))
test _ corpus = dictionary . doc 2 bow(test _ cut _ raw)
#根据训练好的模型,生成IF-IDF值,然后计算相似度。
自我。_ test _ corpus = tfi df _ model[test _ corpus]
elifself。SimCalType = = ' Similarity-LSI-index ':
lsi_model =模型。LsiModel(语料库)
语料库_ LSI = LSI _ model[语料库]
自我。_相似性=相似性。相似性(自我。SimCalType,corpus_lsi,\
num_features=self.num_features,num_best=self.num_best)
test _ cut _ raw = list(jieba . cut(self . test _ document))
test _ corpus = dictionary . doc 2 bow(test _ cut _ raw)
自我。_ test _ corpus = LSI _ model[test _ corpus]
自我。打印输出()
defPrint_Out(self):
string = '最相似的材料是'
fortplinrange(len(self。_相似性[自我。_test_corpus])):
iftpl!= len(自我。_相似性[自我。_test_corpus]) -1:
string =字符串+ str(self。_相似性[自我。_test_corpus][tpl][0]) \
+'('+ str(self。_相似性[自我。_test_corpus][tpl][1]) +'),'
否则:
string =字符串+ str(self。_相似性[自我。_test_corpus][tpl][0]) \
+'('+ str(self。_相似性[自我。_test_corpus][tpl][1]) +')'
打印(字符串)
if__name__=='__main__ ':
raw_documents = [
0 1 19,中信集团与腾讯在深市签署战略框架协议,宣布将推进云与大数据、区块链、人工智能等技术领域的业务合作,积极探索实体产业数字化转型升级之路。,
1浦发银行公告称,公司成都分行因违规信贷业务等违法违规行为被银监会罚款4.62亿元,罚款金额全额计入公司2017年度损益,对公司业务发展和持续经营无重大不利影响。,
2浦发银行被罚4.62亿元回应浦发银行成都分行违规:从浦发银行总行获悉,浦发银行对成都分行违规发放贷款案深感尴尬;我们坚决支持和接受监管部门的调查,同时将以此为鞭策,加强自身管理,坚持从严治理,始终把合法合规经营作为未来业务发展的根本。(蔡邑)’,
3.苏测公告:公司首次公开发行前发行的65,438+0,332,000股将于6月24日解禁,占公司总股本的65,438+0%;解禁日实际流通股65,438+0,226,5438+0.5万股,占总股本的9.73%。本次申请解除股份限售的股东为苏州测试仪器总厂及钟琼华、、吴、陈颖等四名自然人股东。" ,
据报道,波士顿科学和国药控股的一家子公司参与了对XIO子公司Lumenis的竞购。,
5苏宁尚云回复深交所问询函:2065438+2007年7月,苏宁金融研究院正式成立区块链实验室,开展区块链技术及其在金融行业的应用研究,旨在利用区块链技术为苏宁金夫业务和苏宁银行业务提供技术支持。苏宁银行区块链国内信用证信息传输系统采用联盟链模式,仅在联盟银行之间免费使用,不对外提供直接服务。这个系统没有直接收入。,
马龙环卫公告称,公司654.38+600亿首次公开发行限售股将于654.38年6月26日上市流通,涉及654.38+07名股东,包括现任董事、监事、高管张桂凤。,
航天工程7日发布公告,公司首次公开发行的3.24亿股限售股将于6月29日上市流通。涉及的股东有中国运载火箭技术研究院、航天投资控股有限公司、北京航天动力研究所、北京航天产业投资基金(有限合伙)和全国社保基金理事会划转的两户。,
大千生态公告,公司与江苏大千设计院有限公司组成的联合体已中标高淳区东坝镇EPC总承包项目,预计投资约654.38+0.4亿元。该项目的顺利实施将对公司今年的经营业绩产生积极影响。,
9 1954 2月19日,苏联最高苏维埃主席团在“兄弟般的乌克兰与俄罗斯结盟300周年”之际通过决议,俄罗斯联邦克里米亚州划给乌克兰加入共和国。
10姬友股份公告,公司预计2017年度净利润较去年同期增加约4250万元至5300万元,增幅约80.49%-100.37%,上年同期盈利5280.38万元。本期收入比上期增加较多,营业利润比上期增加较多;收到的政府补助、理财收益等非经常性损益对公司净利润的影响约为3200万元。,
11千山药机:大股东质押股份跌破平仓线。千山药机公告称,第一大股东、实际控制人之一刘向华合计持有公司14.83%的股份。目前,刘向华* * *质押公司13.78%股权。刘向华质押给国泰君安证券的2980.8万股已跌破平仓线。该公司目前正在接受证券及期货事务监察委员会的调查。根据有关规定,公司大股东在调查期间不得减持(包括股权质押和清算)。因此,本次刘向华质押的股票将跌破平仓线,不会导致公司实际控制权发生变化。,
12天马精化:子公司拟逾亿元控股中科电子,加大供应链管理发展战略。,
' 13超华科技'公告,近日接到持股子公司贝尔信员工通知,报告贝尔信公司近期无法与其董事长郑长春取得联系。截至目前,该公司未能与贝尔信董事长郑长春取得联系。经与贝尔信主要股东讨论并经贝尔信董事会批准,将由贝尔信现有管理层组成临时工作组,维护贝尔信正常的生产经营秩序。公司对贝尔信进行了全面核查,维护上市公司和股东利益。" ,
根据' 14洪升科技公告,公司预计2017年度实现利润2.8亿元至2.9亿元,同比增长20.65%至24.96%,去年同期实现利润2.32亿元。‘报告期内,公司预计非经常性损益对净利润的影响约为65,438+00万元-65,438+03万元。’,
15徐东光电公告称,控股股东徐东集团员工成长计划已完成购买公司股份,合计购买1119010,000股,占总股本的0.2%,合计成交约102万元。
]
obj 1 = gensim exp(raw _ documents,'数字化转型升级路径',' similarity-tfidf-index ',600,5)。卡尔西姆()
Obj2 = GensimExp(raw_documents,'信贷业务非法处理',' similarity-tfidf-index ',600,3)。卡尔西姆()
Obj3 = GensimExp(raw_documents,'本期收入比上期增加了','相似性-LSI-index ',400,2)。卡尔西姆()
实验结果:
因为语料库不多,返回的相似文本数量少,但可以看出判断是正确的。(PS:分词过程中未处理停用词)
参考:
/gensim/tutorial.html