封装汉语自然语言处理中的常用方法(附代码:生成中文词云)
生活随笔
收集整理的這篇文章主要介紹了
封装汉语自然语言处理中的常用方法(附代码:生成中文词云)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前敘
該文章寫作共花費二十分鐘,閱讀只需要七分鐘左右,讀完該文章后,你將學(xué)會使用少量代碼,將中文小說,中文新聞,或者其他任意一段中文文本生成詞云圖
背景
在進行漢語自然語言處理時候,經(jīng)常使用的幾個方法,分詞,清除停用詞,以及獲取新詞,為了方便使用我們將其封裝.
這樣我們就可以通過一行簡單的代碼獲取清除停用詞并和英語一樣分詞完畢,并以空格分割的漢語字符串,或者還可以獲得其他功能.
至于之所以加上這個例子,是因為之前寫的任意中文文本生成中文詞云代碼比較,不宜于使用,而這次發(fā)的最基礎(chǔ)版本的文件:FontCN_NLPtools.py 其功能完全是適宜于生成詞云的例子,這樣就可以通過少量代碼,獲取中文詞云
代碼結(jié)構(gòu)
結(jié)構(gòu)簡介
- class FontCN_NLPtools() - __init__(self, textPath, stopwordsPath): - def ReadText(self, NewTextPath=False): # 讀取文本,默認為初始化時傳入的文本 - def getNewWordsByNLPIR(self, number): # 自動發(fā)現(xiàn)單詞,這是其他類調(diào)用的方法 - def getNewWords(self, GetNewWordsNumber=20): # 獲取新的單詞,添加到self.__newWords,并將其返回 - def addUserWords(self, NewWordsList): # 向用戶詞庫self.__userWords 中添加新單詞 - def jiebaClearAndCutText(self, isAddWord=False): # 使用結(jié)巴清理停用詞并返回分詞字符串 - def NLPIRClearText(self, isAddWord=False): # 使用NLPIR清理停用詞 - def NLPIR2016CutText(self): # 使用NLPIR分詞 - def getText(self, isJieba=True, isAddWord=False, GetNewWordsNumber=30): # 直接獲取分詞完畢并清理停用詞后的中文字符串使用示例:
import FontCN_NLPtools as ftstext_path = 'txt/lztest.txt' # 設(shè)置要分析的文本路徑 stopwords_path = 'stopwords\CNENstopwords.txt' # 停用詞詞表fontsTools = fts.FontCN_NLPtools(textPath=text_path, stopwordsPath=stopwords_path)# fontsTools.addUserWords([u'路明非'])# 便捷的處理完畢的中文字符串 text = fontsTools.getText(isAddWord=True)# 處理第二段文本 fontsTools.ReadText(NewTextPath=u'E:\Pythonfiles2.7\NLP\漢語自然語言處理基本組件\txt\dazhuzai17523.txt')newText = fontsTools.getText(isAddWord=True)# 或者只調(diào)用一個方法,或者進行任意組合 fontsTools.ReadText(NewTextPath=u'E:\Pythonfiles2.7\NLP\漢語自然語言處理基本組件\txt\dazhuzai17523.txt')cutText = fontsTools.jiebaClearAndCutText() cutText2 = fontsTools.NLPIR2016CutText()# 在之后的版本中,我將會講NLPIR以及jieba或者其他自然語言處理的類庫進行高級封裝,這樣它將會更加簡潔,近期我將會直接將詞云生成功能封裝到該文件中,并在之后的時間內(nèi)在該code中陸續(xù)地添加其他新的功能,如果你有什么想法可以發(fā)送郵件給我:fonttian@gmail.com下載地址我的NLP源碼下載合集
例子,生成中文詞云
代碼閱讀說明
其結(jié)構(gòu)與之前代碼差距不大,仍然使用繪梨衣與路明非的圖片進行演示.
相較于之前的文章 Python詞云 wordcloud 十五分鐘入門與進階不同之處在于
代碼如下
# - * - coding: utf - 8 -*- # # 作者:田豐(FontTian) # 創(chuàng)建時間:'2017/7/28' # 郵箱:fonttian@Gmaill.com # CSDN:http://blog.csdn.net/fontthrone from os import path from scipy.misc import imread import matplotlib.pyplot as plt from wordcloud import WordCloud, ImageColorGenerator import sysreload(sys) sys.setdefaultencoding('utf-8')import FontCN_NLPtools as ftsd = path.dirname(__file__)text_path = 'txt/lztest.txt' # 設(shè)置要分析的文本路徑 stopwords_path = 'stopwords\CNENstopwords.txt' # 停用詞詞表fontsTools = fts.FontCN_NLPtools(textPath=text_path, stopwordsPath=stopwords_path) fontsTools.addUserWords([u'路明非']) text = fontsTools.getText(isAddWord=True)font_path = 'D:\Fonts\simkai.ttf' # 為worldcloud設(shè)置中文字體路徑?jīng)] back_coloring_path = "img/lz1.jpg" # 設(shè)置背景圖片路徑imgname1 = "WordCloudDefautColors.png" # 保存的圖片名字1(只按照背景圖片形狀) imgname2 = "WordCloudColorsByImg.png" # 保存的圖片名字2(顏色按照背景圖片顏色布局生成) back_coloring = imread(path.join(d, back_coloring_path)) # 設(shè)置背景圖片# 設(shè)置詞云屬性 wc = WordCloud(font_path=font_path, # 設(shè)置字體background_color="white", # 背景顏色max_words=2000, # 詞云顯示的最大詞數(shù)mask=back_coloring, # 設(shè)置背景圖片max_font_size=100, # 字體最大值random_state=42,width=1000, height=860, margin=2, # 設(shè)置圖片默認的大小,但是如果使用背景圖片的話,那么保存的圖片大小將會)# 生成詞云, 可以用generate輸入全部文本(wordcloud對中文分詞支持不好,建議啟用中文分詞),也可以我們計算好詞頻后使用generate_from_frequencies函數(shù) wc.generate(text) # 從背景圖片生成顏色值 image_colors = ImageColorGenerator(back_coloring)plt.figure() # 以下代碼顯示圖片 plt.imshow(wc) plt.axis("off") plt.show() # 繪制詞云# 保存圖片 wc.to_file(path.join(d, imgname1))image_colors = ImageColorGenerator(back_coloring)plt.imshow(wc.recolor(color_func=image_colors)) plt.axis("off") # 繪制背景圖片為顏色的圖片 plt.figure() plt.imshow(back_coloring, cmap=plt.cm.gray) plt.axis("off") plt.show() # 保存圖片 wc.to_file(path.join(d, imgname2))效果如下
總結(jié)
以上是生活随笔為你收集整理的封装汉语自然语言处理中的常用方法(附代码:生成中文词云)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BigData预处理(完整步骤)
- 下一篇: 使用NLPIR 进行中文分词并标注词性