文本分析概述
文本分析常應用於:翻譯,搜索引擎,文章推薦,人物-事物-事件關係圖,智能輸入法等領域
因此文本分析通常是作爲一些項目的子項目來進行的
文本分析包含很多內容如:分詞,分類,錯別字糾正,輸入預測等
需求分析
【功能需求】
對於分詞:算法以一段文本作爲輸入,算法輸出分詞後的文本,如:輸入"基礎文本分析項目" 算法會輸出"基礎/文本/分析/項目"
對於分類:算法以一段文本作爲輸入,算法輸出文本的主題分佈
通過是否含有標記,在分類時選擇不同的算法,含有標記則選擇NBC(樸素貝葉斯),否則使用LDA(隱含狄利克雷分佈)
(暫時只有這兩種功能。。。後續會添加功能)
【性能需求】
響應時間:和搜索引擎類似
信息量速率:未知
主存容量:未知
。。。
【可靠性和可用性需求】
ps:系統在一個時間段出錯的次數不大於多少
未知
【出錯處理需求】
ps:這類需求說明系統對於環境錯誤應該怎樣響應
未知
【接口需求】
ps:數據的格式
用戶接口需求:用戶輸入UTF-8形式的文本文件,每一篇文章前有序號,序號後面有一個#號,結果將會以.txt文本的形式輸出給用戶
【約束】
ps:在設計或實現應用系統時應遵守的限制條件,如:精度,工具和語言約束,設計約束,應該使用的標準,應該使用的硬件平臺
精度: 分詞和文本分類的正確率在85%以上
分詞正確率 = (分詞正確數)/(真實分詞數),因爲文本是沒有提前分詞的,因此採用抽樣法進行人工檢查
使用python語言,需要的庫有:
【逆向需求】
ps:軟件系統不應該做什麼
【將來可能提出的需求】
翻譯,搜索引擎,文章推薦,人物-事物-事件關係圖
語言及數據結構選擇
語言:Python , 因爲包含了大量的機器學習的第三方開源庫
數據結構:以UTF-8文本保存在數據庫中
詳細過程
1.通過python的jieba分詞對文本進行精確分詞
原理 (jiebao):
- 基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
- 採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合
- 對於未登錄詞,採用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法
2.自定義停用詞文本(也可網上下載),然後編寫代碼對分詞後的文本進行停用詞清理
原理:
- 遍歷分詞後的詞袋(未向量化),對於出現在停用詞文本中的詞進行刪除,然後得到新的詞袋(未向量化)
3.詞頻統計
原理:
- 遍歷文本得到,詞-詞頻的鍵值對(key:詞, value:詞在某一文本出現的次數)
4.向量化
原理:
- 將詞頻統計得到的詞袋(未向量化)中的中文轉換爲數值,需要注意的是,不同文本的相同的詞轉換得到的數值是相同的,既相同的詞會映射到相同的數值
5.NBC(Naive Bayes Classifier)
對於NBC分類,需要先對模型進行訓練,然後生成主題-詞條的概率向量,然後再通過python中的樸素貝葉斯分類器對文本進行分類
原理:
5.LDA(Latent Dirichlet Allocation)
對於LDA分類,
編碼
測試與修改
通過對測試集進行測試,得到模型的準確度,然後判斷是否需要對算法進行優化處理
還在更新中。。。