import jiagu
dir(jiagu)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__path__',
'__spec__',
'analyze',
'any',
'cluster',
'cut',
'cws',
'findword',
'init',
'keywords',
'knowledge',
'load_model',
'load_userdict',
'mmseg',
'ner',
'perceptron',
'pos',
'seg',
'segment',
'sentiment',
'summarize',
'text_cluster',
'textrank',
'utils']
text = '中国是个伟大的国家,有悠久的人文历史和美丽的自然风景。'
words_jia = jiagu.seg(text)
print('普通分词:{}'.format(words_jia))
jiagu.load_userdict(['人文历史','自然风景'])
words_jia = jiagu.seg(text)
print('使用自定义词典:{}'.format(words_jia))
pos_jia = jiagu.pos(words_jia)
print('词性标注:{}'.format(pos_jia))
ner_jia = jiagu.ner(words_jia)
print('命名体识别:{}'.format(ner_jia))
普通分词:['中国', '是', '个', '伟大', '的', '国家', ',', '有', '悠久', '的', '人文', '历史', '和', '美丽', '的', '自然', '风景', '。']
使用自定义词典:['中国', '是', '个', '伟大', '的', '国家', ',', '有', '悠久', '的', '人文历史', '和', '美丽', '的', '自然风景', '。']
词性标注:['ns', 'vl', 'q', 'a', 'u', 'n', 'w', 'v', 'a', 'u', 'n', 'c', 'a', 'u', 'n', 'w']
命名体识别:['B-LOC', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
text_1 = '''
如果NBA复赛,没有球迷在现场观战,那么NBA可能会在一个中立场地进行比赛。萧华表示,NBA目前已经和多个联邦行政辖区进行联系,他们有兴趣在可行的情况下举办NBA剩余的比赛。“我们体育领域,从某种程度上来说,引领了这股关门风潮,我们很乐意成为经济重启的一部分。”尽管如此,萧华一再强调,健康问题仍然是最为重要的。
'''
keywords = jiagu.keywords(text_1, 5)
print('关键词提取:{}'.format(keywords))
关键词提取:['NBA', '进行', '华', '最为', '重启']
summarys = jiagu.summarize(text_1, 1)
print('摘要提取:{}'.format(summarys))
摘要提取:['萧华表示,NBA目前已经和多个联邦行政辖区进行联系,他们有兴趣在可行的情况下举办NBA剩余的比赛。']
jiagu.findword('input.txt', 'output.txt')
# 短句的情感分析
print("短句的情感分析对比:")
text_2 = '中国是个国家'
print(jiagu.sentiment(text_2))
text_3 = '中国是个伟大的国家'
print(jiagu.sentiment(text_3))
text_4 = '中国是个特别伟大的国家'
print(jiagu.sentiment(text_4))
text_5 = '中国是个特别特别伟大的国家'
print(jiagu.sentiment(text_5))
print('----------------------------------')
text_6= '他是个娃娃'
print(jiagu.sentiment(text_6))
text_7= '他是个坏娃娃'
print(jiagu.sentiment(text_7))
text_8= '他是个特别坏的娃娃'
print(jiagu.sentiment(text_8))
text_9= '他是个特别坏特别坏的娃娃'
print(jiagu.sentiment(text_9))
短句的情感分析对比:
('positive', 0.61433420704697)
('positive', 0.7502516417532771)
('positive', 0.8110657430727961)
('positive', 0.8598380100371134)
----------------------------------
('negative', 0.5268881113343099)
('negative', 0.6586270942989488)
('negative', 0.7330309706687305)
('negative', 0.7689844775458575)
print("长句的情感分析")
text_long = '城管打人这种事是3方的责任,不能单独怪哪一方,所以老李的做法是对的'
print(jiagu.sentiment(text_long))
print(jiagu.sentiment(text_1))
长句的情感分析
('negative', 0.9904310868486728)
('negative', 0.9999994586055012)
from snownlp import SnowNLP
dir(SnowNLP)
['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'han',
'idf',
'keywords',
'pinyin',
'sentences',
'sentiments',
'sim',
'summary',
'tags',
'tf',
'words']
s = SnowNLP(text)
words_snow = s.words
tag_snow = s.tags
pinyin_snow = s.pinyin
text_fan = '中國是個偉大的國家,有悠久的人文歷史和美麗的自然風景'
s_fan = SnowNLP(text_fan)
han_snow = s_fan.han
print('分词:{}'.format(words_snow))
print('标注:{}'.format([x for x in s.tags]))
print('拼音:{}'.format(pinyin_snow))
print('繁体:{}'.format(han_snow))
分词:['中国', '是个', '伟大', '的', '国家', ',', '有', '悠久', '的', '人文', '历史', '和', '美丽', '的', '自然', '风景', '。']
标注:[('中国', 'ns'), ('是个', 'd'), ('伟大', 'a'), ('的', 'u'), ('国家', 'n'), (',', 'k'), ('有', 'v'), ('悠久', 'a'), ('的', 'u'), ('人文', 'n'), ('历史', 'n'), ('和', 'c'), ('美丽', 'a'), ('的', 'u'), ('自然', 'a'), ('风景', 'n'), ('。', 'w')]
拼音:['zhong', 'guo', 'shi', 'ge', 'wei', 'da', 'de', 'guo', 'jia', ',', 'you', 'you', 'jiu', 'de', 'ren', 'wen', 'li', 'shi', 'he', 'mei', '丽', 'de', 'Zi', 'ran', 'feng', 'jing', '。']
繁体:中国是个伟大的国家,有悠久的人文历史和美丽的自然风景
s = SnowNLP(text_1)
print('关键词提取:{}'.format(s.keywords(5)))
print('摘要提取:{}'.format(s.summary(1)))
关键词提取:['NBA', '比赛', '举办', '下', '情况']
摘要提取:['那么NBA可能会在一个中立场地进行比赛']
# 短句的情感分析
print("短句的情感分析对比:")
s_2 = SnowNLP('中国是个国家')
print(s_2.sentiments)
s_3 = SnowNLP('中国是个伟大的国家')
print(s_3.sentiments)
s_4 = SnowNLP('中国是个特别伟大的国家')
print(s_4.sentiments)
s_5 = SnowNLP('中国是个特别特别伟大的国家')
print(s_5.sentiments)
print('----------------------------------')
s_6 = SnowNLP('他是个娃娃')
print(s_6.sentiments)
s_7 = SnowNLP('他是个坏娃娃')
print(s_7.sentiments)
s_8 = SnowNLP('他是个特别坏的娃娃')
print(s_8.sentiments)
s_9 = SnowNLP ('他是个特别坏特别坏的娃娃')
print(s_9.sentiments)
短句的情感分析对比:
0.8728697002957693
0.9251654813275408
0.9049709527124196
0.9296199977830963
----------------------------------
0.7499999999999999
0.5755448639236871
0.6528651688802549
0.5410827799493567
print("长句的情感分析")
text_long = '城管打人这种事是3方的责任,不能单独怪哪一方,所以老李的做法是对的'
s_10 = SnowNLP(text_long)
s_11 = SnowNLP(text_1)
print(s_10.sentiments)
print(s_11.sentiments)
text_long_1 = '外观看起来很好,就是快递太慢了,还得自己取货,手机电池不经用玩了一个小时斗地主就没电了,没有介绍的那么好,请慎重购买。手机死机,卡屏,屏幕没反应,电池不耐用'
s_12 = SnowNLP(text_long_1)
print(s_12.sentiments)
长句的情感分析
0.07552097579759087
0.9999999410019155
0.0009777685840687278
可以看出,与jiagu相比,snownlp的情感分析更准确。
import jieba
dir(jieba)
['DEFAULT_DICT',
'DEFAULT_DICT_NAME',
'DICT_WRITING',
'PY2',
'Tokenizer',
'__builtins__',
'__cached__',
'__doc__',
'__file__',
'__license__',
'__loader__',
'__name__',
'__package__',
'__path__',
'__spec__',
'__version__',
'_compat',
'_get_abs_path',
'_lcut',
'_lcut_all',
'_lcut_for_search',
'_lcut_for_search_no_hmm',
'_lcut_no_hmm',
'_pcut',
'_pcut_for_search',
'_replace_file',
'absolute_import',
'add_word',
'calc',
'check_paddle_install',
'cut',
'cut_for_search',
'default_encoding',
'default_logger',
'del_word',
'disable_parallel',
'dt',
'enable_paddle',
'enable_parallel',
'finalseg',
'get_DAG',
'get_FREQ',
'get_dict_file',
'get_module_res',
'initialize',
'iteritems',
'iterkeys',
'itervalues',
'lcut',
'lcut_for_search',
'load_userdict',
'log',
'log_console',
'logging',
'marshal',
'md5',
'os',
'pkg_resources',
'pool',
're',
're_eng',
're_han_default',
're_skip_default',
're_userdict',
'resolve_filename',
'setLogLevel',
'set_dictionary',
'strdecode',
'string_types',
'suggest_freq',
'sys',
'tempfile',
'text_type',
'threading',
'time',
'tokenize',
'unicode_literals',
'user_word_tag_tab',
'xrange']
jieba.enable_paddle()# 启动paddle模式。 0.40版之后开始支持,早期版本不支持
strs=["我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]
for str in strs:
seg_list = jieba.cut(str,use_paddle=True) # 使用paddle模式
print("Paddle Mode: " + '/'.join(list(seg_list)))
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print("/".join(seg_list))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print("/ ".join(seg_list))
Paddle enabled successfully......
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Smile\AppData\Local\Temp\jieba.cache
Paddle Mode: 我/来到/北京清华大学
Paddle Mode: 乒乓球/拍卖/完/了
Paddle Mode: 中国科学技术大学
Loading model cost 0.581 seconds.
Prefix dict has been built successfully.
Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
Default Mode: 我/ 来到/ 北京/ 清华大学
他/来到/了/网易/杭研/大厦
小明/ 硕士/ 毕业/ 于/ 中国/ 科学/ 学院/ 科学院/ 中国科学院/ 计算/ 计算所/ ,/ 后/ 在/ 日本/ 京都/ 大学/ 日本京都大学/ 深造
import jieba
import jieba.posseg as pseg
words = pseg.cut("我爱北京胡同") #jieba默认模式
jieba.enable_paddle() #启动paddle模式。 0.40版之后开始支持,早期版本不支持
words = pseg.cut("我爱北京胡同",use_paddle=True) #paddle模式
for word, flag in words:
print('%s %s' % (word, flag))
Paddle enabled successfully......
我 r
爱 v
北京 LOC
胡同 LOC
基于 TF-IDF 算法的关键词抽取
基于 TextRank 算法的关键词抽取
import jieba.analyse
# 基于TF-IDF
a = jieba.analyse.extract_tags(text_1,topK = 5)
print("基于TF-IDF:{}".format(a))
# 基于TextRank
b = jieba.analyse.textrank(text_1,topK = 5)
print("基于TextRank:{}".format(b))
基于TF-IDF:['NBA', '萧华', '比赛', '复赛', '一再强调']
基于TextRank:['进行', '比赛', '观战', '球迷', '没有']