IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> gensim-word2vec相似词匹配 -> 正文阅读

[人工智能]gensim-word2vec相似词匹配

1、 下载wiki百科数据

维基百科-资料库下载?
pages-articles.xml.bz2 为结尾的文件
在这里插入图片描述

2、 解析wiki百科文本数据

python3 wiki_to_txt.py zhwiki-20220201-pages-articles.xml.bz2
import logging
import sys

from gensim.corpora import WikiCorpus

def main():
    if len(sys.argv) != 2:
        print("Usage: python3 " + sys.argv[0] + " wiki_data_path")
        exit()

    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
    wiki_corpus = WikiCorpus(sys.argv[1], dictionary={})
    texts_num = 0

    with open("wiki_texts.txt", 'w', encoding='utf-8') as output:
        for text in wiki_corpus.get_texts():
            output.write(' '.join(text) + '\n')
            texts_num += 1
            if texts_num % 10000 == 0:
                logging.info("已處理 %d 篇文章" % texts_num)


if __name__ == "__main__":
    main()
2022-02-24 10:30:07,609 : INFO : 已處理 10000 篇文章
......
2022-02-24 10:44:44,092 : INFO : 已處理 410000 篇文章
2022-02-24 10:45:09,587 : INFO : finished iterating over Wikipedia corpus of 417371 documents with 96721989 positions (total 3964095 articles, 113681913 positions before pruning articles shorter than 50 words)

3、 繁体文本转简体

使用opencc 将文本数据繁体转简体

opencc -i wiki_texts.txt -o wiki_zh_tw.txt -c t2s.json

4、 分词处理(包含去除停用词)

使用jieba分词对简体中文文本数据做分词,分词后写入txt文件(用于gensim模型训练)

python3 segment.py
import jieba
import logging

def main():

    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

    # jieba custom setting.
    jieba.set_dictionary('jieba_dict/dict.txt.big')

    # load stopwords set
    stopword_set = set()
    with open('jieba_dict/stopwords.txt','r', encoding='utf-8') as stopwords:
        for stopword in stopwords:
            stopword_set.add(stopword.strip('\n'))

    output = open('wiki_seg.txt', 'w', encoding='utf-8')
    with open('wiki_zh_tw.txt', 'r', encoding='utf-8') as content :
        for texts_num, line in enumerate(content):
            line = line.strip('\n')
            words = jieba.cut(line, cut_all=False)
            for word in words:
                if word not in stopword_set:
                    output.write(word + ' ')
            output.write('\n')

            if (texts_num + 1) % 10000 == 0:
                logging.info("已完成前 %d 行的斷詞" % (texts_num + 1))
    output.close()

if __name__ == '__main__':
    main()

5、 模型训练和应用

python3 train.py
python3 demo.py
# train.py
import logging

from gensim.models import word2vec


def main():
    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
    sentences = word2vec.LineSentence("wiki_seg.txt")
    # model = word2vec.Word2Vec(sentences, vector_size=250)
    model = word2vec.Word2Vec(sentences, sg=1, window=10, min_count=5, workers=6, vector_size=250)

    # 保存模型,供日後使用
    model.save("word2vec.model")

    # 模型讀取方式
    # model = word2vec.Word2Vec.load("your_model_name")


if __name__ == "__main__":
    main()
# demo.pyfrom gensim.models import word2vecfrom gensim import modelsimport loggingdef main():    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)    model = models.Word2Vec.load('word2vec.model')    print("提供 3 種測試模式\n")    print("輸入一個詞,則去尋找前十個該詞的相似詞")    print("輸入兩個詞,則去計算兩個詞的餘弦相似度")    print("輸入三個詞,進行類比推理")    while True:        try:            query = input()            q_list = query.split()            if len(q_list) == 1:                print("相似詞前 10 排序")                res = model.wv.most_similar(q_list[0], topn=10)                for item in res:                    print(item[0] + "," + str(item[1]))            elif len(q_list) == 2:                print("計算 Cosine 相似度")                res = model.wv.similarity(q_list[0], q_list[1])                print(res)            else:                print("%s之於%s,如%s之於" % (q_list[0], q_list[2], q_list[1]))                res = model.wv.most_similar([q_list[0], q_list[1]], [q_list[2]], topn=100)                for item in res:                    print(item[0] + "," + str(item[1]))            print("----------------------------")        except Exception as e:            print(repr(e))if __name__ == "__main__":    main()

6、效果图

在这里插入图片描述

7、数据及代码:

https://github.com/SeafyLiang/machine_learning_study/tree/master/nlp_study/gensim_word2vec

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:31:25  更:2022-02-26 11:34:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:38:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码