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