回答
想想一個關於多維空間中的一個點的句子,只有在你定義了座標系之後,才能計算出歐幾里德距離。例如。你能介紹
- O1 - 一個句子長度(長)
- O2 - 一個詞數(WordsCount)
O2 - 按字母順序中心(我只是想到這一點)。它可以計算爲一個句子中每個作品的字母中心的算術平均值。
CharsIndex = Sum(Char.indexInWord)/CharsCountInWord; CharsCode = Sum(Char.charCode)/CharsCount; AlphWordCoordinate = [CharsIndex, CharsCode]; WordsIndex = Sum(Words.CharsIndex)/WordsCount; WordsCode = Sum(Words.CharsCode)/WordsCount; AlphaSentenceCoordinate = (WordsIndex ^2+WordsCode^2+WordIndexInSentence^2)^1/2;
因此,歐氏距離,可以計算出任何如下:
EuclidianSentenceDistance = (WordsCount^2 + Length^2 + AlphaSentenceCoordinate^2)^1/2
沒有每一句話可以被轉化爲指向的三維空間,如P [長,單詞,AlphaCoordinate]。有距離可以比較和分類句子。
這不是我想的理想方法,但我想告訴你一個主意。
import math
def calc_word_alpha_center(word):
chars_index = 0;
chars_codes = 0;
for index, char in enumerate(word):
chars_index += index
chars_codes += ord(char)
chars_count = len(word)
index = chars_index/len(word)
code = chars_codes/len(word)
return (index, code)
def calc_alpha_distance(words):
word_chars_index = 0;
word_code = 0;
word_index = 0;
for index, word in enumerate(words):
point = calc_word_alpha_center(word)
word_chars_index += point[0]
word_code += point[1]
word_index += index
chars_index = word_chars_index/len(words)
code = word_code/len(words)
index = word_index/len(words)
return math.sqrt(math.pow(chars_index, 2) + math.pow(code, 2) + math.pow(index, 2))
def calc_sentence_euclidean_distance(sentence):
length = len(sentence)
words = sentence.split(" ")
words_count = len(words)
alpha_distance = calc_alpha_distance(words)
return math.sqrt(math.pow(length, 2) + math.pow(words_count, 2) + math.pow(alpha_distance, 2))
sentence1 = "a great game"
sentence2 = "A great game"
distance1 = calc_sentence_euclidean_distance(sentence1)
distance2 = calc_sentence_euclidean_distance(sentence2)
print(sentence1)
print(str(distance1))
print(sentence2)
print(str(distance2))
控制檯輸出
a great game
101.764433866
A great game
91.8477000256
即時通訊困惑...你可以嘗試使用我有的例子計算? 例如這樣的鏈接:https://stackoverflow.com/questions/17053459/how-to-transform-a-text-to-vector – xx4xx4
我已經添加了代碼示例。你可以玩它並嘗試實現高質量的功能。因爲現在,正如你所看到的那樣,函數對像char寄存器這樣的小改動很敏感。 – slesh
我讀過的代碼,但我覺得從我想要做的不同... 假設: 培訓一句話:「一場偉大的比賽」 未標記一句話:「一個非常接近的比賽」 我想要計算兩句之間的歐氏距離。從什麼iv'e讀我應該將每個句子轉換成二進制就像我以前的評論中的鏈接... – xx4xx4
- 1. 使用字數計算歐氏距離
- 2. 用numpy計算歐氏距離
- 3. 歐氏距離
- 4. 歐氏距離
- 5. 歐氏距離
- 6. 計算馬氏距離
- 7. 更好的方法來計算與R的歐氏距離
- 8. Python:如何計算常規網絡的歐氏距離分佈?
- 9. 計算大數據集的歐氏距離
- 10. 計算從類型的字典(sklearn)歐氏距離
- 11. 計算Java中TSP的地理位置和歐氏距離
- 12. 計算兩個numpy數組的歐氏距離
- 13. 計算3D歐氏距離不溢出或下溢
- 14. 錯誤 - 計算爲PCA歐氏距離在Python
- 15. Excel公式爲歐氏距離
- 16. 用C#計算馬氏距離
- 17. 計算平方歐幾里德距離
- 18. 計算陣列的連續點之間的歐氏距離與numpy的
- 19. 計算HSV顏色空間中的兩個圖像的歐氏距離在MATLAB
- 20. 計算N維空間中兩點之間歐氏距離的最快方法
- 21. 馬氏距離
- 22. 計算距離
- 23. 計算距離
- 24. 距離計算
- 25. 計算距離
- 26. 計算距離
- 27. 計算距離
- 28. 計算距離
- 29. 計算距離
- 30. 計算距離
你所說的判刑「歐氏距離」是指目前還不清楚。要獲得任何距離,您需要修正一些編碼 - 例如,您可以使用計數向量,二進制版本或tfidf向量。 –
假設你有一個[link](https://i.stack.imgur.com/PrqAF.png)的訓練數據,你必須使用KNN對「非常接近的比賽」這個句子進行分類......類似的東西 – xx4xx4
該數據有句子字符串。正如我前面提到的,有很多方法可以對它們進行矢量化。 –