2020 12 13 NLP 中文短文本分類

2021-10-12 02:35:24 字數 2672 閱讀 7818

nlp 中文短文本分類

wordcloud 製作詞云

import jieba

import pandas as pd

import numpy as np

from scipy.misc import imread

from wordcloud import wordcloud,imagecolorgenerator

import matplotlib.pyplot as plt

#定義檔案路徑

dir = "d://programdata//pythonworkspace//study//"

#定義語料檔案路徑

file = "".join([dir,"z_m.csv"])

#定義停用詞檔案路徑

stop_words = "".join([dir,"stopwords.txt"])

#定義wordcloud中字型檔案的路徑

simhei = "".join([dir,"simhei.ttf"])

#讀取語料

df = pd.read_csv(file, encoding='utf-8')

df.head()

#如果存在nan,刪除

df.dropna(inplace=true)

#將content一列轉為list

content=df.content.values.tolist()

#用jieba進行分詞操作

segment=

for line in content:

try:

segs=jieba.cut_for_search(line)

segs = [v for v in segs if not str(v).isdigit()]#去數字

segs = list(filter(lambda x:x.strip(), segs)) #去左右空格

#segs = list(filter(lambda x:len(x)>1, segs)) #長度為1的字元

for seg in segs:

if len(seg)>1 and seg!='\r\n':

except:

print(line)

continue

#分詞後加入乙個新的dataframe

words_df=pd.dataframe()

#載入停用詞

stopwords=pd.read_csv(stop_words,index_col=false,quoting=3,sep="\t",names=['stopword'], encoding='utf-8')

#安裝關鍵字groupby分組統計詞頻,並按照計數降序排序

words_stat=words_df.groupby(by=['segment'])['segment'].agg()

words_stat=words_stat.reset_index().sort_values(by=["計數"],ascending=false)

#分組之後去掉停用詞

words_stat=words_stat[~words_stat.segment.isin(stopwords.stopword)]

#下面是重點,繪製wordcloud詞云,這一提供2種方式

#第一種是預設的樣式

wordcloud=wordcloud(font_path=simhei,background_color="white",max_font_size=80)

word_frequence =

wordcloud=wordcloud.fit_words(word_frequence)

plt.imshow(wordcloud)

wordcloud.to_file(r'wordcloud_1.jpg') #儲存結果

#第二種是自定義

text = " ".join(words_stat['segment'].head(100).astype(str))

abel_mask = imread(r"china.jpg") #這裡設定了一張中國地圖

wordcloud2 = wordcloud(background_color='white', # 設定背景顏色

mask = abel_mask, # 設定背景

max_words = 3000, # 設定最大現實的字數

font_path = simhei, # 設定字型格式

width=2048,

height=1024,

scale=4.0,

max_font_size= 300, # 字型最大值

random_state=42).generate(text)

# 根據生成詞云顏色

image_colors = imagecolorgenerator(abel_mask)

wordcloud2.recolor(color_func=image_colors)

# 以下**顯示

plt.imshow(wordcloud2)

plt.axis("off")

plt.show()

wordcloud2.to_file(r'wordcloud_2.jpg') #儲存結果

NLP中文短文字處理記錄(一)

nlp短文字處理 nlp之文字清洗 nlp一些常用詞 待讀文章 第二天學習 寫 前要想好資料該用什麼格式輸出,最好在紙上畫出來,然後想如何能實現 read csv 讀取含中文的csv檔案時,encoding utf 8 或 gb18030 會遇到有的行無法讀出,增加引數error bad lines...

中文NLP知識總結

一 詞袋模型 分詞 去停用詞 消除數字 英文,得到若干詞語的集合。二 詞典 詞語和其索引id的一一對應關係。假設共有n個詞語。三 one hot編碼 在詞典基礎上,分詞之後的文章的詞頻向量。可以看成是m n的單詞 文件矩陣a。a i,j 第i篇文章中詞典索引為j的詞語出現的次數,即詞頻tf。refe...

nlp 中文資料預處理

資料載入 預設csv格式 import pandas as pd datas pd.read csv test.csv header 0,index col 0 dataframe n datas data.to numpy ndarray 轉成numpy更好處理 個人喜好 去除空行def dele...