文字分析--jieba中文分詞
分詞技術可以分為英文分詞和中文分詞:
對於英文分詞而言,由於英文單詞之間以空格來分隔,所以在進行英文分詞的過程中,只需要針對空格進行劃分就可以了。
對於中文分詞而言,中文單詞之間沒有英文單詞天然的空格來劃分,所以就需要對中文進行處理;主要有三種方式:一個是基於字典匹配的分詞方法,一個是基於語義分析的分詞演算法,還有一個是基於概率統計模型的分詞方法。
首先是jieba分詞語法:
# -*--coding:utf-8*-
import jieba
import jieba.analyse
stopwords = {}.fromkeys([line.rstrip() for line in open('stopkey_zh.txt')])
"""
jieba 中文分詞:
支援三種分詞模式:
精確模式:將句子最精確的分開,適合文字分析
全模式:把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義
搜尋引擎模式:在精確搜尋的基礎上,對長詞進行再次切分,提高召回率,適合用於搜尋引擎分詞
支援繁體分詞:
支援自定義詞典:
MIT授權協議
演算法:
基於字首詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)
採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合
對於未登入詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法
主要功能:
1、分詞
jieba.cut():三個引數,分詞的字串;cut_all用來控制是否採用全模式;HMM控制是否使用HMM模型
jieba.cut_for_search():兩個引數,分詞的字串;是否使用HMM模型;
上述兩個分詞方法都可以使用for迴圈來獲取分詞後的每個詞語。
jieba.lcut():直接返回list
jieba.lcut_for_search():直接返回list
jieba.Tokenizer(dictionary=DEFAULT_DICT):新建自定義分詞器
2、新增自定義詞典
jieba.load_userdict(file_name):file_name若為開啟的檔案,檔案必須為UTF8格式的
詞典格式與dict.txt一樣,一個詞佔一行,每一行分三部分:詞語、詞頻、詞性,用空格隔開
jieba.add_word():動態增加詞典
jieba.del_word():動態刪除詞典
jieba.suggeat_freq(segment, tune=True) 調節單個詞語的詞頻,True使其能夠分出來, False使其不能分出來
注意jieba預設的dict中的詞語,要結合預設dict進行中文分詞
3、關鍵詞提取
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=()):
sentence:待提取的文字
topK:返回幾個TF-IDF權重最大的關鍵詞,預設值為20
withWeight:是否一併返回關鍵詞權重值,預設值為False
allowPOS:僅包括指定詞性的詞,預設值為空
jieba.analyse.TFIDF(idf_path=None):
jieba.analyse.set_idf_path(file_name):
jieba.analyse.set_stop_words(file_name):
jieba.analyse.textrank(sentence, topK=20,withWeight=False,allowPOS=()):
jieba.analyse.TextRank():
4、詞性標註
jieba.posseg.POSTokenizer(tokenizer=None):
5、並行分詞
jieba.enable_parallel(4):開啟並行模式
jieba.disable_parallel():關閉並行模式
注意:並行分詞不能在windows下執行
6、Tokenize:返回詞語在原文的起止位置
jieba.tokenize():
7、ChineseAnalyzer for Whoosh 搜尋引擎
8、命令列分詞
"""
# 0、讀取文字
f = open('sentences.txt')
s = f.read()
print s
print type(s)
print '----------------------------------------------'
final = ''
for st in s:
# st = st.encode('utf8')
if st not in stopwords:
final += st
final += ' '
print final
print type(final)
print '----------------------------------------------'
# 1、分詞
seg_list = jieba.cut(s, cut_all=True) # 全模式
print '[01 Full Model]:' + '/'.join(seg_list)
print '--------------'
seg_list = jieba.cut(s, cut_all=False) # 精確模式
print '[02 Accuracy Model:]:' + '/'.join(seg_list)
print '--------------'
seg_list = jieba.cut(s, cut_all=False, HMM=True) # 精確模式,HMM模型
print '[03 Accuracy Model:]:' + '/'.join(seg_list)
print '--------------'
seg_list = jieba.cut(s) # 預設為精確模式
print '[04 Accuracy Model in Default:]:' + '/'.join(seg_list)
print '--------------'
seg_list = jieba.cut_for_search(s) # 搜尋引擎模式
print '[05 Search Engine Model:]:' + '/'.join(seg_list)
print '-----------------------------------------------'
# 2、新增自定義詞典
jieba.load_userdict('userdict.txt')
jieba.add_word('兩國元首') # 新增詞典
jieba.del_word('兩國元首') # 刪除詞典
jieba.suggest_freq(('日', '電'), True)
jieba.suggest_freq('日電', False)
words = jieba.cut(s) # 預設方式
print '/'.join(words)
print '-----------------------------------------------'
# 3、關鍵詞提取
# 基於TF-IDF演算法的關鍵詞提取
import jieba
import jieba.analyse
# # 關鍵詞提取
tags = jieba.analyse.extract_tags(s, topK=10) # 提取關鍵詞最高的10個詞
print ','.join(tags)
print '--------------'
# # 自定義逆向檔案頻率(IDF)語料庫
jieba.analyse.set_idf_path('../extra_dict/idf.txt.big')
tags = jieba.analyse.extract_tags(s, topK=10)
print ','.join(tags)
print '--------------'
# # 自定義停用詞(Stop words)文字語料庫
jieba.analyse.set_idf_path("../extra_dict/idf.txt.big")
tags = jieba.analyse.extract_tags(s, topK=10)
print ",".join(tags)
print '--------------'
# # 返回關鍵詞權重值
tags = jieba.analyse.extract_tags(s, topK=15, withWeight=True)
for tag in tags:
print 'tag:%s\t\t weight:%f' % (tag[0], tag[1]) # 輸出關鍵詞及其權重
print '--------------'
# 基於TextRank演算法的關鍵詞抽取
# 基本思想:
# 將待抽取關鍵詞的文字進行分詞
# 以固定視窗大小(預設為5,通過span屬性調整),詞之間的共現關係,構建圖
# 計算圖中節點的PageRank,注意是無向帶權圖
tags = jieba.analyse.textrank(s, topK=10)
print ','.join(tags)
print '-----------------------------------------------'
# 4、詞性標註
import jieba.posseg as pseg
words = pseg.cut('我愛北京天安門')
for word, flag in words:
print '%s %s' % (word, flag)
print '-----------------------------------------------'
print '-----------------------------------------------'
# 5、並行分詞
# file = open('QinCountry.txt') # 大秦帝國六部全集
# ss = file.read()
# print ss
# import time
# jieba.enable_parallel() # windows下不能並行處理
# t1 = time.time()
# seg_list = jieba.cut(ss)
# words = '/'.join(seg_list)
# t2 = time.time()
# cost = t2-t1
# print 'Cost Time:%s' % cost # Cost Time:61.7459998131
print '----------------------------------------------'
# 6、Tokenize 返回詞語在原文的起止位置,輸入引數只接受unicode
result = jieba.tokenize(s.decode('utf8'))
for t in result:
print 'word:%s\t\tstart:%s\t\tend:%s' % (t[0], t[1], t[2])
print '----------------------------------------------'
# 7、ChineseAnalyzer for Whoosh 搜尋引擎
# import jieba
# from jieba.analyse import ChineseAnalyzer
#
# analyser = ChineseAnalyzer()
# for t in analyzer("我的好朋友是李明;我愛北京天安門;IBM和Microsoft; I have a dream. this is intetesting and interested me a lot"):
# print t.text
文字:
sentences.txt
習近平同芬蘭總統尼尼斯托舉行會談
兩國元首共同宣佈建立中芬面向未來的新型合作伙伴關係
新華社赫爾辛基4月5日電(記者黃泳 陳贄 李建敏)國家主席習近平5日在赫爾辛基同芬蘭總統尼尼斯托舉行會談。兩國元首積極評價中芬建交67年來雙邊關係取得的長足進展,共同宣佈建立中芬面向未來的新型合作伙伴關係,表示雙方要加強政治互信,深化務實合作,造福兩國和兩國人民。
習近平強調,中國和芬蘭是相互尊重、平等相待、合作共贏的好朋友、好夥伴。兩國人民始終對彼此懷有友好感情。芬蘭人民正在開啟新的百年發展征程,中國人民也正在為實現“兩個一百年”奮鬥目標和中華民族偉大復興的中國夢而奮鬥。中芬兩國發展需求契合度很高。雙方要從戰略高度和長遠角度出發,牢牢把握住中芬關係正確發展方向,加強高層交往,增進戰略互信,鞏固好雙邊關係政治基礎,挖掘合作潛力,實現優勢互補,在各自發展道路上相互支援。
分詞結果:
注意:
jieba分詞器在處理中文分詞中是非常好的,但是,jieba分詞器預設的分詞語料庫dict.txt確存在問題:
dict.txt中存在許多單字,例如:”大”,”午”,”我”,而且給予單字的詞頻特別高,都具有萬以上的詞頻數,我們都知道詞頻與權重是成正比的,那麼在分詞的過程中就會優先處理這些單詞,而與其相關的詞語就會被忽略,這就導致分詞結果不準確的問題。
為了更好的使用jieba分詞,建議將dict.txt中的單字全部去掉,或者將其詞頻設定非常小。
相關推薦
文字分析--jieba中文分詞
分詞技術可以分為英文分詞和中文分詞: 對於英文分詞而言,由於英文單詞之間以空格來分隔,所以在進行英文分詞的過程中,只需要針對空格進行劃分就可以了。 對於中文分詞而言,中文單詞之間沒有英文單詞天然的空格來劃分,所以就需要對中文進行處理;
文字分析之中文分詞
在處理文字分析時,我們經常需要面臨的一個問題就是分詞,特別是在中國當前的IT環境下,大部分文字資料都是中文,中文和英文有一些不一樣,中文字與字之間沒有明顯的分隔符,而英文單詞與單詞之間有自然的空格符來分隔。中文分詞屬於自然語言處理的範疇,中文分詞廣泛應用於搜尋引
Python 文字挖掘:jieba中文分詞和詞性標註
#! /usr/bin/env python2.7 #coding=utf-8 import jieba import jieba.posseg #需要另外載入一個詞性標註模組 string = '其實大家買手機就是看個心情,沒必要比來比去的。' seg = jieba.posseg.cut(string
python安裝Jieba中文分詞組件並測試
圖片 class pypi setup.py bubuko for 中文 users mage python安裝Jieba中文分詞組件 1、下載http://pypi.python.org/pypi/jieba/ 2、解壓到解壓到python目錄下: 3、
Jieba中文分詞說明
結巴分詞介紹 現在開源的中文分詞工具,有IK、MMseg4j、THULAC、Ansj、Jieba、HanLP等,其中最近還在更新並維護的,也是目前分詞效果比較優秀的要屬於Ansj、Jieba、HanLP了。 之前我寫過Ansj分詞器的介紹說明部落格,現在細談
在PyCharm(Python整合開發環境)中安裝jieba中文分詞工具包
PyCharm IDE中,可以直接引入各種工具包。jieba中文分詞工具包安裝非常方便。 1、開啟Pycharm,點選左上角 >>File >>Settings。 2、在settings介面中點選Project :***(專案名稱) >
jieba.NET是jieba中文分詞的.NET版本(C#實現)。
jieba.NET是jieba中文分詞的.NET版本(C#實現)。 當前版本為0.38.2,基於jieba 0.38,提供與jieba一致的功能與介面,以後可能會在jieba基礎上提供其它擴充套件功能。關於jieba的實現思路,可以看看這篇wiki裡提到的資料。 如果
[python] 使用Jieba工具中文分詞及文字聚類概念
一. Selenium爬取百度百科摘要 簡單給出Selenium爬取百度百科5A級景區的程式碼: # coding=utf-8 """ Created on 2015-12-10 @author: Eastmount """ impo
python 讀寫txt文件並用jieba庫進行中文分詞
mage 亂碼 技術分享 流行 ictclas 函數 結果 class 配置 python用來批量處理一些數據的第一步吧。 對於我這樣的的萌新。這是第一步。 #encoding=utf-8 file=‘test.txt‘ fn=open(file,"r") print f
.NET Core中文分詞組件jieba.NET Core
搜索引擎特點支持三種分詞模式:精確模式,試圖將句子最精確地切開,適合文本分析;全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義。具體來說,分詞過程不會借助於詞頻查找最大概率路徑,亦不會使用HMM;搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。
python基礎===jieba模塊,Python 中文分詞組件
word cut 用法 地址 api mas 精確 == com api參考地址:https://github.com/fxsjy/jieba/blob/master/README.md 安裝自行百度 基本用法: import jieba #全模式 word = jie
Python中文分詞 jieba
問題 turn Coding windows 停用 分享圖片 詞典 ces text1 三種分詞模式與一個參數 以下代碼主要來自於jieba的github,你可以在github下載該源碼 import jieba seg_list = jieba.cut("我來到北京清
優秀的中文分詞jieba庫
不存在 分詞 png 搜索引擎 函數 inf alt TP eba jieba庫的簡介 jieba是優秀的中文分詞庫,中文文本需要通過分詞來獲的單個詞語。jieba庫提供了三種分詞模式:精確模式,全模式,搜索引擎模式。精確模式是將文本精確割分,不存在冗余。全模式是將文本中所
Python第三方庫jieba(結巴-中文分詞)入門與進階(官方文檔)
修改 demo 特點 pypi nlp CA 動態修改 tag 官方文檔 jieba “結巴”中文分詞:做最好的 Python 中文分詞組件。下載地址:https://github.com/fxsjy/jieba 特點 支持三種分詞模式: 精確模式,試圖將句子最精確地
機器學習-文字特徵值抽取,中文分詞
在文字特徵值抽取過程中,將用到jieba分詞 特點 支援三種分詞模式: 精確模式,試圖將句子最精確地切開,適合文字分析; 全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義。 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高
【NLP】【一】中文分詞之jieba
宣告:本文參考jieba官方文件而成,官方連結:https://github.com/fxsjy/jieba 【一】jieba安裝 pip install jieba 【二】jieba簡介 簡介可見jieba官方說明:https://pypi.org/project/jieba/
python中文分詞器(jieba類庫)
先上效果圖: 資料來源: 分詞後的txt檔案: 分詞後的excel檔案: 原始碼: #!/usr/bin/python # -*- coding: UTF-8 -*- # *************************************
中文分詞 jieba和HanLP
安裝python包: pip install nltk pip install jieba pip install pyhanlp pip install gensim 使用jieba進行分詞 import jieba content = "現如今,機器學習和深度學習帶動人工智
基於python的中文分詞庫:jieba
簡介 分詞共分三種模式: 精確模式: 試圖將句子最精確的切開 全模式:掃描出句子中所有可能的詞語,速度快 搜尋引擎模式:在精確模式的基礎上,對長詞再次切分適合用於搜尋引擎分詞 例子: import jieba string = '結巴這個分詞工具真的特別的
hanlp中文分詞、提取摘要關鍵字、語句分析、智慧推薦
hanlp資源: hanlp介紹:http://hanlp.linrunsoft.com/ hanlp下載:https://github.com/hankcs/HanLP hanlp(分詞)使用:https://blog.csdn.net/nima1994/article/details