去停用詞
統計詞頻
生成英文詞云
先將文件讀入,然後全部變為小寫
txt=
open
("english.txt"
,"r"
).read(
) txt = txt.lower(
)#將英文全部變為小寫
中文分詞需要專門的方法:
英文分詞就可以直接使用word_tokenize()進行分詞
text=
"this is a text for test.and i want to learn how to use nltk."
words = nltk.word_tokenize(text)
#分詞
把不影響詞性的inflection的詞綴砍掉
例如 :walking 砍掉ing=>walk
有三種方式,
lancasterstemmer()和porterstemmer(),snowballstemmer(),比較常用的是 porter 提取演算法。
lancaster演算法
from nltk.stem.lancaster import lancasterstemmer
lancaster_stemmer=lancasterstemmer(
)print
(lancaster_stemmer.stem(
'maximum'))
print
(lancaster_stemmer.stem(
'multiply'
))
porter提取演算法
from nltk.stem.poter import porterstemmer
porter_stemmer = porterstemmer(
)print
(porter_stemmer.stem(
'maximum'))
print
(porter_stemmer.stem(
'multiply'
))
snowball提取演算法
from nltk.stem import snowballstemmer
snowball_stemmer=snowballstemmer(
"english"
)print
(snowball_stemmer.stem(
'maximum'))
print
(snowball_stemmer.stem(
'multiply'
))
把單詞的各種形式都歸一,
例如:went 歸一 => go are 歸一 => be
詞形還原預設單詞是名詞,所以在進行歸一之前,要求手動註明詞性,否則可能會有問題。因此一般先要分詞、詞性標註,再詞性還原。
from nltk.stem import wordnetlemmatizer
wnl = wordnetlemmatizer(
)print
(wnl.lemmatize(
'men'
,'n'))
print
(wnl.lemmatize(
'ate'
,'v'))
print
(wnl.lemmatize(
'saddest'
,'a'
))
使用nltk.pos_tag可以輸出對應詞的詞性
import nltk
text=nltk.word_tokenize(
'what does the beautiful fox say'
)print
(text)
print
(nltk.pos_tag(text)
)
輸出類似與:
(
'sentiment'
,'nn'),
('analysis'
,'nn'),
('challenging'
,'vbg'),
('subject'
,'jj'
),
import nltk
from nltk.corpus import stopwords
word_list=nltk.word_tokenize(
'what does the beautiful fox say'
)#去停用詞
filter_words=
[word for word in word_list if word not
in stopwords.words(
'english')]
print
(filter_words)
去除停用詞後可以進行統計詞頻
使用freqdist(tokens)統計詞頻:
freq_dist = nltk.freqdist(filter_words)
for k,v in freq_dist.items():
print
(str
(k)+
':'+
str(v)
# 把最常見的50個單詞拿出來
standard_freq_vector = freq_dist.most_common(50)
print
(standard_freq_vector)
清除停用詞之後,生成詞云
from wordcloud import wordcloud
import matplotlib.pyplot as plt
wordcloud = wordcloud(
background_color=
"white"
,#設定背景為白色,預設為黑色
width=
1500
,#設定的寬度
height=
960,
#設定的高度
margin=
10#設定的邊緣
).generate(
str(filter_words)
)#清除停用詞後生成詞云
# 繪製
plt.imshow(wordcloud)
# 消除座標軸
plt.axis(
"off"
)# 展示
plt.show(
)# 儲存
wordcloud.to_file(
'my_test2.png'
)
使用nltk進行文字預處理
coding utf 8 import nltk import re import string from nltk.corpus import brown from nltk.book import from nltk.tokenize import wordpuncttokenizer prin...
使用Thuctc進行中文文字分類應用
public static void createmodel int kind,string bootpath public void runclasstrainandtest int kind,double train per,double test per,int symbol 將儲存好的模型拿...
C 統計英文文字中的單詞數並排序
思路如下 1.使用的hashtable 高效 集合,記錄每個單詞出現的次數 2.採用arraylist對hashtable中的keys按字母序排列 3.排序使用插入排序 穩定 public void statisticswords string path hashtable ht new hasht...