Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析
关键步骤: 1. 分词:将句子 1 和句子 2 分词并去除停用词,得到词汇列表。 2. 获取词汇的同义词集合:使用 WordNet 获取每个词的同义词集合。 3. 计算两个句子的语义相似度:通过比较两个句子中同义词集合的相似度来计算语义相似度。 代码实现及关键代码解释: ```python from nltk.corpus import wordnet as wn from nltk import word_tokenize from nltk.corpus import stopwords # 下载停用词 import nltk nltk.download('stopwords') def get_synsets(word): """ 获取单词的同义词集合 """ synsets = wn.synsets(word) return synsets def remove_stopwords(sentence): """ 去除停用词 """ stop_words = set(stopwords.words('english')) words = word_tokenize(sentence) filtered_words = [word for word in words if word.lower() not in stop_words] return filtered_words def calculate_similarity(sentence1, sentence2): words1 = remove_stopwords(sentence1) words2 = remove_stopwords(sentence2) # 获取所有词的同义词集合 synsets1 = [synset for word in words1 for synset in get_synsets(word)] synsets2 = [synset for word in words2 for synset in get_synsets(word)] # 计算两个句子的语义相似度 max_sim = 0 for synset1 in synsets1: for synset2 in synsets2: similarity = synset1.path_similarity(synset2) if similarity and similarity > max_sim: max_sim = similarity return max_sim # 两个句子 sentence1 = "i am feeling very happy today." sentence2 = "i am feeling extremely sad today." # 计算语义相似度 similarity = calculate_similarity(sentence1, sentence2) print("语义相似度:", similarity) ``` 结果分析: 通过 WordNet 计算得到的语义相似度值越接近 1,表示两个句子的语义越相似。在这个例子中,句子 1 和句子 2 都包含了情感词 happy 和 sad,这些词的同义词集合可能相关性较强,因此可能会有一定的语义相似度。实际结果需要根据具体情况进行分析。 ######[AI写代码神器 | 1241点数解答 | 2024-11-11 23:24:01]
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(字节豆包 | 554点数解答 | 2024-11-11 23:20:31)204
- Python 借助 WordNet 计算“开心”与“悲伤”句子语义相似度全解析 (讯飞星火 | 999点数解答 | 2024-11-11 23:23:14)239
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(GPT | 1241点数解答 | 2024-11-11 23:24:01)201
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)458
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)274
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)305
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)66
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)24
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)389
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)414