NLP人工智能【免费下载链接】TextBlobSimple, Pythonic, text processing--Sentiment analysis, part-of-speech tagging, noun phrase extraction, translation, and more.项目地址https://gitcode.com/gh_mirrors/te/TextBlob点击查看免费下载TextBlob 是一个面向文本数据的 Python 库以极简的 API 封装了自然语言处理NLP中常见的任务词性标注、名词短语抽取、情感分析、文本分类、分词、解析、词形还原与拼写纠正等。本文以 TextBlob 官方文档的索引页docs/index.rst为核心骨架结合仓库源码src/textblob/blob.py、src/textblob/download_corpora.py 等深入讲解其安装方式、核心数据模型与各功能模块读完即可上手完成第一个完整的文本分析任务并理解其底层实现原理。一、TextBlob 是什么TextBlob 是一个用于处理文本数据的 Python 库它提供了一个简洁统一的 API让你可以快速进入常见 NLP 任务的实践词性标注part-of-speech tagging、名词短语抽取noun phrase extraction、情感分析sentiment analysis、文本分类classification等。它的设计哲学非常直白把 TextBlob 对象当作“学会了 NLP 的 Python 字符串”来使用。你可以对它做切片、拼接、比较、格式化也可以直接调用.tags、.noun_phrases、.sentiment等属性完成语言分析。官方文档对这一设计有明确描述见 docs/quickstart.rst 第 8 行You can treat TextBlob objects as if they were Python strings that learned how to do Natural Language Processing.TextBlob 站在 NLTK 与 pattern 两个库的肩膀上与二者兼容良好。从源码看src/textblob/blob.py 中的默认组件分别为词性标注器NLTKTagger基于 NLTK 的 averaged perceptron tagger名词短语抽取器FastNPExtractor情感分析器PatternAnalyzer基于 pattern 库解析器PatternParser分词器WordTokenizer这些默认值定义在 src/textblob/blob.py 的BaseBlob类属性中。二、官方文档中的经典示例docs/index.rst 用一个完整的电影评论示例展示了 TextBlob 的核心能力。下面这段代码完整复现了官方示例并给出了每一步的实际输出from textblob import TextBlob text The titular threat of The Blob has always struck me as the ultimate movie monster: an insatiably hungry, amoeba-like mass able to penetrate virtually any safeguard, capable of--as a doomed doctor chillingly describes it--assimilating flesh on contact. Snide comparisons to gelatin be damned, its a concept with the most devastating of potential consequences, not unlike the grey goo scenario proposed by technological theorists fearful of artificial intelligence run rampant. blob TextBlob(text) # 词性标注返回 (word, POS tag) 元组列表 blob.tags # [(The, DT), (titular, JJ), # (threat, NN), (of, IN), ...] # 名词短语抽取返回 WordList blob.noun_phrases # WordList([titular threat, blob, # ultimate movie monster, # amoeba-like mass, ...]) # 逐句情感分析 for sentence in blob.sentences: print(sentence.sentiment.polarity) # 0.060 # -0.341这个示例同时触及了 TextBlob 的四个核心 APItags、noun_phrases、sentences与sentiment后续小节将逐一展开讲解它们的实现与用法。三、核心功能一览官方文档的索引页明确列出了 TextBlob 支持的功能特性它们是本文后续各小节的组织线索名词短语抽取Noun phrase extraction词性标注Part-of-speech tagging情感分析Sentiment analysis文本分类Classification支持 Naive Bayes、Decision Tree分词Tokenization把文本切分为词与句子词与短语频次统计Word and phrase frequencies解析Parsingn-gram 抽取词形变化复数化与单数化与词形还原lemmatization拼写纠正Spelling correction通过扩展extensions添加新模型或新语言WordNet 集成上述功能分别由src/textblob/目录下的模块承载分词在 src/textblob/tokenizers.py、词性标注在 src/textblob/taggers.py、情感分析在 src/textblob/sentiments.py、名词短语抽取在 src/textblob/np_extractors.py、分类器在 src/textblob/classifiers.py。四、安装与数据下载官方文档给出的安装方式非常简洁两条命令即可完成$ pip install -U textblob $ python -m textblob.download_corpora第一条命令安装 TextBlob 库第二条命令下载运行所需的 NLTK 语料库。如果需要修改默认的语料下载目录可以设置NLTK_DATA环境变量。4.1 只下载最小语料集lite 模式如果你只打算使用 TextBlob 的默认模型不做任何模型替换可以传入lite参数只下载基础功能所需的最小语料集$ python -m textblob.download_corpora lite查看 src/textblob/download_corpora.py可以清楚地看到最小语料集与附加语料集的构成MIN_CORPORA [ brown, # Required for FastNPExtractor punkt_tab, # Required for WordTokenizer wordnet, # Required for lemmatization averaged_perceptron_tagger_eng, # Required for NLTKTagger ] ADDITIONAL_CORPORA [ conll2000, # Required for ConllExtractor movie_reviews, # Required for NaiveBayesAnalyzer ]可见brown语料支撑FastNPExtractor名词短语抽取、punkt_tab支撑WordTokenizer分词、wordnet支撑词形还原、averaged_perceptron_tagger_eng支撑NLTKTagger词性标注而conll2000与movie_reviews则只在换用ConllExtractor或NaiveBayesAnalyzer时才需要。默认运行download_corpora会下载全部六个语料。4.2 其他安装途径conda 安装TextBlob 也是 conda-forge 频道的软件包可用以下命令安装$ conda install -c conda-forge textblob $ python -m textblob.download_corpora从源码安装克隆仓库后执行python setup.py install即可安装到 site-packages。完整安装步骤可参考 docs/install.rst。4.3 版本迁移注意事项自 TextBlob 0.8.0 起核心包由text重命名为textblob。旧版本 0.7.1用户只需改写 import 语句即可完成迁移# 新写法 from textblob import TextBlob, Word, Blobber from textblob.classifiers import NaiveBayesClassifier from textblob.taggers import NLTKTagger # 旧写法0.7.1 及之前 # from text.blob import TextBlob, Word, Blobber # from text.classifiers import NaiveBayesClassifier # from text.taggers import NLTKTagger4.4 依赖说明TextBlob 依赖 NLTK 3运行pip install textblob时 NLTK 会自动安装。部分功能如最大熵分类器需要numpy但基本用法不依赖它。五、从字符串到 NLP 对象TextBlob 核心数据模型textblob包对外暴露五个核心类见 src/textblob/init.pyTextBlob、Word、Sentence、Blobber、WordList。其中TextBlob、Sentence都继承自BaseBlobsrc/textblob/blob.py因此 Sentence 拥有与 TextBlob 完全一致的属性与方法。BaseBlob.__init__接受text以及可选的tokenizer、pos_tagger、np_extractor、analyzer、parser、classifier参数未指定的组件自动回退到默认实现通过_validated_param校验并回退见 src/textblob/blob.py。5.1 创建第一个 TextBlob from textblob import TextBlob wiki TextBlob(Python is a high-level, general-purpose programming language.)一个TextBlob对象的内部状态包括raw原始文本、string同 raw、stripped去除标点并小写后的文本以及挂载的各类模型组件。5.2 TextBlobs 就像 Python 字符串TextBlob 通过StringlikeMixin与BlobComparableMixinsrc/textblob/mixins.py实现了与字符串无缝协作的能力 zen TextBlob( ... Beautiful is better than ugly. ... Explicit is better than implicit. ... Simple is better than complex. ... ) zen[0:19] # 支持切片 TextBlob(Beautiful is better) zen.upper() # 支持字符串方法 TextBlob(BEAUTIFUL IS BETTER THAN UGLY. EXPLICIT IS BETTER THAN IMPLICIT. SIMPLE IS BETTER THAN COMPLEX.) zen.find(Simple) # 支持查找 65 apples TextBlob(apples) # 可与字符串比较 True TextBlob(apples) and TextBlob(bananas) # 可拼接 TextBlob(apples and bananas)__add__的实现src/textblob/blob.py接受字符串或 BaseBlob 对象并返回同类型的 TextBlob所有比较运算符则由_cmpkey返回self.raw驱动。六、词性标注Part-of-Speech Tagging通过tags属性等价于pos_tags即可获取词性标注结果 wiki.tags [(Python, NNP), (is, VBZ), (a, DT), (high-level, JJ), (general-purpose, JJ), (programming, NN), (language, NN)]每个元素是(word, POS tag)形式的元组其中 tag 是 Penn Treebank 词性标签如NNP专有名词、VBZ动词第三人称单数、DT限定词、JJ形容词。从实现角度看src/textblob/blob.pypos_tags对TextBlob会先切分为句子再聚合每个句子的标注结果对Sentence则直接调用pos_tagger.tag()并用PUNCTUATION_REGEX过滤标点标签。默认标注器是NLTKTagger其定义与导出见 src/textblob/en/taggers.py该模块还提供了基于 pattern 的PatternTagger。七、名词短语抽取Noun Phrase Extraction通过noun_phrases属性可以抽取文本中的名词短语 wiki.noun_phrases WordList([python])返回类型是WordList——一个“带额外方法的 Python list”。实现上src/textblob/blob.py调用np_extractor.extract(self.raw)对每个抽取结果执行strip().lower()归一化并过滤掉长度小于等于 1 的短语。默认的FastNPExtractor需要brown语料支撑若需要更精细的抽取可换用ConllExtractor基于 conll2000 语料二者都在 src/textblob/en/np_extractors.py 中实现。八、情感分析Sentiment Analysissentiment属性返回一个命名元组Sentiment(polarity, subjectivity)polarity情感极性取值范围 [-1.0, 1.0]负值代表负面情绪、正值代表正面情绪subjectivity主观性取值范围 [0.0, 1.0]0.0 非常客观1.0 非常主观。 testimonial TextBlob(Textblob is amazingly simple to use. What great fun!) testimonial.sentiment Sentiment(polarity0.39166666666666666, subjectivity0.4357142857142857) testimonial.sentiment.polarity 0.39166666666666666默认情感分析器是PatternAnalyzersrc/textblob/en/sentiments.py其底层语料是 src/textblob/en/en-sentiment.xml并配合en-lexicon.txt、en-morphology.txt、en-context.txt、en-entities.txt等资源加载逻辑见 src/textblob/en/init.py。该模块还提供了基于朴素贝叶斯的NaiveBayesAnalyzer需movie_reviews语料以及polarity、subjectivity等便捷函数。8.1 逐句情感分析TextBlob 可以按句切分并对每个句子独立分析。上一节官方示例中的循环等价于 for sentence in blob.sentences: ... print(sentence.sentiment.polarity) 0.060 -0.341sentences属性src/textblob/blob.py通过sent_tokenize切句并为每个句子对象计算其在原始文本中的start_index与end_index见_create_sentence_objectssrc/textblob/blob.py。因此你可以这样定位句子在原文中的位置 for s in zen.sentences: ... print(s) ... print(---- Starts at index {}, Ends at index {}.format(s.start, s.end)) Beautiful is better than ugly. ---- Starts at index 0, Ends at index 30 Explicit is better than implicit. ---- Starts at index 31, Ends at index 64 Simple is better than complex. ---- Starts at index 65, Ends at index 95每个Sentence对象与其父级 TextBlob 共享同一套模型组件tokenizer、np_extractor、pos_tagger、analyzer、parser、classifier这也是Sentence与TextBlobAPI 完全一致的原因。九、分词TokenizationTextBlob 提供词级与句子级两种分词 zen.words WordList([Beautiful, is, better, than, ugly, Explicit, is, better, than, implicit, Simple, is, better, than, complex]) zen.sentences [Sentence(Beautiful is better than ugly.), Sentence(Explicit is better than implicit.), Sentence(Simple is better than complex.)]words返回排除标点的词列表WordList而tokens属性会包含标点符号见 src/textblob/blob.py 的注释说明。word_tokenize(text, include_puncFalse)是底层分词函数src/textblob/tokenizers.py默认的WordTokenizer会先按句切分再切词。更高级的分词用法如自定义 tokenizer、按句子分词参见 docs/advanced_usage.rst。9.1 n-gramngrams(n3)返回 n 个连续词的列表每项是一个WordList blob TextBlob(Now is better than never.) blob.ngrams(n3) [WordList([Now, is, better]), WordList([is, better, than]), WordList([better, than, never])]实现位于 src/textblob/blob.py对n 0直接返回空列表否则用滑动窗口从self.words中切分。十、词形变化、词形还原与 WordNet 集成words中的每个元素都是Word对象——一个str子类src/textblob/blob.py额外带有词形与 WordNet 相关方法。10.1 单数化与复数化 sentence TextBlob(Use 4 spaces per indentation level.) sentence.words[2].singularize() space sentence.words[-1].pluralize() levels10.2 词形还原Lemmatization from textblob import Word w Word(octopi) w.lemmatize() octopus w Word(went) w.lemmatize(v) # 传入 WordNet 词性动词 golemmatize(posNone)的底层实现src/textblob/blob.py使用 NLTK 的WordNetLemmatizerpos为None时默认按名词处理否则通过_penn_to_wordnet把 Penn 标签如NN、VBZ转换为 WordNet 词性NOUN、VERB、ADJ、ADV。10.3 WordNet 同义词集与释义 from textblob import Word from textblob.wordnet import VERB word Word(octopus) word.synsets [Synset(octopus.n.01), Synset(octopus.n.02)] Word(hack).get_synsets(posVERB) [Synset(chop.v.05), Synset(hack.v.02), Synset(hack.v.03), ...] Word(octopus).definitions [tentacles of octopus prepared as food, bottom-living cephalopod having a soft oval body with eight long tentacles]Word的synsets、definitions都是缓存属性cached_property通过get_synsets/define方法支持按词性过滤src/textblob/blob.py。textblob.wordnet模块还允许直接创建Synset对象并计算语义相似度 from textblob.wordnet import Synset octopus Synset(octopus.n.02) shrimp Synset(shrimp.n.03) octopus.path_similarity(shrimp) 0.1111111111111111十一、WordList增强版的词列表WordList是list的子类src/textblob/blob.py初始化时会把每个字符串包装成Word对象并额外提供批量方法count支持case_sensitive参数、upper、lower、singularize、pluralize、lemmatize、stem等。 animals TextBlob(cat dog octopus) animals.words WordList([cat, dog, octopus]) animals.words.pluralize() WordList([cats, dogs, octopodes])stem方法底层支持 NLTK 的多种词干提取器PorterStemmer、LancasterStemmer、SnowballStemmer(english)默认使用 Portersrc/textblob/blob.py。十二、拼写纠正Spelling CorrectionTextBlob 提供了句子级与词级两种拼写纠正接口 b TextBlob(I havv goood speling!) print(b.correct()) I have good spelling! from textblob import Word w Word(falibility) w.spellcheck() [(fallibility, 1.0)]Word.spellcheck()返回(word, confidence)建议列表Word.correct()取置信度最高的建议TextBlob.correct()则先用正则\w|[^\w\s]|\s切分词、标点与空白再逐词纠正后拼接src/textblob/blob.py。拼写纠正基于 Peter Norvig 的 “How to Write a Spelling Corrector” 思想由 pattern 库实现suggest函数见 src/textblob/en/init.py准确率约为 70%。十三、词与名词短语频次统计TextBlob 提供两种频次统计方式。13.1 通过 word_counts 字典 monty TextBlob(We are no longer the Knights who say Ni. ... We are now the Knights who say Ekki ekki ekki PTANG.) monty.word_counts[ekki] 3word_countssrc/textblob/blob.py先对每个词做lowerstrip归一化因此不区分大小写未出现的词频次为 0。类似地np_counts提供名词短语频次字典。13.2 通过 count() 方法 monty.words.count(ekki) 3 monty.words.count(ekki, case_sensitiveTrue) # 默认大小写不敏感 2 wiki.noun_phrases.count(python) # 名词短语同样适用 1WordList.countsrc/textblob/blob.py在case_sensitiveFalse默认时对词做小写化比较传入True时退化为普通list.count。十四、解析Parsingparse()返回带句法标注的字符串每个 token 的格式为word/POS/chunk/PNP b TextBlob(And now for something completely different.) print(b.parse()) And/CC/O/O now/RB/B-ADVP/O for/IN/B-PP/B-PNP something/NN/B-NP/I-PNP completely/RB/B-ADJP/O different/JJ/I-ADJP/O ././O/O默认使用 pattern 的解析器PatternParsersrc/textblob/en/parsers.py其词性标注与形态资源见 src/textblob/en/init.py 中Parser与lexicon的定义。十五、文本分类ClassificationTextBlob 内置 Naive Bayes 与 Decision Tree 两种分类器src/textblob/classifiers.py两者都继承自NLTKClassifier内部包装nltk.classify模块。官方文档的 classifiers 教程docs/classifiers.rst提供了完整实战指引这里给出最简示例 from textblob import TextBlob from textblob.classifiers import NaiveBayesClassifier train [ ... (I love this sandwich., pos), ... (This is an amazing place!, pos), ... (I feel very good about these beers., pos), ... (I do not like this restaurant, neg), ... (I am tired of this stuff., neg), ... (I cant deal with this, neg), ... (My boss is horrible., neg) ... ] cl NaiveBayesClassifier(train) cl.classify(I feel amazing!) pos blob TextBlob(The beer is good. But the hangover is horrible., classifiercl) for s in blob.sentences: ... print(s) ... print(s.classify()) The beer is good. pos But the hangover is horrible. neg训练集可以是(text, label)元组列表也可以是 CSV/JSON 等文件对象BaseClassifier._read_data会自动探测文件格式见 src/textblob/classifiers.py格式实现见 src/textblob/formats.py。默认特征提取器basic_extractor以 “文档中是否包含训练集词汇” 构造布尔特征字典NaiveBayesClassifier还提供prob_classify标签概率分布、informative_features/show_informative_features最具信息量的特征与accuracy测试集准确率等方法。十六、扩展机制新模型与新语言TextBlob 支持通过 “extensions” 扩展包添加自定义模型或全新语言扩展包可通过 PyPI 安装$ pip install textblob-name其中name为扩展包名。官方文档docs/extensions.rst列出了社区维护的扩展语言扩展textblob-fr法语、textblob-de德语词性标注器扩展textblob-aptagger基于 Averaged Perceptron 的快速标注器从架构上看扩展之所以可行是因为BaseBlob的所有模型组件tokenizer、pos_tagger、np_extractor、analyzer、parser、classifier都通过抽象基类src/textblob/base.py 中的BaseTokenizer、BaseTagger、BaseNPExtractor、BaseSentimentAnalyzer、BaseParser定义接口任何实现了相应接口的第三方模型都可以注入 TextBlob。多语言支持的基础是src/textblob/en/目录结构——每种语言的数据文件如 src/textblob/en/en-lexicon.txt、src/textblob/en/en-sentiment.xml随语言包一起分发。想要了解如何编写自己的扩展可参考 CONTRIBUTING.rst 中关于扩展开发extension development的说明。十七、性能优化Blobber 工厂当需要批量创建共享同一套模型的 TextBlob 时可以使用Blobber工厂src/textblob/blob.py。它把 tagger、tokenizer、parser、classifier、np_extractor 固化在工厂中避免为每个 Blob 重复加载模型 from textblob import Blobber from textblob.taggers import NLTKTagger from textblob.tokenizers import SentenceTokenizer tb Blobber(pos_taggerNLTKTagger(), tokenizerSentenceTokenizer()) blob1 tb(This is one blob.) blob2 tb(This blob has the same tagger and tokenizer.) blob1.pos_tagger is blob2.pos_tagger True十八、进阶阅读路线本文覆盖了 TextBlob 的全部核心能力。官方文档还提供了更深入的专题指南全部位于 docs/ 目录下docs/install.rst完整的安装、升级与依赖说明docs/quickstart.rst官方 Quickstart 教程本文主要实操示例的出处docs/classifiers.rst构建自己的文本分类系统docs/advanced_usage.rst自定义 POS tagger、名词短语 chunker 与 tokenizer 的高级用法docs/extensions.rst扩展包清单与扩展开发入口docs/api_reference.rst完整的 API 参考docs/changelog.rst版本变更记录TextBlob 的设计目标是把常见文本处理操作统一到一个熟悉的接口之下一条TextBlob(text)语句即可同时获得分词、词性标注、名词短语、情感极性、n-gram、词形变化与拼写纠正等全部能力。无论是快速验证 NLP 想法、构建文本分类原型还是为产品接入情感分析TextBlob 都是一条上手成本极低、且与 NLTK / pattern 生态无缝衔接的路径。赞分享NLP人工智能【免费下载链接】TextBlobSimple, Pythonic, text processing--Sentiment analysis, part-of-speech tagging, noun phrase extraction, translation, and more.项目地址https://gitcode.com/gh_mirrors/te/TextBlob点击查看免费下载相关推荐TextBlob 快速上手指南用 Pythonic 的方式完成词性标注、情感分析与文本挖掘TextBlob 快速上手指南用 Pythonic 的方式完成词性标注、情感分析与文本挖掘 本文是一篇基于 docs/quickstart.rst httpsNLP人工智能TextBlob 文本处理库实战指南词性标注、情感分析、名词短语提取与文本分类TextBlob 文本处理库实战指南词性标注、情感分析、名词短语提取与文本分类 TextBlob 是一个面向 Python 的简化文本处理库它把常见的自然语NLP人工智能PaddleNLP Taskflow 知识挖掘knowledge_mining实战WordTag 词类标注与 NPTag 名词短语标注PaddleNLP Taskflow 知识挖掘knowledge_mining实战WordTag 词类标注与 NPTag 名词短语标注 PaddleNLP人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇Umi-OCR开启你的离线文字识别新纪元下一篇免费跨平台音乐播放器LX Music桌面版你的开源音乐管家创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
MCP Spec Plugin for Claude:用内置 Skills 检索 MCP 决策历史并起草 SEP 提案 人工智能AI Agent工具调用 【免费下载链接】specification Specification and documentation for the Model Context Protocol 项目地址: https://gitcode.com/gh_mirrors/specification2/specification 点击查看 免费下载 本文介绍 plugins/mcp-spec 插件… · 2026/9/25 10:38:54
MinGW-w64 GCC工具链选型指南:posix-seh-msvcrt配置与多线程异常处理实战 简介:这是一份面向 Windows 平台 C/C 开发者的 MinGW-w64 完整工具链发行包,版本为 GCC 13.2.0,采用 POSIX 线程模型与 SEH 异常处理机制,并链接 msvcrt 运行时库,适合需要在 Windows 上获得类 GNU/Linux 编译体验、又… · 2026/9/25 10:38:42
Atlas 300V部署YOLO全流程:昇腾推理卡环境搭建与模型转换实战 “Atlas部署YOLO”这六个字,是我最近在好几个AI相关的社群里见得最多的一句话。点进去一看,问的人大多一脸迷茫,手里刚好有一张Atlas 300V Pro(24G)推理卡,或者是公司刚采购了一批昇腾设备,领导… · 2026/9/25 11:07:23
DeskcommCRM深度拆解:用沟通驱动客户关系管理的实战指南 做客户管理系统最怕什么?不是功能不够多,而是功能太多了,销售不愿意用,最后沦为一个昂贵的Excel仓库。我见过太多团队砸钱上Salesforce或者自研系统,结果一线压根不买账,数据不录、跟进不写、客户资料散落在… · 2026/9/25 11:07:11
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37