文本分析与命名实体识别实践指南

随着企业业务和市场价值的扩展,从商业数据中获取重要和有意义的洞察变得至关重要。另一方面,从逐渐增加的非结构化文本数据中获取洞察可能是一项繁琐且耗时的任务。缺乏结构化自然语言格式的文本数据在生成有意义的趋势、模式和洞察以获取商业价值方面可能非常贫乏。在这里,文本分析通过汇总自然语言处理、统计和语言学技术来处理大量非结构化文本数据的知识库,为成长中的组织和企业节省了时间。

命名实体识别

命名实体识别是文本分析和文本挖掘中非常关键的技术,通过识别位置、组织、人员等实体,并把这些实体分类到几个预定义的类别中,从而从文本数据中提取重要信息。

教程概览

在本教程中,将探讨如何执行命名实体识别,并从文本语料库中获得有意义的洞察。将涵盖以下内容:

  • Python中导入必要的库
  • 加载数据
  • 文本预处理和探索性数据分析(EDA)
  • 使用SpaCy进行命名实体识别

命名实体识别的先决条件

如果尚未安装,请安装以下依赖项!在项目目录中,请确保添加一个名为‘requirements.txt’的文本文件,并按顺序添加以下库:

NLTK SpaCy word cloud NumPy Pandas Plotly Matplotlib Seaborn

最后,在保存了包含上述依赖项的requirements.txt文件后,请确保在终端中运行此命令:

pip install -r requirements.txt

导入必要的Python

在加载数据之前,让先导入必要的库。

import numpy as np import pandas as pd import re import nltk import spacy import matplotlib.pyplot as plt import seaborn as sns plt.style.use(‘ggplot’) import plotly.offline as po from plotly.offline import init_notebook_mode,iplot import plotly.graph_objs as go from plotly import tools init_notebook_mode(connected=True) import plotly.figure_factory as ff import os print(os.listdir(‘../input/’))

加载数据:命名实体识别

现在让加载数据集!数据集包含了3150条亚马逊客户对Alexa Echo、Firestick、Echo Dot等的评价。

data = pd.read_csv('../input/amazon-alexa-reviews/amazon_alexa.tsv', delimiter='t') data.shape data.head(10)

让对输出进行一个基本检查:

文本预处理和EDA

在进行任何分析之前,预处理文本是极其关键的。健康的文本对于获得洞察非常有用,而非结构化的文本则会带来各种问题和不良结果/洞察。根据数据科学家的说法,“进行数据分析所需的60%的艰苦工作是在预处理和清理数据时完成的”。

首先,来检查一些事情:

data.info() data.describe() data.isnull().any()

可以看到数据中没有缺失/空值!非常棒。

现在让进行一些文本预处理:

nltk.download('stopwords') from nltk.corpus import stopwords from nltk.stem.porter import PorterStemmer corpus= [] for i in range(0,3150):   review = re.sub('[^a-zA-Z]', "", data['verified_reviews'][i])   review = review.lower()   review = review.split()   ps = PorterStemmer()   review = [ps.stem(word) for word in review if not word in set(stopwords.words('english'))]   review = "".join(review)   corpus.append(review)

太好了!文本现在干净了,准备好进行数据分析了。

在开始之前,让给所有读者简要介绍一下SpaCy。

SpaCy是一个开源的自然语言处理库,被认为是所有NLP库中最为流畅和快速的,用于文本分析任务。它内置了命名实体识别模型,帮助数据科学家在短时间内生成分析报告,因此他们不必花费数小时在预处理上,可以继续进行建模部分!

现在让看看如何使用SpaCy进行NER!

import spacy nlp = spacy.load('en') def text_entities(text):   doc = nlp(text)   for entity in doc.ents:     print(f'Entity: {ent}, Label: {ent.label_}, {spacy.explain(ent.label_)}') for i in range(15,50):   sentence = data['verified_reviews'][i]   doc = nlp(sentence)   spacy.displacy.render(doc, style='ent', jupyter=True)

让看看输出:

希望在探索命名实体识别及其工作原理时有所收获。在本文中,成功地学习了如何:

  • 对文本数据进行简单的预处理
  • 进行标准文本分析实践,以收集数据中的信息和模式
  • 执行命名实体识别,成功检测实体并对它们进行分类,以便在NLP中进行更高级的应用!
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485