N Grams的原理是什麼?

時間 2021-05-31 10:00:05

1樓:Dacian

假設有乙個字串s,那麼該字串的N-Grams就表示按長度 N 切分原詞得到的詞段,也就是s中所有長度為 N 的子字串。

設想如果有兩個字串,然後分別求它們的N-Grams,那麼就可以從它們的共有子串的數量這個角度去定義兩個字串間的N-Gram距離。

舉個例子(N=2):

China:Ch,hi,in,na

Chinese:Ch,hi,in,ne,es,se

發現有三個詞段相同,所以兩個字串的N-Grams距離為3。

China有3/4的可能性與Chinese表達相同的意思,但事實並非如此。

問題就在於,原來的演算法忽視了每個字串本身的長度,無法精準地表示兩個字串的相似度。

引出新的N-Grams計算方法:

是第乙個字串的長度,這裡為4;

是第二個字串的長度,這裡為6;

N-Grams = 4+6 - 2 * 3 = 4

由新的計算方法可知,當兩個詞完全相同時,N-Grams為0(最優結果)。

字串之間的距離(N-Grams)越小,它們就越接近。

Python例項:

# Import CountVectorizer

from

sklearn.feature_extraction.text

import

CountVectorizer

# Instantiate a trigram vectorizer

cv_trigram_vec

=CountVectorizer

(max_features

=100

,stop_words

='english'

,ngram_range=(

3,3))

cv_trigram

=cv_trigram_vec

.fit_transform

(speech_df

['text'

])# Create a DataFrame of the features

cv_tri_df=pd

.DataFrame

(cv_trigram

.toarray

(),columns

=cv_trigram_vec

.get_feature_names

()).

add_prefix

('Counts_'

)# Print the top 5 words in the sorted output

print

(cv_tri_df

.sum().

sort_values

(ascending

=False).

head(2

))#Counts_constitution united states 20

#Counts_people united states13

針灸的原理是什麼?

陳蒙 這件事情大家還在研究,也沒有個定論。其他幾個常見的沒有定論的問題是 經絡是什麼物質?三焦到底是什麼?針灸是有效的而不是安慰劑是已經被研究出來的內容。針灸可以釋放生物電,根據這一特點設計出了電針,用來加強刺激和針感。至於針感到底是什麼,包括針刺補瀉,寒熱溫涼等到底是怎麼起作用的,這都是目前還沒有...

星座的原理是什麼!?

突然想到的原理 12個星座對應著12個時間段出生的 出生時間相近,意味著父母懷孕時間相差不多 出生前經歷的四季變化等很多的東西也都是類似的這些相同的東西,導致了相同的性格等等 女神和女神經 巴納姆效應 巴納姆效應 Barnum effect 是1948年由心理學家伯特倫 福勒通過試驗證明的一種心理學...

泛音 的原理是什麼?

080617 先上圖,最為直觀 撥動一下弦的中點,弦的振動情況如上圖所示 圖為弦振動模擬,容易看出弦有整體的上下振動,相應的頻率稱為 基頻 仔細觀察,弦的區域性還存在一些細微的振動,其頻率高於基頻 在弦的端點附近能明顯看到這種振動 泛音就是由高於基頻的振動產生。 周宇航 想象一下你有一輛自行車。你踹...