我是靠谱客的博主 威武棉花糖,最近开发中收集的这篇文章主要介绍SnowNlp中文分词和中文关键词提取只能提取单个字不能提取分词的解决方法问题描述原因解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 问题描述
- 原因
- 解决方法
问题描述
# -*- coding: utf-8 -*-
# 导入SnowNLP库
from snownlp import *
import jieba
import re
if __name__ == '__main__':
# ---------------------------------------------------------------------
text = u'''《三体3:死神永生》
与三体文明的战争使人类看到了宇宙黑暗的真相,地球文明像一个恐惧的孩子,熄灭了寻友的篝火,在暗夜中发抖。自以为历经沧桑,其实刚刚蹒跚学步;自以为悟出了生存竞争的秘密,其实还远没有竞争的资格。使两个文明命悬一线的黑暗森林打击,不过是宇宙战场上的一个微不足道的插曲,一个在战场上乱跑的无知孩童被堑壕中射杀,仅此而已。真正的星际战争没人见过,也不可能见到。因为战争的方式和武器已经远超出人类的想象,目睹战场之日,就是灭亡之时。
人类没有想到,面对这巨大的存在,从社会学的结论,却可以推导出宇宙学的结果。宇宙的田园时代已经远去,那时,万物的之美曾昙花一现,现在已经变成任何大脑和智慧体都无法做出的梦,变成游吟诗人飘渺的残歌;宇宙的物竞天择已到了惨烈的时刻,在亿万光年暗无天日的战场上,深渊底层的毁灭力量被唤醒,太空变成了死神广阔的披风。
太阳系中的人们永远不会知道这一切,面对真相的,只有两双眼睛。'''
print('input: {}'.format(text))
s1 = SnowNLP(text)
# 分词
print("分词: {}".format(s1.words)) # ['《', '三', '体', '3:', '死', '神', '永生', '》', '与', '三', '体', '文', '明', '的', '战', '争', '使', '人', '类', '看', '到', '了', '宇', '宙', '黑', '暗', '的', '真', '相', ',', '地', '球', '文', '明', '像', '一', '个', '恐', '惧', '的', '孩', '子', ',', '熄', '灭', '了', '寻', '友', '的', '篝', '火', ',', '在', '暗', '夜', '中', '发', '抖', '。', '自', '以', '为', '历', '经', '沧', '桑', ',', '其', '实', '刚', '刚', '蹒', '跚', '学', '步', ';', '自', '以', '为', '悟', '出', '了', '生', '存', '竞', '争', '的', '秘', '密', ',', '其', '实', '还', '远', '没', '有', '竞', '争', '的', '资', '格', '。', '使', '两', '个', '文', '明', '命', '悬', '一', '线', '的', '黑', '暗', '森', '林', '打', '击', ',', '不', '过', '是', '宇', '宙', '战', '场', '上', '的', '一', '个', '微', '不', '足', '道', '的', '插', '曲', ',', '一', '个', '在', '战', '场', '上', '乱', '跑', '的', '无', '知', '孩', '童', '被', '堑', '壕', '中', '射', '杀', ',', '仅', '此', '而', '已', '。', '真', '正', '的', '星', '际', '战', '争', '没', '人', '见', '过', ',', '也', '不', '可能', '见到', '。', '因', '为', '战', '争', '的', '方', '式', '和', '武', '器', '已', '经', '远', '超', '出', '人', '类', '的', '想', '象', ',', '目', '睹', '战', '场', '之', '日', ',', '就', '是', '灭', '亡', '之时', '。', '人', '类', '没', '有', '想', '到', ',', '面', '对', '这', '巨', '大', '的', '存', '在', ',', '从', '社', '会', '学', '的', '结', '论', ',', '却', '可', '以', '推', '导', '出', '宇', '宙', '学', '的', '结', '果', '。', '宇', '宙', '的', '田', '园', '时', '代', '已', '经', '远', '去', ',', '那时', ',', '万', '物', '的', '之', '美', '曾', '昙', '花一现', ',', '现', '在', '已', '经', '变', '成', '任', '何', '大', '脑', '和', '智', '慧', '体', '都', '无', '法', '做', '出', '的', '梦', ',', '变', '成', '游', '吟', '诗', '人', '飘', '渺', '的', '残', '歌', ';', '宇', '宙', '的', '物', '竞', '天', '择', '已', '到', '了', '惨', '烈', '的', '时', '刻', ',', '在', '亿', '万', '光', '年', '暗', '无', '天', '日', '的', '战', '场', '上', ',', '深', '渊', '底', '层', '的', '毁', '灭', '力', '量', '被', '唤', '醒', ',', '太', '空', '变', '成', '了', '死', '神', '广', '阔', '的', '披', '风', '。', '太', '阳', '系', '中', '的', '人', '们', '永', '远', '不', '会', '知', '道', '这', '一', '切', ',', '面', '对', '真', '相', '的', ',', '只', '有', '两', '双', '眼', '睛', '。']
# 关键词
print("关键词: {}".format(s1.keywords(3))) # ['人', '战', '已']
原因
分词结果基本都是一个一个的字,导致关键词提取的时候也都是一个一个的关键字,查了一下发现是源码中的seg分词方法的问题,继承重写一下SnowNLP中的方法改为jieba分词就可以解决了
解决方法
# -*- coding: utf-8 -*-
# 导入SnowNLP库
from snownlp import *
import jieba
import re
class myNlp(SnowNLP):
def __init__(self, doc):
super().__init__(doc)
@property
def words(self):
return jieba.lcut(self.doc)
def keywords(self, limit=5, merge=False):
doc = []
sents = self.sentences
for sent in sents:
words = jieba.lcut(sent)
words = normal.filter_stop(words)
doc.append(words)
rank = textrank.KeywordTextRank(doc)
rank.solve()
ret = []
for w in rank.top_index(limit):
ret.append(w)
if merge:
wm = words_merge.SimpleMerge(self.doc, ret)
return wm.merge()
return ret
if __name__ == '__main__':
# ---------------------------------------------------------------------
text = u'''《三体3:死神永生》
与三体文明的战争使人类看到了宇宙黑暗的真相,地球文明像一个恐惧的孩子,熄灭了寻友的篝火,在暗夜中发抖。自以为历经沧桑,其实刚刚蹒跚学步;自以为悟出了生存竞争的秘密,其实还远没有竞争的资格。使两个文明命悬一线的黑暗森林打击,不过是宇宙战场上的一个微不足道的插曲,一个在战场上乱跑的无知孩童被堑壕中射杀,仅此而已。真正的星际战争没人见过,也不可能见到。因为战争的方式和武器已经远超出人类的想象,目睹战场之日,就是灭亡之时。
人类没有想到,面对这巨大的存在,从社会学的结论,却可以推导出宇宙学的结果。宇宙的田园时代已经远去,那时,万物的之美曾昙花一现,现在已经变成任何大脑和智慧体都无法做出的梦,变成游吟诗人飘渺的残歌;宇宙的物竞天择已到了惨烈的时刻,在亿万光年暗无天日的战场上,深渊底层的毁灭力量被唤醒,太空变成了死神广阔的披风。
太阳系中的人们永远不会知道这一切,面对真相的,只有两双眼睛。'''
print('input: {}'.format(text))
s1 = myNlp(text)
# 分词
print("分词: {}".format(s1.words)) # ['《', '三体', '3', ':', '死神', '永生', '》', 'n', 'u3000', 'u3000', '与', '三体', '文明', '的', '战争', '使', '人类', '看到', '了', '宇宙', '黑暗', '的', '真相', ',', '地球', '文明', '像', '一个', '恐惧', '的', '孩子', ',', '熄灭', '了', '寻友', '的', '篝火', ',', '在', '暗', '夜中', '发抖', '。', '自', '以为', '历经沧桑', ',', '其实', '刚刚', '蹒跚', '学步', ';', '自', '以为', '悟出', '了', '生存竞争', '的', '秘密', ',', '其实', '还远', '没有', '竞争', '的', '资格', '。', '使', '两个', '文明', '命悬', '一线', '的', '黑暗', '森林', '打击', ',', '不过', '是', '宇宙', '战场', '上', '的', '一个', '微不足道', '的', '插曲', ',', '一个', '在', '战场', '上', '乱跑', '的', '无知', '孩童', '被', '堑壕', '中', '射杀', ',', '仅此而已', '。', '真正', '的', '星际', '战争', '没人见', '过', ',', '也', '不', '可能', '见到', '。', '因为', '战争', '的', '方式', '和', '武器', '已经', '远', '超出', '人类', '的', '想象', ',', '目睹', '战场', '之', '日', ',', '就是', '灭亡', '之', '时', '。', 'n', 'u3000', 'u3000', '人类', '没有', '想到', ',', '面对', '这', '巨大', '的', '存在', ',', '从', '社会学', '的', '结论', ',', '却', '可以', '推导', '出', '宇宙学', '的', '结果', '。', '宇宙', '的', '田园', '时代', '已经', '远去', ',', '那时', ',', '万物', '的', '之', '美', '曾', '昙花一现', ',', '现在', '已经', '变成', '任何', '大脑', '和', '智慧', '体都', '无法', '做出', '的', '梦', ',', '变成', '游吟', '诗人', '飘渺', '的', '残歌', ';', '宇宙', '的', '物竞天择', '已到', '了', '惨烈', '的', '时刻', ',', '在', '亿万', '光年', '暗无天日', '的', '战场', '上', ',', '深渊', '底层', '的', '毁灭', '力量', '被', '唤醒', ',', '太空', '变成', '了', '死神', '广阔', '的', '披风', '。', 'n', 'u3000', 'u3000', '太阳系', '中', '的', '人们', '永远', '不会', '知道', '这', '一切', ',', '面对', '真相', '的', ',', '只有', '两双', '眼睛', '。']
# 关键词
print("关键词: {}".format(s1.keywords(3))) # ['宇宙', '战场', '文明']
最后
以上就是威武棉花糖为你收集整理的SnowNlp中文分词和中文关键词提取只能提取单个字不能提取分词的解决方法问题描述原因解决方法的全部内容,希望文章能够帮你解决SnowNlp中文分词和中文关键词提取只能提取单个字不能提取分词的解决方法问题描述原因解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复