当前位置:首页 > 服务端 > pypinyin, jieba分词与Gensim

pypinyin, jieba分词与Gensim

2022年11月10日 11:30:13服务端51

一 . pypinyin

from pypinyin import lazy_pinyin, TONE, TONE2, TONE3

word = '孙悟空'

print(lazy_pinyin(word, style=TONE))  # ['sūn', 'wù', 'kōng']
print(lazy_pinyin(word, style=TONE2))  # ['su1n', 'wu4', 'ko1ng']
print(''.join(lazy_pinyin(word, style=TONE2)))  # su1nwu4ko1ng
print(lazy_pinyin(word, style=TONE3))  # ['sun1', 'wu4', 'kong1']

# 应用场景(自然语言处理NLP)
   比如通讯录里面有叫'凰尚'的人,这个词不常见,你如果让语音助手给'凰尚'发消息,语音助手肯定识别不了,
  它可能给'皇上'或者'黄尚'发,因为常见,但是把文字转成拼音就可以发了,它可以找到hua2ngsha4ng(习惯用TONE2),然后发出去.

 

二 . jieba分词

import jieba

word = '今天天气怎么样'

print(list(jieba.cut(word)))
# ['今天天气', '怎么样']

print(list(jieba.cut_for_search(word)))
# ['今天', '天天', '天气', '今天天气', '怎么', '怎么样']

# 应用场景,和gensim一起用,用于自然语言处理与机器学习

三 . gensim

import jieba
from gensim import corpora
from gensim import models
from gensim import similarities

lst = ['你今年几岁了', '你今年多大了', '祖国祖国我们爱你']  # 语料库,我们说的话要到这里面匹配

all_doc_list = []
for doc in lst:
    doc_list = list(jieba.cut_for_search(doc))
    all_doc_list.append(doc_list)

dictionary = corpora.Dictionary(all_doc_list)  # 制作词袋
# print('词袋有什么==>', dictionary)
corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]  # doc2bow词袋里的词组成[(0,1),(2,6)]形式的
# print(corpus)

# 将你说的话先做成分词列表,然后做成语料库
word = '祖国我爱你'
doc_test_list = (list(jieba.cut_for_search(word)))
doc_test_vec = dictionary.doc2bow(doc_test_list)
# print(doc_test_vec)

# 将语料库使用lsi模型训练
lsi = models.LsiModel(corpus)
# print('corpus的训练结果>>>', lsi[corpus])

index = similarities.SparseMatrixSimilarity(lsi[corpus], num_features=len(dictionary.keys()))
# print(index, type(index))
# 将 语料库doc_test_vec 在 语料库corpus的训练结果 中的 向量表示 与 语料库corpus的 向量表示 做矩阵相似度计算
sim = index[lsi[doc_test_vec]]
# print("sim", sim, type(sim))

# 对下标和相似度结果进行一个排序,拿出相似度最高的结果
res = sorted(enumerate(sim), key=lambda item: -item[1])
print(res)
text = lst[res[0][0]]  # 找到lst中与数据最匹配的索引位置

print(word, text)

 

  

作者:一个很善良的抱爱
来源链接:https://www.cnblogs.com/attila/p/10753959.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/69259.html

标签: jieba分词
分享给朋友: