本發(fā)明涉及一種基于改進tf-idf關(guān)鍵詞提取算法。
背景技術(shù):
目前在基于改進tf-idf關(guān)鍵詞提取算法相關(guān)方法中,主要缺點表現(xiàn)為:單純以"詞頻"衡量一個詞的重要性,不夠全面,有時重要的詞可能出現(xiàn)次數(shù)并不多。而且,這種算法無法體現(xiàn)詞語的詞性信息,屬性為名詞的詞與屬性為助詞等的詞,都被賦予了相同的重要性,這顯然是不合理的。其他相關(guān)技術(shù)中,提取關(guān)鍵詞的準確率相對提高了,但是在空間的復雜度上也提高了,現(xiàn)實要求中得不到滿足。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于改進tf-idf關(guān)鍵詞提取算法。
本發(fā)明采用的技術(shù)方案是:
一種基于改進tf-idf關(guān)鍵詞提取算法,其包括以下步驟:
s1:將文本的輸入形式統(tǒng)一格式化;
s2:將文本標準格式化,對stanfordnlp加載屬性properties配置文件;
s3:在properties配置文件中根據(jù)定義的句子分隔符號,得到文本中的所有句子的集合sentences;
s4:每次從集合sentences中取出一條句子;
s5:獲取當前的句子中所有的詞語集合tokens;
s6:每次從集合tokens中取出一個token;
s7:得到當前token的字/詞語和詞性,并賦予不同的詞性以不同的詞性權(quán)值;
s8:計算當前句子中字/詞語的總數(shù)及其位置百分比;
s9:在前面的操作中,獲取了文本中所有的字/詞語集合words;
s10:每次從集合words取出一個word;
s11:計算當前word的tf以及idf;
s12:得到所有word的詞性權(quán)值、位置權(quán)值、tf、idf后,計算詞語的權(quán)重w=tf*idf+詞性權(quán)值+位置權(quán)值,選取詞語的權(quán)重w權(quán)值由大到小前5個word作為關(guān)鍵詞輸出。
進一步地,所述步驟s1中統(tǒng)一格式化所包括的參數(shù)分別為標題、標簽、摘要以及正文;若是對應的參數(shù)不存在則輸入“”。
所述步驟s2中,文本標準格式化首先設(shè)定管道中包含的annotators時分別選擇分詞、分隔、詞性標注、識別命名實體4個annotators,這四個annotators是對本發(fā)明進行文本處理所必須的;其次,加載各個annotator所需要的包以及設(shè)置對應的參數(shù)。
進一步地,所述步驟s8中計算當前句子中字/詞語的總數(shù)時除去不能成為關(guān)鍵詞的詞性的詞語。
進一步地,所述步驟s11,idf在傳統(tǒng)的算法中主要是通過包含了該詞語的文檔的數(shù)量和包含該詞語的文檔的總數(shù)量來比較的,公式如下:
其中|d|表示的文件總數(shù),|{j:ti∈dj}|表示包含詞語ti的文件總數(shù)。
所述idf的大小是以采集得到的10000篇新聞為測試數(shù)據(jù)集,計算出其中包含的每個單詞的idf并存儲至配置文件(共包含了27萬左右常見詞語的idf)。需要使用時,直接從配置文件中讀取相應單詞的idf值即可,無需統(tǒng)計所有文檔中出現(xiàn)該單詞的文檔數(shù),計算量相對比較小,運行速度快。對于未存儲在配置文件中的新詞或者生僻詞,將所有idf的均值作為該詞的idf
進一步地,所述步驟s12中作為關(guān)鍵詞的前5個word的每一個word的長度在2-6之間。
本發(fā)明采用以上技術(shù)方案,在提取關(guān)鍵詞中的過程中增加詞性因子,可以在提高關(guān)鍵詞提取的準確度的同時,有效解決相關(guān)方案中要構(gòu)造pat-tree等導致空間復雜度大等問題。
附圖說明
以下結(jié)合附圖和具體實施方式對本發(fā)明做進一步詳細說明;
圖1為本發(fā)明一種基于改進tf-idf關(guān)鍵詞提取算法的流程示意圖。
具體實施方式
如圖1所示,本發(fā)明公開了一種基于改進tf-idf關(guān)鍵詞提取算法,其包括以下步驟:
s1:將文本的輸入形式統(tǒng)一格式化;
s2:將文本標準格式化,對stanfordnlp加載屬性properties配置文件;
s3:在properties配置文件中根據(jù)定義的句子分隔符號,得到文本中的所有句子的集合sentences;
s4:每次從集合sentences中取出一條句子;
s5:獲取當前的句子中所有的詞語集合tokens;
s6:每次從集合tokens中取出一個token;
s7:得到當前token的字/詞語和詞性,并賦予不同的詞性以不同的詞性權(quán)值;
s8:計算當前句子中字/詞語的總數(shù)及其位置百分比;
s9:在前面的操作中,獲取了文本中所有的字/詞語集合words;
s10:每次從集合words取出一個word;
s11:計算當前word的tf以及idf;
s12:得到所有word的詞性權(quán)值、位置權(quán)值、tf、idf后,計算詞語的權(quán)重w=tf*idf+詞性權(quán)值+位置權(quán)值,選取詞語的權(quán)重w權(quán)值由大到小前5個word作為關(guān)鍵詞,每一個word的長度在2-6之間輸出。
進一步地,所述步驟s1中統(tǒng)一格式化所包括的參數(shù)分別為標題、標簽、摘要以及正文;若是對應的參數(shù)不存在則輸入“”。
所述步驟s2中,文本標準格式化首先設(shè)定管道中包含的annotators時分別選擇分詞、分隔、詞性標注、識別命名實體4個annotators,這四個annotators是對本發(fā)明進行文本處理所必須的;其次,加載各個annotator所需要的包以及設(shè)置對應的參數(shù)。
進一步地,所述步驟s8中計算當前句子中字/詞語的總數(shù)時除去停頓詞語。不僅對文本進行停用詞的過濾,而且同時也過濾了不可能成為關(guān)鍵詞的詞性,例如虛詞等。
進一步地,所述步驟s11,idf在傳統(tǒng)的算法中主要是通過包含了該詞語的文檔的數(shù)量和包含該詞語的文檔的總數(shù)量來比較的,公式如下:
其中|d|表示的文件總數(shù),|{j:ti∈dj}|表示包含詞語ti的文件總數(shù)。如果該詞語不在文檔中,就會導致分母為零,為了避免該情況的出現(xiàn),一般情況下使用1+|{j:ti∈dj}|作為分母。但是本發(fā)明中所討論的idf的大小是以采集得到的10000篇新聞為測試數(shù)據(jù)集,計算出其中包含的每個單詞的idf并存儲至配置文件(共包含了27萬左右常見詞語的idf)。需要使用時,直接從配置文件中讀取相應單詞的idf值即可,無需統(tǒng)計所有文檔中出現(xiàn)該單詞的文檔數(shù),計算量相對比較小,運行速度快。對于未存儲在配置文件中的新詞或者生僻詞,將所有idf的均值作為該詞的idf。
本發(fā)明采用以上技術(shù)方案,在提取關(guān)鍵詞中的過程中增加詞性因子,可以在提高關(guān)鍵詞提取的準確度的同時,有效解決相關(guān)方案中要構(gòu)造pat-tree等導致空間復雜度大等問題。