【Python入门系列】第十八篇:Python自然语言处理和文本挖掘

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: Python自然语言处理(Natural Language Processing,简称NLP)和文本挖掘是一门涉及处理和分析人类语言的学科。它结合了计算机科学、人工智能和语言学的知识,旨在使计算机能够理解、解释和生成人类语言。

前言

Python自然语言处理(Natural Language Processing,简称NLP)和文本挖掘是一门涉及处理和分析人类语言的学科。它结合了计算机科学、人工智能和语言学的知识,旨在使计算机能够理解、解释和生成人类语言。

一、Python常用的NLP和文本挖掘库

  1. NLTK(Natural Language Toolkit):它是Python中最受欢迎的NLP库之一,提供了丰富的文本处理和分析功能,包括分词、词性标注、句法分析和语义分析等。
  2. spaCy:这是一个高效的NLP库,具有快速的分词和实体识别功能。它还提供了预训练的模型,可用于执行各种NLP任务。
  3. Gensim:这是一个用于主题建模和文本相似度计算的库。它提供了一种简单而灵活的方式来处理大规模文本数据,并从中提取有用的信息。
  4. Scikit-learn:虽然它是一个通用的机器学习库,但也提供了一些用于文本分类、情感分析和文本聚类等NLP任务的工具。

二、Python自然语言处理和文本挖掘

1、文本预处理和词频统计

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from collections import Counter

# 定义文本数据
text = "自然语言处理是一门涉及处理和分析人类语言的学科。它结合了计算机科学、人工智能和语言学的知识。"

# 分词
tokens = word_tokenize(text)

# 去除停用词
stop_words = set(stopwords.words("chinese"))
filtered_tokens = [word for word in tokens if word.casefold() not in stop_words]

# 统计词频
word_freq = Counter(filtered_tokens)

# 打印结果
for word, freq in word_freq.items():
    print(f"{word}: {freq}")

结果:

在这里插入图片描述

这个示例展示了如何使用NLTK库进行文本预处理,包括分词和去除停用词。然后,使用Counter类计算词频,并打印结果。

2、文本分类

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC

# 定义文本数据和标签
texts = ["这是一个正面的评论", "这是一个负面的评论", "这是一个中性的评论"]
labels = [1, -1, 0]

# 分词和去除停用词
tokens = [word_tokenize(text) for text in texts]
stop_words = set(stopwords.words("chinese"))
filtered_tokens = [[word for word in token if word.casefold() not in stop_words] for token in tokens]

# 特征提取
vectorizer = TfidfVectorizer()
features = vectorizer.fit_transform([" ".join(token) for token in filtered_tokens])

# 模型训练和预测
model = SVC()
model.fit(features, labels)
test_text = "这是一个中性的评论"
test_token = [word for word in word_tokenize(test_text) if word.casefold() not in stop_words]
test_feature = vectorizer.transform([" ".join(test_token)])
predicted_label = model.predict(test_feature)

# 输出结果
print(f"测试文本: {test_text}")
print(f"预测标签: {predicted_label}")

输出结果:
在这里插入图片描述

这个案例演示了如何使用机器学习模型进行文本分类。首先,将文本数据分词并去除停用词。然后,使用TF-IDF向量化器提取文本特征。接下来,使用支持向量机(SVM)模型进行训练,并预测新的文本标签。在这个案例中,测试文本被预测为中性评论。

3、命名实体识别

import nltk
from nltk.tokenize import word_tokenize
from nltk import ne_chunk

# 定义文本数据
text = "巴黎是法国的首都,埃菲尔铁塔是巴黎的标志性建筑。"

# 分词和命名实体识别
tokens = word_tokenize(text)
tagged_tokens = nltk.pos_tag(tokens)
entities = ne_chunk(tagged_tokens)

# 输出结果
print(entities)

结果:
在这里插入图片描述

这个案例展示了如何使用命名实体识别(NER)来识别文本中的人名、地名、组织名等实体。首先,对文本进行分词和词性标注。然后,使用ne_chunk函数对标注的结果进行命名实体识别。在这个案例中,巴黎和法国被识别为地名,埃菲尔铁塔被识别为组织名。

4、情感分析

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC

# 定义文本数据和标签
texts = ["这部电影太棒了!", "这个产品质量很差。", "服务态度非常好。"]
labels = [1, -1, 1]

# 分词和去除停用词
tokens = [word_tokenize(text) for text in texts]
stop_words = set(stopwords.words("chinese"))
filtered_tokens = [[word for word in token if word.casefold() not in stop_words] for token in tokens]

# 特征提取
vectorizer = TfidfVectorizer()
features = vectorizer.fit_transform([" ".join(token) for token in filtered_tokens])

