2012-03-24 18 views
1

我正在對文本分析進行一些個人研究,並且提出了接近70個指標(代詞使用頻率,閱讀水平,元音頻率,使用項目符號等)來「評分」一段文字。如何確定公制分數的合適權重

理想情況下,來自同一作者的單獨文本片段的分數相似。最終目標是爲大量作者編制索引,並使用分數來猜測誰編寫了單獨的匿名文本。

我希望分數從0到100進行歸一化處理,並代表兩種文字在書寫風格中「相似」的百分比。像How to decide on weights?How to calculate scores?這樣的問題描述了評分指標背後的數學和如何規範化,但假設每個指標的權重相同。

我的問題是:我如何確定每個指標評分時使用的適當權重,以確保每個用戶的累積分數最準確地描述該特定用戶的寫作?

此外,權重可以分配給每個用戶。如果每個單詞的音節最恰當地描述了誰爲Alice寫了一篇文章,而雙字母單詞的頻率對Bob來說是最好的,我希望Alice最重的是每個單詞的音節,Bob的頻率是兩個字母的單詞。

+0

如何通過某種形式的交叉驗證來優化權重? – 2012-03-24 05:08:53

回答

2

如果你想用加權得分來做,看看http://en.wikipedia.org/wiki/Principal_component_analysis - 你可以繪製不同作者的第一(最大)幾個主成分的值,看看你是否找到了一個聚類。您還可以繪製最小的幾個主要組成部分的圖表,看看是否有什麼突出的部分 - 如果是的話,這可能是一個小故障或錯誤 - 它傾向於從一般規則中挑選出例外。

另一種選擇是http://en.wikipedia.org/wiki/Linear_discriminant_analysis

我想你可以建立每個作者的權重,如果你建權重分類愛麗絲VS不翹,並進行分級鮑勃VS不,鮑勃權重。

嘗試識別作者的另一種方法是爲每位作者構建一個http://en.wikipedia.org/wiki/Language_model

對我來說,如果你準備聲稱你的不同的措施是獨立的,你可以將它們與http://en.wikipedia.org/wiki/Naive_Bayes_classifier結合起來。最終貝葉斯因子的對數將是單個貝葉斯因子的對數之和,它可以給你加權得分的總和。

1

看起來好像你正在試圖將一堆不同的寫作風格屬性合併成一個單一的數字,然後用它來確定用戶的寫作風格之間的相似性。那該如何解決?鮑勃是100,愛麗絲是50等?

您真正想要的是使用(某些子集)度量標準爲每種書寫風格形成feature vector。然後可以說某個文檔由(60% pronoun usage, 10th grade "reading level", 40% vowels, ...)表示,另一個由(40% pronouns, 12th grade "reading level", 50% vowels, ...)表示,其中每個屬性都是實數,矢量中的位置告訴您您正在討論哪個屬性。

然後,您可以通過真正的作者標記每個這些向量,以便爲每個作者標記一組特徵向量。然後,您可以通過多種方式計算相似度。


如果你有一個新的文件,要猜是誰寫的,這是一個標準supervised learning問題。一個簡單的方法是k-nearest neighbor approach,其中您可以在某個距離度量標準下找到距離您的測試點最近的矢量,並使用它們的標籤爲您認爲這是哪個作者投票。如果您不知道哪些特徵最有用,則可以使用Mahalanobis距離,如果您將矢量的每個分量縮放到單位差異((((x - y)/all_data_stacked.std(axis=0))**2).sum()爲numpy表示法),則可以使用Mahalanobis距離,該距離等於標準歐幾里德距離。

但是有很多很多其他的分類方法,其中很多都是基於在你的特徵空間中找到將一個作者與另一個作​​者分開的分離曲面。要與許多作者一起完成此任務,您可以在所有作者對之間找到這些決策表面,將這些分類器中的每一個應用於測試點,並在這些標籤中進行投票。另一種方法是爲每個作者編寫一個分類器,將其作者與其他人進行比較,然後採用最有信心的分類器。

大多數問題的最佳開箱監督分類算法被稱爲support vector machines (SVMs); LibSVM是一個很好的實現。不過,還有很多很多其他的。


如果你沒有真正試圖進行分類測試點,不過,只是想和你的「如何相似Alice和Bob的寫作風格?」的措施,也有采取其他的方法。在這種情況下,我正在處理的框架中要做的是採用兩套載體並詢問「它們有多相似」?

有一些簡單的措施,人們用於這樣的事情,例如該組元素之間的最小或平均距離,類似的東西。但這不一定非常有幫助。

一個專門的措施是:它是多麼容易混淆Alice的寫作鮑勃的?爲了測試這一點,通過交叉驗證來訓練Alice-vs-Bob分類器,並查看分類器混淆Alice和Bob的測試點的頻率。也就是說,使用Alice或Bob的文檔中除k之外的所有文檔在兩者之間訓練分類器,然後在那些k上評估該分類器。重複以便每個文檔都被分類。如果錯誤率很高,那麼他們的寫作風格是相似的;如果不是,他們不相似。如果你能負擔得起,使用k = 1就是最好的選擇。

我們也可以從更正式的方法來解決這個問題。我碰巧涉及的一個研究項目涉及將這些特徵向量集作爲來自未知概率分佈的樣本,該未知概率分佈代表個體作者的寫作風格。所以當Alice寫文檔時,其特徵是根據代表她寫作方式的概率分佈來選擇的; Bob的文檔是從Bob的發行版中選擇的。然後,您可以估計這兩個分佈之間的Rényi-α divergence,這是衡量它們「相似」的一種方法。 (如果您選擇α在1附近,則接近重要的Kullback-Leibler (KL) divergence。)以下是一些論文introducing the technique,giving all the mathematical details on the estimator和預印describing how to combine this estimator with SVMs to beat state of the art on computer vision problems。我有一個C++實現here;讓我知道如果你最終使用它!

人們使用的另一種類似方法叫做maximum mean discrepancy

不幸的是,所有這些技術(除了分類器之外)都會依賴於您手動縮放原始功能。 (這不適用於例如用於分類的SVM;他們可以處理確定某個特定用戶的某些特徵是否比其他特徵更重要,不過您應該將它們全部縮放爲零均值和單位差異作爲第一步。)這是一個難題feature selection,這是一個難題不幸的是仍然需要一點點調整。基於互信息等(與分歧評估密切相關)的方法可能對此有所幫助。如mcdowella suggested,PCA也可以是一個體面的開始。

相關問題