HanLP 關鍵詞提取。總結



原理:

依托HanLP的核心詞典和自定義詞典根據TF*IDF算法計算
每個命名實體和名詞短語的得分score,按score倒排返回前面若干個關鍵詞

解釋: TF 稱為詞頻,表示詞在一篇文檔中出現的頻率=詞在該文檔中出現的次數 / 該文檔中單詞的總數---TF越大,表示該詞對文檔越重要
DF稱為文檔頻率,一個詞在多少篇文章中出現過

本系統用的公式是:比重 k * 關鍵詞在本文出現的次數 t / 詞典中的詞頻 f

IDF 稱為逆文檔頻率=Ln(總文檔數/出現該次的文檔數)

首先解析出標題和正文

用HanLP的分詞器一句詞典,初始化內容,生成一個數組 wordList,里面是分好的詞,有各自的詞性,和各自詞在內容中所在的位置 index
把標題里的詞單獨分一下,降低詞頻 f

關鍵詞:
先分短語:
遍歷wordList,取每個詞的詞性和下詞詞性,可以組合起來的,拼接為一個短語,降低詞頻f,放到候選關鍵詞數組 parsePhrase 里面
機構名不做組合
形容詞,名形詞,動名詞,習用語,簡稱略語,后跟助詞,名詞,動詞,動名詞 且詞的長度都大於1 則組合為短語
動詞后跟助詞,名詞,動名詞,則組合短語
名詞后跟助詞,名詞,動名詞,動詞,則組合短語
數詞后跟量詞,名詞,專有名詞,或者形容詞則組合短語
其余都不進行組合
組合短語長度大於8或者構成的某個單詞在詞庫詞頻超過300,則此短語詞頻為5
其余的短語默認詞頻為3
再分單詞:
遍歷wordlist,取每個單獨的詞,根據詞性,降低或者增加詞頻。同時判斷是否已存在於parsePhrase的某個短語里,避免重復放入 parsePhrase。
名詞,動詞,形容詞,長度大於2的動名詞,習用語,人名,簡稱略語,從核心詞典和擴展詞典取,取不到就默認詞頻為3.或4
排除單字符 的關鍵字,去除
包含有第+數詞的,詞頻增大
帶**訊,**攝等不進行添加

所以想添加自定義詞典的關鍵詞,只需要設定為單詞為名詞 n,動詞 v,形容詞 a,長度大於2的動名詞 vn,習用語 l,人名 nr,簡稱略語 j
在自定義詞.txt里 詞頻 < 3 即可。

最后算分:

權重k,根據詞性設定的,初始值是1,根據不同的詞性 擴大或者縮小

在本文出現次數t,遍歷wordList,有重復則加1即可

根據公式:比重 k * 關鍵詞在本文出現的次數 t / 詞典中的詞頻 f,算出parsePhrase里各個候選詞的分值,排序取前N個關鍵詞,就是要提取的

摘要:

思想:句子短,代表性強(特殊性高、分高)

復用上面的 parsePhrase 。

根據段落符號 \n 和一些標點符號 識別出標題,首段,尾段,中間的正文,以及是否是帶段落編號的文章。

根據標點符號,把文章分詞一個個的句子,包含每個句子的首尾位置(在文章中的前后順序),所在段落位置(是否首段,尾段等)。
在這期間處理句子里的特殊字,詞,

證明是至少含有2個段落編號的 正文文本,此時,需要去掉編號。把首段 的分值設置很大,加上標題

每個句子都分詞,從parsePhrase 找出分值想加。得到每個句子的值。

對句子進行分詞,找出每個詞在候選關鍵詞 數組里的分數,累加

同時對於同一句中重復出現的nr 等超過3個,進行降權

對於句子長度大於50的 進行降權

首段 FIRST 如果首句 開始位置<10(為了給去掉的記者,某報訊等等留位置)包含很多標題中詞匯,
就加入摘要,其實已經在候選句子里,只不過吧分數加多一些,排名靠前點

當判定為帶編號文章,增加首尾段落的分值權重

取一些特殊詞作為標識,截取后面的特殊符號以后的句子內容作為句子。即去除;[記者:***] 等句子內容

等等邏輯處理完后,得到一個句子數組。先按分值大小排序

提取思想:找分高的幾個句子,其總字數加起來剛剛大於要提取的摘要字數 length

length 和200有個對比
當文章字數 size <200:
當length > size 提取全文
當length < size 提取length字數的句子
當size >200
當length > 200 提取200字數的句子
當length < 200 提取length字數句子

提取后的句子,按照在文中出現的先后順序,排序。

 

記錄一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM