[純分享3] "jieba" 中文分詞(順便講講"模糊比對"和"詞性")
文章推薦指數: 80 %
這篇文章會簡單介紹一下jieba 這個套件基本上他的官網就是中文的大家用起來應該不會有問題不過我自己有寫兩 ... import jieba.posseg #包含詞性的函數
新手小白用Python來做資料分析是否搞錯了什麼
跳到主文
這裡有PythonR量化交易以及新手成長的點點滴滴
部落格全站分類:不設分類
相簿
部落格
留言
名片
Oct18Thu201820:31
[純分享3]"jieba"中文分詞(順便講講"模糊比對"和"詞性")
這篇文章會簡單介紹一下jieba這個套件
基本上他的官網就是中文的大家用起來應該不會有問題
不過我自己有寫
兩個fun來做一些應用 講講"模糊比對"和"詞性"
安裝:
我是打 pip3installjieba 就可以簡單安裝了
講一下簡單的範例
## 大概會用到的幾個套件
importjieba #包含主要的函數
importjieba.posseg #包含詞性的函數
importjieba.analyse #包含抓關鍵字但我沒用上~
importre #標準表示式的套件
importnumpyasnp #小白習慣性用的XD
##官方範例~
#jieba.cut是最基本的切詞方法
seg_list=jieba.cut("我来到北京清华大学",cut_all=True)
print("FullMode:"+"/".join(seg_list)) #全模式
seg_list=jieba.cut("我来到北京清华大学",cut_all=False)
print("DefaultMode:"+"/".join(seg_list)) #精确模式 #默认是精确模式
#他有一個搜索引擎模式 cut_for_search 但我覺得不好用XD
#因為它會搜出一大堆字反而不好處理
#除非你之後的處理能更厲害的辨識出哪些是你要的詞
#不然用精确模式就好啦
seg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") #搜索引擎模式
print(",".join(seg_list))
#跑出來的結果~
#給然 cut_for_search的會將類似的字都搜出來一大堆
#另外~在cut前面加一個l =>lcut
#他跑出來的就會是一個list
#新手小白比較習慣用list所以很推薦!!
qq='我愛中華民國的土地和房子'
words=jieba.cut(qq)
print(words) ##出來是generator
print(type(words))
words=jieba.lcut(qq) ##出來是list
print(words)
print(type(words))
##最後試試怎麼抓詞性吧
##使用的就是 jieba.posseg 的套件一樣有cut和lcut
##不一樣的就是他會是一個pairs
words=jieba.posseg.lcut("我爱北京天安门")
forword,flaginwords:
print('%s%s'%(word,flag))
##分別是切出來的詞和詞性
##你可以看到r是主詞v是動詞ns是名詞
##他分得蠻細的
##有興趣可以參考這篇文章有提到這些代號是甚麼詞
## https://blog.csdn.net/li_31415/article/details/48660073
#最後看看我的範例吧~~
#我這邊練習寫一個模擬比對的函數
# 然後把一段文字的名詞抓出來(nrns...有n的都抓出來)
#先建一個比對函數
#------------------------------------------------
##輸入的user_input是一個字串,collection則是我要比對的一個字串list
deffuzzyfinder(user_input,collection):
suggestions=[]
pattern='.*'.join(user_input)#Converts'djm'to'd.*j.*m'
regex=re.compile(pattern) #Compilesaregex.
foritemincollection:
match=regex.search(item) #Checksifthecurrentitemmatchestheregex.
ifmatch:
suggestions.append(item)
returnsuggestions
##輸出的是list表示我比對出了那些字串(注意喔!會有重複的)
#------------------------------------------------
##跑跑看
user_input='n'
collection=['r','nr','rn','n','n']
OUT=fuzzyfinder(user_input,collection)
print(OUT)
###接下來利用上面的function
###寫出可以抓出名詞的function
defwords(qq):
seg_list=jieba.lcut(qq,cut_all=False)
print("DefaultMode:"+"/".join(seg_list))
words=jieba.posseg.lcut(qq)
collection=[]
wordcollection=[]
forword,flaginwords:
#print('%s%s'%(word,flag))
wordcollection.append(word) ##字體
collection.append(flag) ##詞性
####比對函數用在這邊
ind=fuzzyfinder('n',collection) ##ind為主詞的list如['n','n','nr']
qqq=[]
####接下來這段我卡了很久
####因為.index只會把第一個遇到n的位置報出來
####所以我逼不得已加了remove讓他把遇到的n砍掉
####砍掉後我再把他的位置加ii就是每砍幾次加幾次啦~
foriiinnp.arange(len(ind)):
qqq.append(int(collection.index(ind[ii]))+ii) ##配合下面的remove+ii
collection.remove(ind[ii]) ##每次去掉一個掃過的名詞位置,避免重複抓到同一個位置
#print( qqq )
text=[]
foriiinset(qqq): ##防呆還是加了unique
text.append(wordcollection[ii])
returntext ##最後回傳字串list
最後跑個範例吧~~
qq=words('我愛中華民國的土地和房子')
qq
###看起來很成功喔~~
今天的分享就到這邊啦~~
code一樣放在這: http://ge.tt/3h3Ffqp2
檔名是: wordsBloge
新手小白之路持續進行!!
文章標籤
新手
小白
python
入門
全站熱搜
創作者介紹
Markjong001
新手小白用Python來做資料分析是否搞錯了什麼
Markjong001發表在痞客邦留言(0)人氣()
E-mail轉寄
全站分類:數位生活個人分類:Python科技應用此分類上一篇:[純分享2]用Python來做"聲音轉文字"(使用"SpeechRecognition"和"pyaudio")
此分類下一篇:[純分享4]真.pytocsv用"auto-py-to-exe"解決"RecursionError:maximumrecursiondepthexceeded"
上一篇:[Python來爬蟲系列文5]用python爬html檔(以"季報"資料為例)(順便介紹"os.path"抓"現行目錄"喔)
下一篇:Python量化分析的好利器"TA-Lib"
▲top
留言列表
發表留言
最新文章
熱門文章
文章分類
Python科技應用(6)統計資料分析(2)Python量化分析(10)R(6)Python(11)未分類文章(1)
文章搜尋
QRCode
參觀人氣
本日人氣:
累積人氣:
活動快報
桂格醇濃美味招募中
「真的好好喝!」每天都來杯最純淨的美味吧!取自10...
看更多活動好康
我的好友
最新留言
動態訂閱
文章精選
文章精選
2019十月(1)
2018十二月(2)
2018十一月(4)
2018十月(8)
2018九月(4)
2018八月(3)
2018七月(6)
2018六月(5)
2018五月(3)
所有文章列表
站方公告
[公告]2022年度農曆春節期間服務公告[公告]MIB廣告分潤計劃、PIXwallet錢包帳戶條款異動通知[公告]2021年度農曆春節期間服務公告
新聞交換(RSS)
誰來我家
POWEREDBY
(登入)
{{article.user_name}}
{{article.timestamp*1000|date:'MMM.dd.y.hh.mm'}}
{{article.title}}
{{article.content}}
我要留言
回到頁首
回到主文
免費註冊
客服中心
痞客邦首頁
©2003-2022PIXNET
關閉視窗
PIXNET
Facebook
Yahoo!
Google
MSN
{{guestName}}
(登出)
您尚未登入,將以訪客身份留言。
亦可以上方服務帳號登入留言
請輸入暱稱(最多顯示6個中文字元)
請輸入標題(最多顯示9個中文字元)
請輸入內容(最多140個中文字元)
請輸入左方認證碼:
看不懂,換張圖
請輸入驗證碼
送出留言
延伸文章資訊
- 1lcut、posseg.cut - jieba的几个分词接口 - CSDN博客
posseg jieba.posseg.cut(s) # <generator object cut at 0x10cc80eb0> list(jieba ...
- 2Python - 知名Jieba 中文斷詞工具教學
透過jiba.posseg.cut () 可以將句子中的每個斷詞進行詞性標註。 程式碼:. 1 2 3, words = ...
- 3jieba 词性标注& 并行分词| 计算机科学论坛 - LearnKu
jieba 词性标注# 新建自定义分词器jieba.posseg.POSTokenizer(tokenizer=None) # 参数可指定内部使用的jieba.Tokenizer 分词器。 ji...
- 4jieba之posseg(詞性標註) - 程式人生
import jieba.posseg as pseg import jieba #詞性標註也叫詞類標註。POS tagging是part-of-speech tagging的縮寫 string...
- 5[純分享3] "jieba" 中文分詞(順便講講"模糊比對"和"詞性")
這篇文章會簡單介紹一下jieba 這個套件基本上他的官網就是中文的大家用起來應該不會有問題不過我自己有寫兩 ... import jieba.posseg #包含詞性的函數