NLP入門(1)詞袋模型及句子相似度

2021-09-24 13:37:20 字數 1981 閱讀 4753

建立詞袋 取得句子的向量表示(缺少手寫的計算相似度部分)

# coding:utf-8

from nltk import word_tokenize

# nltk可能報錯

# 在python的控制台執行

# import nltk

# nltk.download('punkt')

sent1 = "i love sky, i love sea." # 區分大小寫

sent2 = "i like running, i love reading."

# 取得詞袋

sentences = [sent1, sent2]

all_text =

for sentence in sentences:

all_text.extend(word_tokenize(sentence))

corpus = set(all_text)

# 建立詞袋和數字索引序號的對映

corpus_dict = {}

i = 0

for word in corpus:

corpus_dict[word] = i

i += 1

print(corpus_dict)

## 建立句子的向量表示

sent1_list = word_tokenize(sent1)

sent2_list = word_tokenize(sent2)

sents_list = [sent1_list, sent2_list]

sent1_vec =

sent2_vec =

for key in corpus_dict.keys():

# 加入乙個tuple : key在corpus_dict的序號,sent1_list1中key出現的次數

print(sent1_list)

#['i', 'love', 'sky', ',', 'i', 'love', 'sea', '.']

print(sent1_vec)

#[(0, 2), (1, 1), (2, 0), (3, 1), (4, 2), (5, 0), (6, 0), (7, 1), (8, 1)]

也可以直接調包(包含計算相似度)

sent1 = "i love sky, i love sea."

sent2 = "i like running, i love reading."

from nltk import word_tokenize

sents = [sent1, sent2]

texts = [[word for word in word_tokenize(sent)] for sent in sents]

print(texts)

from gensim import corpora

from gensim.similarities import similarity

# 語料庫

dictionary = corpora.dictionary(texts)

# 利用doc2bow作為詞袋模型

corpus = [dictionary.doc2bow(text) for text in texts]

similarity = similarity('-similarity-index', corpus, num_features=len(dictionary))

print(similarity)

# 獲取句子的相似度

new_sensence = sent1

test_corpus_1 = dictionary.doc2bow(word_tokenize(new_sensence))

cosine_sim = similarity[test_corpus_1][1]

print("利用gensim計算得到兩個句子的相似度: %.4f。"%cosine_sim)

文件詞袋模型

詞袋模型記錄了單詞在詞彙表中出現的次數。def loaddataset 建立文件集合以及標籤 postinglist my dog has flea problems help please maybe not take him to dog park stupid my dalmation is ...

詞袋模型(bag of words,BOW

詞袋模型是自然語言處理中在建模文字時常用的文字表示方法。維基百科上的給出如下的例子 john likes to watch movies.mary likes too.john also likes to watch football games.將上面的兩句話中看作乙個文件集,列出文件 現的所有單...

NLP之詞袋模型一

宣告 參考a gentle introduction to the bag of words model 目的 將不定長的文字型資料轉化為定長的數值型資料,以便用作機器學習模型的輸入。用處 常用於文字建模和分類。優點 簡單,易實現。缺點 不能考慮文字的結構和順序。以 雙城記 中的一段話為例 詞袋中的...