結巴分詞+詞性標註(電子病歷資料)
阿新 • • 發佈:2018-12-21
結巴分詞+詞性標註
方法一:只使用python中的jieba分詞以及詞性標註工具
示例文字:
加入自定義詞典
程式碼
import jieba import jieba.posseg as pseg import re filename='seglist.txt' fileneedcut='result.txt' f=open(filename,'w+',encoding='utf-8') fn=open(fileneedcut,'r',encoding='utf-8') #jieba.load_userdict(file_name) jieba.load_userdict('mydict.txt') for eachline in fn: line=eachline.strip() #words=jieba.cut(line,cut_all=False) #words=[word.encode('utf-8') for word in words] words = pseg.cut(line) for word,flag in words: f.writelines(word + ' ' + flag + '\n') f.close() fn.close()
執行結果:
tp
方法二:jieba分詞+哈工大詞性標註pyltp
示例文字
程式碼
import jieba from pyltp import Postagger import os MODELDIR = "ltp_data" def fenci_ltp(): fin = open('result.txt', 'r',encoding='utf-8') # 需要進行分詞的檔案,每行一句話 f=open('seglist.txt','w+',encoding='utf-8') jieba.load_userdict('mydict.txt') postagger = Postagger() # 初始化例項 postagger.load(os.path.join(MODELDIR, "pos.model")) # 載入模型 for eachLine in fin: line = eachLine.strip() words = jieba.cut(line) # jieba分詞返回的是可迭代的generator,裡面的詞是unicode編碼 words = [word for word in words] # 將unicode編碼的單詞以utf-8編碼 postags = postagger.postag(words) # 詞性標註 #words_postags = [] for word,postag in zip(words, postags): #words_seg=words_postags.append(word + '/' + postag) #for word in words_seg: f.writelines(word + ' ' + postag + '\n') #print(' '.join(words_postags)) postagger.release() # 釋放模型 if __name__ == '__main__': fenci_ltp()
執行結果
執行結果對比
1.總體來說,jieba分詞和詞性標註的結果相對比較靠譜。如"明顯好轉",jieba詞性標註結果為“i 成語”,ltp標註為“v 動詞”。
2.兩種詞性標註都存在前後詞性不一致的現象。
3.也可以在使用者自定義字典中加入新的詞性分類,比如disease/drug等,對專業詞性進行擴充套件。
繼續琢磨琢磨有沒有更好的詞性標註工具可以使用。