python文本挖掘中文
『壹』 python excel 文本挖掘
兩個簡單思路給你
把xls保存搜塵成csv,用世散禪csv模塊讀取,然後python完全處理
使用xlrd直接掘含讀取,然後python處理
『貳』 如何python提取txt文檔裡面全部的中文和中文符號,並且保存為新的txt文檔
用beautifulsoup處理啊,去除英文和符號就是中文啦
importre
zhongwen=re.sub(r'[w<>/,=:"']','',text')
『叄』 手機評論文本挖掘與數據分析(Python)
目的
各大電商競爭越來激烈,為了提升客戶服務質量,除了打價格戰外,了解客戶的需求點,對消費者的文本評論進行數據挖掘,傾聽客戶的心聲越來越重要。
工具
1、貝殼採集器
2、Google瀏覽器
3、Python3.7 + Pycharm
數據採集
①本文對京東平台的手機進行爬蟲,首先進入京東商城,選擇一款手機,這里以華為Mate 30 Pro 5G為例
②在採集平台輸入網址,點擊貝殼採集開始配置信息
③因為是戚渣讓採集評論所以還需要進行下預操作配置切換頁面:點擊預操作按鈕-->添加梁返點擊元素按鈕-->左鍵點擊流程圖中添加元素按鈕(懸浮顯示操作鍵)-->點擊懸浮顯示操作鍵<選擇按鈕> -->點擊網頁商品評論TAB頁切換按鈕 -->點擊保存
④沒有識別出評論信息,手工操作下:清空欄位-->更改頁面類型為手工識別列表 --> 選中兩個一樣元素(這里兩個用戶名稱) -->下一頁未自動識別成功-->更改分頁類型為手動點擊下一頁-->配置完成-->開始採集
數據預處理
當我們通過爬蟲獲取到我們想要的數據之後,進行簡單的觀察,可以發現評論的一些特點:
文本短,基本上大量的評論就是一句話.
情感傾向明顯:明顯的詞彙如」好」 「可以」
語言不規范:會出現一些網路用詞,符號,數字等
重復性大:一句話出現詞語重復
數據量大.
故我們需要對這些數據高局進行數據預處理
數據預處理包括:去重、分詞等
下面我們將進行數據清洗
import jieba
#評論內容進行去重
def quchong(infile, outfile):
infopen = open(infile, 'r', encoding='utf-8')
outopen = open(outfile, 'w', encoding='utf-8')
lines = infopen.readlines()
list_1 = []
for line in lines:
if line not in list_1:
list_1.append(line)
outopen.write(line)
infopen.close()
outopen.close()
quchong("E:/comments/華為P30.txt", "E:/comments/P30去重.txt")
# jieba.load_userdict('userdict.txt')
#創建停用詞list
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
#對評論內容進行分詞
def seg_sentence(sentence):
sentence_seged = jieba.cut(sentence.strip())
stopwords = stopwordslist('stopwords.txt') #這里載入停用詞的路徑
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != '\t':
outstr += word
outstr += " "
return outstr
inputs = open('E:/comments/P30去重.txt', 'r', encoding='utf-8')
outputs = open('E:/comments/P30分詞.txt', 'w')
for line in inputs:
line_seg = seg_sentence(line) #這里的返回值是字元串
outputs.write(line_seg + '\n')
outputs.close()
inputs.close()
print('分詞完畢')
數據分析
上面我們已經通過去重和jieba分詞將爬取的內容進行了預處理,接下來就開始對處理過的數據進行分析,包括詞頻統計、關鍵詞提取以及詞雲的生成等
#詞頻統計
import jieba.analyse
from collections import Counter #詞頻統計
with open('E:/comments/P30分詞.txt', 'r', encoding='utf-8') as fr:
data = jieba.cut(fr.read())
data = dict(Counter(data))
with open('E:/comments/P30詞頻.txt', 'w', encoding='utf-8') as fw: # 讀入存儲wordcount的文件路徑
for k, v in data.items():
fw.write('%s, %d\n' % (k, v))
import jieba.analyse
import matplotlib.pyplot as plt
from wordcloud import WordCloud
#生成詞雲
with open('E:/comments/P30詞頻.txt') as f:
#提取關鍵詞
data = f.read()
keyword = jieba.analyse.extract_tags(data, topK=50, withWeight=False)
wl = " ".join(keyword)
#設置詞雲
wc = WordCloud(
#設置背景顏色
background_color = "white",
#設置最大顯示的詞雲數
max_words=2000,
#這種字體都在電腦字體中,一般路徑
font_path='C:/Windows/Fonts/simfang.ttf',
height=1200,
width=1600,
#設置字體最大值
max_font_size=100,
#設置有多少種隨機生成狀態,即有多少種配色方案
random_state=30,
)
myword = wc.generate(wl) #生成詞雲
#展示詞雲圖
plt.imshow(myword)
plt.axis("off")
plt.show()
wc.to_file('E:/comments/P30.png') #把詞雲保存下
『肆』 python怎樣讀取文本文件里的中文
#在Windows 環境下
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re
fin = open('in.txt', 'r') #以讀的方式打開輸入文件
for eachLine in fin: #按行讀入文件內容
line = eachLine.strip().decode('gbk', 'utf-8') #處理前進行相關的處理,包括轉換成Unicode等
print line #列印原始字元
p2 = re.compile(ur'[^\u4e00-\u9fa5]') #中文的編碼范圍是:\u4e00到\u9fa5
zh = "".join(p2.split(line)).strip()
#zh = ",".join(zh.split())
print zh ##列印中文字元
『伍』 用python怎麼在一個中英文混合句子里把中文提取
Python re正則匹配伏彎戚枝中文,其實非常簡單,把中文的unicode字元串轉換成utf-8格式就可以了,然後可以在re中隨意調用
unicode中中文的編碼為/u4e00-/u9fa5,因此正則表達式u」[\u4e00-\u9fa5]+」可以表示一個或者多個中文字元
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc
>>> re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
>>> pat='中文'缺仔悶.decode("utf8")
>>> re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
>>> newpat='這里是中文內容'.decode("utf8")
>>> news=re.sub(pat,newpat,s)
>>> print news
這里是中文內容:123456aa哈哈哈bbcc
『陸』 python 用於文本挖掘有哪些比較好的開源工具
beautifulsoup. scarpy可以做文本收集
beautifulsoup,和正鋒攔則可以進行文件數據分析
pyenchant 可以進行英文拼寫糾錯
POS Tagging。nltk 是不二選擇,還御運可以使用 pattern
分詞,中文使用jieba分詞,英文使鎮基梁用K1分詞
『柒』 python搜索文本文件中的中文詞彙並輸出詞彙所在行的內容
for lnum, line in enumerate(open('ur path')):
if 'key' in line:
print(lnum, line)
『捌』 中文文本挖掘R語言和Python哪個好
單就數據分析對比,我認為R的優勢有:
1、學習先易後難,不會把小白們嚇掉;
2、數據科學的包特別多
3、可視化特別吊
R的缺點也不少:
1、R經常更新,更新後經常不支持之前你安裝的包;我電腦里安裝了10+個R的版本,不停的切換
2、R語言的包、函數名起的很隨意,看名字不知道是干什麼用的,記不起名字如何讓小白使用啊。
3、R語言社區人少,遇到問題你只能自己解決
4、即使有RStudio,寫代碼還是不方便
下面再說下python,優點:
1、是一門看的懂的,說人話的語言。庫名、函數名都很好理解記憶,而且你看別人寫的代碼基本知道這代碼的意思,不信你試試。
2、數據獲取占優勢,數據分析第一步是數據獲取,現在人文社科很多數據需要網上抓取,不過就抓數據而言,python更占優勢。各種教程,代碼,網上一大片。
3、社區人數特別多,基本你遇到的問題都能找到
python的缺點:
1、學習起來,開頭很難,學習曲線與R正好相反。
2、公平起見,我還是寫上,python的數據分析庫不如R多
3、可視化不如R
綜合下,建議大家學習python,語言通俗易懂,功能強大,越來越簡單。
『玖』 python怎麼用正則表達式提取中文
1、字元串line='ufeffD0002044x01大數據x01數據分析x01技術x01工具x01應用
'
想提取出其中的「大數據」,「數據分析」,「技術」,「工具」,「應用」這些中文,用了正則表達式:
>>>pat2='x01(.*?)'
>>>rs=re.compile(pat2).findall(line)
>>>print(rs)
['','','','','']
顯示的結果是空,請問如何才能正確的提出中文部分。
2、原文: 法規名稱:'《中華人民共和國合同法》',Items:[{法條名稱:'第五十二條'
匹配成: 《中華人民共和國合同法》第五十二條
(?<=法規名稱:').*?(',Items:[{法條名稱:').*?(?=') 請問這樣匹配哪裡錯了?Python報sre_constants.error: unterminated character set at position 22
3、Python re正則匹配中文,其實非常簡單,把中文的unicode字元串轉換成utf-8格式就可以了,然後可以在re中隨意調用
unicode中中文的編碼為/u4e00-/u9fa5,因此正則表達式u」[u4e00-u9fa5]+」可以表示一個或者多個中文字元
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u''
>>> print s
中文:123456aa哈哈哈bbcc 。