問題分析
有一篇很長的文章梳星,用計算機提取它的關(guān)鍵詞(Automatic Keyphrase extraction),完全不加以人工干預滚朵,請問怎樣才能正確做到冤灾?
智能問答系統(tǒng)是將積累的無序語料信息,進行有序和科學的整理辕近,并建立基于知識的分類模型韵吨;這些分類模型可以指導新增加的語料咨詢和服務(wù)信息,節(jié)約人力資源移宅,提高信息處理的自動性归粉,降低網(wǎng)站運行成本÷┓澹基于對網(wǎng)站多年積累的關(guān)于政府和企業(yè)的基本情況常見問題及其解答糠悼,整理為規(guī)范的問答庫形式,以支撐各種形式問題的智能問答浅乔。方便了用戶倔喂,提高了辦事效率,提升了企業(yè)形象靖苇。
TF-IDF 算法
詞頻
如何衡量詞語的重要性
- 如果某個詞很重要席噩,它應該在這篇文章中多次出現(xiàn),于是顾复,我們可以進行詞頻(Term Frequencty班挖,TF)統(tǒng)計
- 停用詞:毫無幫助、必須過濾掉的詞芯砸。比如“的”萧芙、“是”、“在”等假丧;
詞頻相同的詞語一樣重要嗎双揪?
"智能問答"、"企業(yè)"包帚、"問答庫"這三個詞的出現(xiàn)次數(shù)一樣多渔期。這是不是意味著,作為關(guān)鍵詞,它們的重要性是一樣的疯趟?
“企業(yè)”是很常見的詞拘哨,相對而言“智能問答”和“問答庫”不那么常見。如果這三個詞在一篇文章的出現(xiàn)次數(shù)一樣多信峻,我們有理由可以認為倦青,“智能問答”和“問答庫”的重要程度要大于“企業(yè)”,也就是說盹舞,在關(guān)鍵詞排序方面产镐,“智能問答“和”問答庫“應該排在”企業(yè)“前面。
逆文檔頻率
需要一個重要性調(diào)整系數(shù)踢步,衡量一個詞是不是常見詞癣亚。如果某個詞比較少見,但是它在這篇文章中多次出現(xiàn)获印,那么它很可能就反映了這篇文章的特性述雾,正是我們所需要的關(guān)鍵詞。
用統(tǒng)計學語言表達蓬豁,就是在詞頻的基礎(chǔ)上绰咽,要對每個詞分配一個"重要性"權(quán)重。
- 最常見的詞("的"地粪、"是"取募、"在")給予最小的權(quán)重
- 較常見的詞("中國")給予較小的權(quán)重,
- 較少見的詞("蜜蜂"蟆技、"養(yǎng)殖")給予較大的權(quán)重玩敏。
這個權(quán)重叫做"逆文檔頻率"(Inverse Document Frequency,縮寫為IDF)质礼,它的大小與一個詞的常見程度成反比旺聚。
TF-IDF
知道了"詞頻"(TF)和"逆文檔頻率"(IDF)以后,將這兩個值相乘眶蕉,就得到了一個詞的TF-IDF值砰粹。某個詞對文章的重要性越高,它的TF-IDF值就越大造挽。所以碱璃,排在最前面的幾個詞,就是這篇文章的關(guān)鍵詞饭入。
算法細節(jié)
1嵌器、計算詞頻
- 詞頻(TF)=某個詞在文章中出現(xiàn)的次數(shù)
- 詞頻(TF)= 某個詞在文章中出現(xiàn)的次數(shù)/文章的總詞數(shù) (考慮到文章有長短之分,為了便于不同文章的比較谐丢,進行"詞頻"標準化爽航。)
- 詞頻(TF)= 某個詞在文章中出現(xiàn)的次數(shù)/該文出現(xiàn)次數(shù)最多的詞出現(xiàn)的次數(shù)
2蚓让、計算逆文檔頻率
需要一個語料庫(corpus),用來模擬語言的使用環(huán)境讥珍。
逆文檔頻率(IDF)= log(語料庫的文檔總數(shù)/包含該詞的文檔數(shù)+1)
如果一個詞越常見历极,那么分母就越大,逆文檔頻率就越小越接近0串述。分母之所以要加1执解,是為了避免分母為0(即所有文檔都不包含該詞)寞肖。log表示對得到的值取對數(shù)纲酗。
3、計算 TF-IDF
TF-IDF=詞頻(TF)*逆文檔頻率(IDF)
TF-IDF與一個詞在文檔中的出現(xiàn)次數(shù)成正比新蟆,與該詞在整個語言中的出現(xiàn)次數(shù)成反比觅赊。所以,自動提取關(guān)鍵詞的算法就很清楚了琼稻,就是計算出文檔的每個詞的TF-IDF值吮螺,然后按降序排列,取排在最前面的幾個詞帕翻。
自動提取關(guān)鍵詞鸠补,TF-IDF算法還可以用于許多別的地方。比如嘀掸,信息檢索時紫岩,對于每個文檔,都可以分別計算一組搜索詞("中國"睬塌、"蜜蜂"泉蝌、"養(yǎng)殖")的TF-IDF,將它們相加揩晴,就可以得到整個文檔的TF-IDF勋陪。這個值最高的文檔就是與搜索詞最相關(guān)的文檔。
TF-IDF 優(yōu)缺點
- TF-IDF算法的優(yōu)點是簡單快速硫兰,結(jié)果比較符合實際情況诅愚。
- 缺點是,單純以"詞頻"衡量一個詞的重要性劫映,不夠全面违孝,有時重要的詞可能出現(xiàn)次數(shù)并不多。而且苏研,這種算法無法體現(xiàn)詞的位置信息等浊,出現(xiàn)位置靠前的詞與出現(xiàn)位置靠后的詞,都被視為重要性相同摹蘑,這是不正確的筹燕。(一種解決方法是,對全文的第一段和每一段的第一句話,給予較大的權(quán)重撒踪。)
找出相似文章
希望找到與原文章相似的其他文章过咬,為了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)制妄。下面掸绞,我舉一個例子來說明,什么是"余弦相似性"耕捞。
案列分析
句子A:我喜歡吃蘋果衔掸,不喜歡吃香蕉
句子B:我不喜歡吃蘋果,也不喜歡吃香蕉
請問怎樣才能計算上面兩句話的相似程度俺抽?
基本思路是:如果這兩句話的用詞越相似敞映,它們的內(nèi)容就應該越相似。因此磷斧,可以從詞頻入手振愿,計算它們的相似程度。
1弛饭、分詞
句子A:我/喜歡/吃/蘋果冕末,不/喜歡/吃/香蕉
句子B:我/不/喜歡/吃/蘋果,也/不/喜歡/吃/香蕉
2侣颂、列出所有的詞
我档桃,喜歡,吃横蜒,蘋果胳蛮,香蕉,不丛晌,也仅炊。
3、計算詞頻
句子A: 我 1澎蛛,喜歡 2抚垄,吃 2,蘋果 1谋逻,香蕉 1呆馁,不 1,也 0
句子B:我 1毁兆,喜歡 2浙滤,吃 2,蘋果 1气堕,香蕉 1纺腊,不 2畔咧,也 1
4、寫出詞頻向量
句子A:[1,2,2,1,1,1,0]
句子B:[1,2,2,1,1,2,1]
問題就變成了如何計算這兩個向量的相似程度揖膜。
我們可以把它們想象成空間中的兩條線段誓沸,都是從原點([0, 0, ...])出發(fā),指向不同的方向壹粟。兩條線段之間形成一個夾角拜隧,如果夾角為0度,意味著方向相同趁仙、線段重合洪添;如果夾角為90度,意味著形成直角幸撕,方向完全不相似薇组;如果夾角為180度,意味著方向正好相反坐儿。因此,我們可以通過夾角的大小宋光,來判斷向量的相似程度貌矿。夾角越小,就代表越相似罪佳。
以二維空間為例逛漫,上圖的a和b是兩個向量,我們要計算它們的夾角θ赘艳。余弦定理告訴我們酌毡,可以用下面的公式求得:
coso=a_2+b_2-c_2/2ab
假定a向量是[x1, y1],b向量是[x2, y2]蕾管,那么可以將余弦定理改寫成下面的形式:
coso=x_1x_2+y_1+y_2/sqrt()
余弦值越接近1枷踏,就表明夾角越接近0度,也就是兩個向量越相似掰曾,這就叫"余弦相似性"旭蠕。所以,上面的句子A和句子B是很相似的旷坦,事實上它們的夾角大約為20.3度掏熬。
由此,我們就得到了"找出相似文章"的一種算法:
- 使用TF-IDF算法秒梅,找出兩篇文章的關(guān)鍵詞旗芬;
- 每篇文章各取出若干個關(guān)鍵詞(比如20個),合并成一個集合捆蜀,計算每篇文章對于這個集合中的詞的詞頻(為了避免文章長度的差異疮丛,可以使用相對詞頻)辆琅;
- 生成兩篇文章各自的詞頻向量;
- 計算兩個向量的余弦相似度这刷,值越大就表示越相似婉烟。
自動摘要
如果能從3000字的文章,提煉出150字的摘要暇屋,就可以為讀者節(jié)省大量閱讀時間似袁。由人完成的摘要叫"人工摘要",由機器完成的就叫"自動摘要"咐刨。
文章的信息都包含在句子中昙衅,有些句子包含的信息多,有些句子包含的信息少定鸟。"自動摘要"就是要找出那些包含信息最多的句子而涉。
句子的信息量用"關(guān)鍵詞"來衡量。如果包含的關(guān)鍵詞越多联予,就說明這個句子越重要啼县。Luhn提出用"簇"(cluster)表示關(guān)鍵詞的聚集。所謂"簇"就是包含多個關(guān)鍵詞的句子片段沸久。