# 模型训练和预测
model = SVC()
model.fit(features, labels)
test_text = "这部电影非常好看!"
test_token = [word for word in word_tokenize(test_text) if word.casefold() not in stop_words]
test_feature = vectorizer.transform([" ".join(test_token)])
predicted_label = model.predict(test_feature)

# 输出结果
print(f"测试文本: {test_text}")
print(f"预测标签: {predicted_label}")

结果:

在这里插入图片描述

这个案例展示了如何使用机器学习模型进行情感分析。首先,将文本数据分词并去除停用词。然后,使用TF-IDF向量化器提取文本特征。接下来,使用支持向量机(SVM)模型进行训练,并预测新的文本情感标签。在这个案例中,测试文本被预测为正面情感。

5、词性标注

import nltk
from nltk.tokenize import word_tokenize

# 定义文本数据
text = "我喜欢吃水果。"

# 分词和词性标注
tokens = word_tokenize(text)
tagged_tokens = nltk.pos_tag(tokens)

# 输出结果
for token, tag in tagged_tokens:
    print(f"{token}: {tag}")

结果:

在这里插入图片描述

6、文本相似度计算

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

documents = ["This is the first document",
             "This document is the second document",
             "And this is the third one"]

tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(documents)

similarity_matrix = cosine_similarity(tfidf_matrix, tfidf_matrix)
print(similarity_matrix)

结果:
在这里插入图片描述

这个案例使用了sklearn库,计算文本之间的相似度。首先,使用TfidfVectorizer将文本转换为TF-IDF特征向量表示。然后,使用cosine_similarity方法计算TF-IDF矩阵的余弦相似度,得到相似度矩阵。

总结

总之,Python自然语言处理和文本挖掘是一种利用Python编程语言进行处理和分析文本数据的技术。它结合了自然语言处理和机器学习技术,可以用于从文本中提取有用的信息、进行情感分析、词性标注、命名实体识别等任务。Python自然语言处理和文本挖掘技术在许多领域都有广泛的应用,包括社交媒体分析、舆情监测、智能客服、信息抽取和机器翻译等。它为我们处理和分析大规模的文本数据提供了强大的工具和方法。

目录
相关文章
|
2天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
15 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3天前
|
Python
探索Python装饰器:从入门到实践
【10月更文挑战第32天】在编程世界中,装饰器是一种特殊的函数,它允许我们在不改变原有函数代码的情况下,增加额外的功能。本文将通过简单易懂的语言和实际案例,带你了解Python中装饰器的基础知识、应用以及如何自定义装饰器,让你的代码更加灵活和强大。
11 2
|
3天前
|
监控 Python
探索Python中的装饰器:从入门到实践
【10月更文挑战第31天】在Python的世界里,装饰器是那些隐藏在幕后的魔法师,它们拥有着改变函数行为的能力。本文将带你走进装饰器的世界,从基础概念到实际应用,一步步揭开它的神秘面纱。你将学会如何用几行代码增强你的函数功能,以及如何避免常见的陷阱。让我们一起来发现装饰器的魔力吧!
|
11天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!
|
13天前
|
数据采集 存储 数据库
Python中实现简单爬虫的入门指南
【10月更文挑战第22天】本文将带你进入Python爬虫的世界,从基础概念到实战操作,一步步指导你如何使用Python编写一个简单的网络爬虫。我们将不展示代码示例,而是通过详细的步骤描述和逻辑讲解,帮助你理解爬虫的工作原理和开发过程。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往数据收集新世界的大门。
|
11天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
【10月更文挑战第24天】 在Python的世界里,装饰器是一个既神秘又强大的工具。它们就像是程序的“隐形斗篷”,能在不改变原有代码结构的情况下,增加新的功能。本篇文章将带你走进装饰器的世界,从基础概念出发,通过实际例子,逐步深入到装饰器的高级应用,让你的代码更加优雅和高效。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
11天前
|
人工智能 自然语言处理 语音技术
利用Python进行自然语言处理(NLP)
利用Python进行自然语言处理(NLP)
26 1
|
11天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
23 1
|
3天前
|
存储 机器学习/深度学习 搜索推荐
Python编程入门:从零开始构建你的第一个程序
【10月更文挑战第32天】本文旨在通过浅显易懂的方式引导编程新手进入Python的世界。我们将一起探索Python的基础语法,并通过实例学习如何构建一个简单的程序。文章将不直接展示代码,而是鼓励读者在阅读过程中自行尝试编写,以加深理解和记忆。无论你是编程初学者还是希望巩固基础知识的开发者,这篇文章都将是你的良师益友。让我们开始吧!
|
4天前
|
开发者 Python
探索Python中的装饰器:从入门到实战
【10月更文挑战第30天】本文将深入浅出地介绍Python中一个强大而有趣的特性——装饰器。我们将通过实际代码示例,一步步揭示装饰器如何简化代码、增强函数功能并保持代码的可读性。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往更高效编程的大门。

热门文章

最新文章