当前位置: 首页 > web >正文

nltk-英文句子分词+词干化

一、准备工作

①安装好nltk模块并在:

nltk/nltk_data: NLTK Data

链接中手动下载模型并放入到对应文件夹下。

具体放到哪个文件夹,先执行看报错后的提示即可。

②准备pos_map.json文件,放置到当前文件夹下。该文件用于词性统一

{"NN": "n","NNS": "n","NNP": "n","NNPS": "n","PRP": "n","PRP$": "n","VB": "v","VBD": "v","VBG": "v","VBN": "v","VBP": "v","VBZ": "v","MD": "v","JJ": "a","JJR": "s","JJS": "s","RB": "r","RBR": "r","RBS": "r","IN": "r","TO": "r","CD": "n","DT": "a","WDT": "a","CC": "r","UH": "r"
}

二、执行下述代码

from nltk import word_tokenize, pos_tag
from nltk.stem import WordNetLemmatizer
import jsondef tokenize_and_tag(sentence):# 分词tokens = word_tokenize(sentence)# 词性标注tagged = pos_tag(tokens)# 分离单词和标签words = [item[0] for item in tagged]pos_tags = [item[1] for item in tagged]return words, pos_tags# 示例用法
wnl = WordNetLemmatizer()
sentence = "The quick brown fox jumps over the lazy dog."
words, pos_tags = tokenize_and_tag(sentence)print("分词列表:", words)
print("词性列表:", pos_tags)with open("pos_map.json", "r", encoding="utf-8") as f:pos_map: dict = json.load(f)pos_tags = [pos_map.get(tag, "n") for tag in pos_tags]for i in range(len(words)):print(words[i]+'--'+pos_tags[i]+'-->'+wnl.lemmatize(words[i],pos_tags[i]))

示例结果:

分词列表: ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']
词性列表: ['DT', 'JJ', 'NN', 'NN', 'VBZ', 'IN', 'DT', 'JJ', 'NN', '.']
The--a-->The
quick--a-->quick
brown--n-->brown
fox--n-->fox
jumps--v-->jump
over--r-->over
the--a-->the
lazy--a-->lazy
dog--n-->dog
.--n-->.

http://www.xdnf.cn/news/8189.html

相关文章:

  • 【Node.js】工具链与工程化
  • 04-Web后端基础(基础知识)
  • (中级)中级前端开发者指南:深入理解并实践JavaScript
  • c/c++的opencv腐蚀
  • JDK7Hashmap的头插法造成的环问题
  • 深度学习相比传统机器学习的优势
  • JAVA日志规范
  • webpack构建速度和打包体积优化方案
  • AAOS系列之----启动流程
  • SAP消息号 M8476
  • Enhancing Relation Extractionvia Supervised Rationale Verifcation and Feedback
  • AI炒菜机器人+一酱成菜构建万店一味的“风味引擎”
  • JS不要太简单(一):基本介绍及环境搭建
  • leetcode每日一题 -- 3362. 零数组变换 III
  • 浅谈测试驱动开发TDD
  • 第六十五篇 深入浅出Java字节码执行机制:从咖啡杯到高速引擎的蜕变
  • PyQt学习系列02-模型-视图架构与数据管理
  • 家政维修平台实战:08搭建服务分类
  • Excel合并单元格后,如何自动批量生成序号列
  • 三格电子——欧姆龙 CJ/CP系列 PLC 串口转网口详解
  • 计算机视觉与深度学习 | 用于图像分割的自监督学习(Self-Supervised Learning)方法综述
  • flutter dart class语法说明、示例
  • Chrome 插件网络请求的全面指南
  • python 打卡DAY27
  • Golang 并发小结
  • Java进阶之新特性
  • 大数据 笔记
  • VS Code + Maven 创建项目
  • Phantom 视频生成的流程
  • Python中accumulate方法