Python编程:使用gensim对中文文本进行相似度计算

简介: Python编程:使用gensim对中文文本进行相似度计算

gensim文档:

https://radimrehurek.com/gensim/tutorial.html

安装

pip install  gensim

代码示例

# -*- coding: utf-8 -*-
import logging
import jieba
from gensim import corpora, models, similarities
logging.basicConfig(level=logging.DEBUG)
jieba.setLogLevel(logging.INFO)
class DocumentSimilar(object):
    def __init__(self, documents):
        self.documents = documents
        self.dictionary = None
        self.tfidf = None
        self.similar_matrix = None
        self.calculate_similar_matrix()
    @staticmethod
    def split_word(document):
        """
        分词,去除停用词
        """
        stop_words = {":", "的", ",", "”"}
        text = []
        for word in jieba.cut(document):
            if word not in stop_words:
                text.append(word)
        logging.debug(text)
        return text
    def calculate_similar_matrix(self):
        """
        计算相似度矩阵及一些必要数据
        """
        words = [self.split_word(document) for document in self.documents]
        self.dictionary = corpora.Dictionary(words)
        corpus = [self.dictionary.doc2bow(word) for word in words]
        self.tfidf = models.TfidfModel(corpus)
        corpus_tfidf = self.tfidf[corpus]
        self.similar_matrix = similarities.MatrixSimilarity(corpus_tfidf)
    def get_similar(self, document):
        """
        计算要比较的文档与语料库中每篇文档的相似度
        """
        words = self.split_word(document)
        corpus = self.dictionary.doc2bow(words)
        corpus_tfidf = self.tfidf[corpus]
        return self.similar_matrix[corpus_tfidf]
if __name__ == '__main__':
    documents = [
        "货运物流供应商Flexport完成10亿美元融资",
        "一笔300亿并购落地,一个新游戏帝国崛起",
        "讯轻科技”累计完成近千万元融资",
        "窝趣公寓完成近2亿元B轮融资主打品质和轻松社交的居住环境",
        "IBM的区块链副总裁JesseLund:比特币将达到100万美元",
    ]
    doc_similar = DocumentSimilar(documents)
    # 要比较的文档
    new_doc = "窝趣公寓完成近2亿元B轮融资"
    for value, document in zip(doc_similar.get_similar(new_doc), documents):
        print("{:.2f}".format(value), document)

输出结果

0.03 货运物流供应商Flexport完成10亿美元融资
0.00 一笔300亿并购落地,一个新游戏帝国崛起
0.10 讯轻科技”累计完成近千万元融资
0.66 窝趣公寓完成近2亿元B轮融资主打品质和轻松社交的居住环境
0.00 IBM的区块链副总裁JesseLund:比特币将达到100万美元

参考:

  1. python使用gensim进行文本相似度计算
相关文章
|
1天前
|
机器学习/深度学习 自然语言处理 算法
Gensim详细介绍和使用:一个Python文本建模库
Gensim详细介绍和使用:一个Python文本建模库
10 1
|
2天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
13 5
|
4天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
|
5天前
|
安全 数据安全/隐私保护 Python
Python的整型在计算中具有以下优势
Python整型提供任意精度整数计算,无溢出风险;支持多种算术运算,操作简便;作为不可变类型保证数据安全;能进行高级数学运算,并有NumPy等库加持,适合数值分析和科学计算。
13 0
|
5天前
|
Python
Python的整型在计算中的精度可以通过使用二进制或十进制表示来体现
Python整型支持十、二、八、十六进制表示,其中十进制默认,二进制(0b前缀)、八进制(0o前缀)、十六进制(0x前缀)。计算时以二进制精度处理,确保结果准确。例如:123的二进制是0b1111011,八进制是0o173,十六进制是0x7b。
10 0
|
5天前
|
测试技术 Python
Python模块化方式编程实践
Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
27 2
|
10天前
|
机器学习/深度学习 自然语言处理 算法
【Python机器学习专栏】文本数据的特征提取与表示
【4月更文挑战第30天】本文探讨了文本特征提取与表示在机器学习和NLP中的重要性。介绍了词袋模型、TF-IDF和n-gram等特征提取方法,以及稀疏向量和词嵌入等表示方式。Python中可利用sklearn和gensim库实现这些技术。有效的特征提取与表示有助于将文本数据转化为可处理的数值形式,推动NLP和机器学习领域的进步。
|
11天前
|
测试技术 调度 索引
python编程中常见的问题
【4月更文挑战第23天】
31 2
|
12天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver
|
12天前
|
机器学习/深度学习 数据挖掘 算法框架/工具
Python:编程的艺术与魅力
Python:编程的艺术与魅力
25 3