python计算文本相似度代码
时间: 2023-07-23 22:24:09 浏览: 119
计算文本相似度
以下是使用Python计算文本相似度的示例代码:
```python
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# 定义文本处理函数
def process_text(text):
# 分词
tokens = word_tokenize(text.lower())
# 去除停用词
stop_words = set(stopwords.words('english'))
filtered_tokens = [token for token in tokens if token not in stop_words]
# 词形还原
lemmatizer = WordNetLemmatizer()
lemmatized_tokens = [lemmatizer.lemmatize(token) for token in filtered_tokens]
# 返回处理后的文本
return ' '.join(lemmatized_tokens)
# 定义计算相似度函数
def calculate_similarity(text1, text2):
# 处理文本
processed_text1 = process_text(text1)
processed_text2 = process_text(text2)
# 构建TF-IDF向量
vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform([processed_text1, processed_text2])
# 计算余弦相似度
similarity = cosine_similarity(tfidf)[0][1]
return similarity
# 示例
text1 = 'The quick brown fox jumps over the lazy dog.'
text2 = 'A quick brown dog jumps on the log.'
similarity = calculate_similarity(text1, text2)
print('相似度:', similarity)
```
上述代码使用了NLTK库进行文本处理,利用TF-IDF向量和余弦相似度计算文本相似度。需要注意的是,计算相似度前需要对文本进行预处理,如分词、去除停用词和词形还原等。
阅读全文