java统计文本中英文单词个数split_零基础入门NLP - 新闻文本分类Task2(天池入门赛)...
本章主要內容是主要是通過pandas模塊來進行數據分析。(注:文章只是對天池入門賽課件的學習)
一、學習目標
1、學習使用pandas讀取賽題規律
2、分布賽題數據的分布規律
二、數據讀取
使用pandas直接讀取數據,
import pandas as pd # 讀取數據 train_df = pd.read_csv('D:/py_project/天池/data/train_set.csv', sep='t') train_df.head()第一列為數據的label值,第二列為新聞的內容。
三、數據分析
3.1、目標
1)賽題數據中,新聞文本的長度是多少?
2)類別分布是什么樣的?什么類別占比比較多
3)字符分布是什么樣的?
3.2、句子長度分析
賽題數據中,每行句子的字符使用空格隔開,所以可以通過直接統計單詞的個數來得到每個句子的長度。
train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' '))) print(train_df['text_len'].describe())從圖中的統計可以看出,20萬條數據的平均長度為907字符,最長的句子為57921字符,最短的只有2字符,長度差別較大。
所以我們導入matplot庫來看句子長度的分布,
import matplotlib.pyplot as plt _ = plt.hist(train_df['text_len'], bins=200) plt.xlabel('Text char count') plt.title("Histogram of char count")從分布圖可以看出,句子長度主要分布在20000以下
3.3、類別分布統計
現在統計各類新聞的類別數量,首先做出類別分布圖,
_ = plt.hist(train_df['text_len'], bins=200) plt.xlabel('Text char count') plt.title("Histogram of char count")在數據集中標簽的對應的關系如下:{'科技': 0, '股票': 1, '體育': 2, '娛樂': 3, '時政': 4, '社會': 5, '教育': 6, '財經': 7, '家居': 8, '游戲': 9, '房產': 10, '時尚': 11, '彩票': 12, '星座': 13}
從直方圖看出,標簽分布不均勻,科技類型新聞最多。
3.4、字符分布統計
我們可以通過collections庫中的Counter函數來統計詞頻,
from collections import Counter all_lines = ' '.join(list(train_df['text'])) word_count = Counter(all_lines.split(" ")) word_count = sorted(word_count.items(), key=lambda d:d[1], reverse=True)print(len(word_count)) print(word_count[0]) print(word_count[-1])從統計結果可以看出,總共有6869個字符,其中'3750'這個字符出現最多,有7482224次,而'3133'這個字符出現最少,只有1次。
下面代碼統計了不同字符在句子中出現的次數,其中字符3750,字符900和字符648在20w新聞的覆蓋率接近99%,很有可能是標點符號。
train_df['text_unique'] = train_df['text'].apply(lambda x: ' '.join(list(set(x.split(' '))))) all_lines = ' '.join(list(train_df['text_unique'])) word_count = Counter(all_lines.split(" ")) word_count = sorted(word_count.items(), key=lambda d:int(d[1]), reverse = True)print(word_count[0]) print(word_count[1]) print(word_count[2])四、結論
通過上述分析過程,我們可以得出結論:
總結
以上是生活随笔為你收集整理的java统计文本中英文单词个数split_零基础入门NLP - 新闻文本分类Task2(天池入门赛)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝消费记录如何删除
- 下一篇: 工商银行鲁通卡全国通用吗