設為n邊形 漏掉的內角為x 0<x<180
內角和=180(n-2)
180(n-2)-x=1680
180n=2040+x
因為 0<x<180
2040<180n<2220
n=12
180×12=2040+x
x=120
答這個內角是120 求的是12邊形的內角和
如何計算基於特征的相似度
如何計算句子的語義相似度,很容易想到的是向量空間模型(VSM)和編輯距離的方法,比如A:“我爸是李剛”,B:“我兒子是李剛”,利用VSM方法A(我,爸,是,李剛)B(我,兒子,是,李剛),計算兩個向量的夾角餘弦值,不贅述;編輯距離就更好說了將“爸”,“兒子”分別替換掉,D(A,B)= replace_cost;這是兩種相當呆的方法,屬於baseline中的baseline,換兩個例子看一下就知道A:“樓房如何建造?”,B:“高爾夫球怎麼打?”,C:“房子怎麼蓋?”,如果用VSM算很明顯由於B,C中有共同的詞“怎麼”,所以BC相似度高於AC;編輯距離同理;解決這種問題方法也不難,隻要通過同義詞詞典對所有句子進行擴展,“如何”、“怎麼”,“樓房”、“房子”都是同義詞或者近義詞,擴展後再算vsm或者edit distance對這一問題即可正解.這種方法一定程度上解決了召回率低的問題,但是擴展後引入噪聲在所難免,尤其若原句中含有多義詞時.例如:“打醬油”、“打毛衣”.在漢字中有些單字詞表達了相當多的意義,在董振東先生的知網(hownet)中對這種類型漢字有很好的語義關係解釋,通過hownet中詞語到義元的樹狀結構可以對對詞語粒度的形似度進行度量.問題到這裏似乎得到了不錯的解答,但實際中遠遠不夠.VSM的方法把句子中的詞語看做相互獨立的特征,忽略了句子序列關係、位置關係對句子語義的影響;Edit Distance考慮了句子中詞語順序關係,但是這種關係是機械的置換、移動、刪除、添加,實際中每個詞語表達了不同的信息量,同樣的詞語在不同詞語組合中包含的信息量或者說表達的語義信息大不相同.What about 句法分析,計算句法樹的相似度?這個比前兩種方法更靠譜些,因為句法樹很好的描述了詞語在句子中的地位.實際效果要待實驗證實.對了,還有一種方法translation model,IBM在機器翻譯領域的一大創舉,需要有大量的語料庫進行訓練才能得到理想的翻譯結果.當然包括中間詞語對齊結果,如果能夠利用web資源建立一個高質量的語料庫對兩兩相似句對通過EM迭代詞語對齊,由詞語對齊生成句子相似度,這個.想想還是不錯的方法!
如何計算兩個文檔的相似度
最近正好組內做了一個文檔相似度的分享。
決定回答一發。
首先,如果不局限於NN的方法,可以用BOW+tf-idf+LSI/LDA的體係搞定,也就是俗稱的01或one hot representation。
其次,如果樓主指定了必須用流行的NN,俗稱word-embedding的方法,當然首推word2vec(雖然不算是DNN)。
然後得到了word2vec的詞向量後,可以通過簡單加權/tag加權/tf-idf加權等方式得到文檔向量。
這算是一種方法。
當然,加權之前一般應該先幹掉stop word,詞聚類處理一下。
還有,doc2vec中的paragraph vector也屬於直接得到doc向量的方法。
特點就是修改了word2vec中的cbow和skip-gram模型。
依據論文《Distributed Representations of Sentences and Documents》(ICML 2014)。
還有一種根據句法樹加權的方式,是ICML2011提出的,見論文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,後續也有多個改編的版本。
當然,得到詞向量的方式不局限於word2vec,RNNLM和glove也能得到傳說中高質量的詞向量。
ICML2015的論文《From Word Embeddings To Document Distances, Kusner, Washington University》新提出一種計算doc相似度的方式,大致思路是將詞之間的餘弦距離作為ground distance,詞頻作為權重,在權重的約束條件下,求WMD的線性規劃最優解。
最後,kaggle101中的一個word2vec題目的tutorial裏作者如是說:他試了一下簡單加權和各種加權,不管如何處理,效果還不如01,歸其原因作者認為加權的方式丟失了最重要的句子結構信息(也可以說是詞序信息),而doc2vec的方法則保存了這種信息。
在剛剛結束的ACL2015上,似乎很多人提到了glove的方法,其思想是挖掘詞共現信息的內在含義,據說是基於全局統計的方法(LSI為代表)與基於局部預測的方法(word2vec為代表)的折衷,而且輸出的詞向量在詞聚類任務上幹掉了word2vec的結果,也可以看看。
《GloVe: Global Vectors forWord Representation》
怎麼用sql語句來判斷兩條短信的相似度,也就是兩個字符串的相似度,...
如表格A中字段a1有一條字符串記錄Rec1內容為 “我的家在哪裏?”;然後要從B表中找出一條字符串記錄Rec2內容與Rec1最相似的,如:“我的家在浙江?” select A.a1, max(DIFFERENCE(A.a1,B.相應字段)) from A cross join B group by A.a1
機器學習句子相似度計算,最後怎麼根據相似度高低排序返回原來的句...
先說一個還是從詞的角度出發考慮的,最後的效果非常好,就是怎麼樣從詞的向量得到句子的向量,首先選出一個詞庫,比如說10萬個詞,然後用w2v跑出所有詞的向量,然後對於每一個句子,構造一個10萬維的向量,向量的每一維是該維對應的詞和該句子中每一個詞的相似度的最大值。
這種方法實際上是bag of words的一個擴展,比如說對於 我喜歡用蘋果手機 這麼一句話,對應的向量,會在三星,諾基亞,小米,電腦等詞上也會有比較高的得分。
這種做法對於bag of words的稀疏性問題效果非常好。
還做過一個直接訓練句子的相似度的一個query2vec模型,效果也不錯,就不細說了。
兩個函數相似度怎麼計算?比如sin(x)和cos(x),除了做差之外,取絕對...
linux環境下,沒有首先安裝python_Levenshtein,用法如下:重點介紹幾個該包中的幾個計算字串相似度的幾個函數實現。
1. Levenshtein.hamming(str1, str2)計算漢明距離。
要求str1和str2必須長度一致。
是描述兩個等長字串之間對應位置上不同字符的個數。
如2. Levenshtein.distance(str1, str2)計算編輯距離(也成Levenshtein距離)。
是描述由一個字串轉化成另一個字串最少的操作次數,在其中的操作包括插入、刪除、替換。
如算法實現 參考動態規劃整理:http://www.cnblogs.com/kaituorensheng/archive/2013/05/15/3080990.html。
3. Levenshtein.ratio(str1, str2)計算萊文斯坦比。
計算公式 r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的長度總和,ldist是類編輯距離注意:這裏的類編輯距離不是2中所說的編輯距離,2中三種操作中每個操作+1,而在此處,刪除、插入依然+1,但是替換+2這樣設計的目的:ratio('a', 'c'),sum=2,按2中計算為(2-1)/2 = 0.5,'a','c'沒有重合,顯然不合算,但是替換操作+2,就可以解決這個問題。
4. Levenshtein.jaro(s1, s2)計算jaro距離,其中的m為s1, s2的匹配長度,當某位置的認為匹配 當該位置字符相同,或者在不超過t是調換次數的一半5. Levenshtein.jaro_winkler(s1, s2)計算Jaro–Winkler距離
轉載請注明出處句子大全網 » 涓悓瀛﹀湪璁$畻涓