Python爬虫 - 处理文字

Python爬虫 - 处理文字 首页 / 网络爬虫入门教程 / Python爬虫 - 处理文字

在上一章中,无涯教程已经了解了如何处理作为Web抓取内容获得的视频和图像。在本章中将使用Python库处理文本分析,并将对此进行详细了解。

您可以使用称为自然语言工具包(NLTK)的Python库执行文本分析,在介绍NLTK的概念之前,先了解文本分析和Web抓取之间的关系。

分析文本中的单词可以使无涯教程知道哪些单词很重要,哪些单词不寻常,如何对单词进行分组。该分析简化了网络抓取的任务。

NLTK入门

自然语言工具包(NLTK)是Python库的集合,该库专门设计用于识别和标签在自然语言(如英语)文本中找到的词性。

安装NLTK

您可以使用以下命令在Python中安装NLTK-

pip install nltk

如果您正在使用Anaconda,则可以使用以下命令为NLTK构建conda软件包-

无涯教程网

conda install -c anaconda nltk

下载NLTK的数据

安装NLTK之后,必须下载预设的文本存储库。但是在下载文本预设存储库之前,需要在 import 命令的帮助下导入NLTK,如下所示:

import nltk

现在,在以下命令的帮助下,可以下载NLTK数据-

nltk.download()

安装所有可用的NLTK软件包将需要一些时间,但是始终建议安装所有软件包。

安装其他必需的软件包

无涯教程还需要其他一些Python软件包,例如 gensimpattern ,以进行文本分析以及使用NLTK构建自然语言处理应用程序。

gensim    -  健壮的语义建模库,对许多应用程序很有用。可以通过以下命令安装-

pip install gensim

pattern    -  用于使 gensim 程序包正常工作。可以通过以下命令安装-

pip install pattern

Tokenization

将给定文本分成更小的单位的过程称为令牌,称为令牌化,这些标签可以是单词,数字或标点符号,也称为分词。

代币化

NLTK模块为令牌化提供了不同的程序包,无涯教程可以根据需要使用这些软件包,这里描述了一些软件包-

sent_tokenize                -  该包会将输入文本分为句子,您可以使用以下命令导入此程序包-

from nltk.tokenize import sent_tokenize

word_tokenize               - 该包会将输入文本分为单词,您可以使用以下命令导入此程序包-

from nltk.tokenize import word_tokenize

WordPunctTokenizer     - 该包会将输入文本以及标点符号分成单词,您可以使用以下命令导入此程序包-

from nltk.tokenize import WordPuncttokenizer

Stemming 

在任何语言中,单词都有不同的形式,由于语法原因,一种语言包含多种变体,因此,可以说在分析文本时提取单词的基本形式可能很有用。

PorterStemmer           - 此Python包使用Porter算法提取基本表单,您可以使用以下命令导入此程序包-

from nltk.stem.porter import PorterStemmer

LancasterStemmer   - 此Python包使用Lancaster的算法提取基本表单,您可以使用以下命令导入此程序包-

from nltk.stem.lancaster import LancasterStemmer

SnowballStemmer     - 此Python包使用Snowball的算法来提取基本形式,您可以使用以下命令导入此程序包-

from nltk.stem.snowball import SnowballStemmer

Lemmatization

提取词的基本形式的另一种方法是通过词法化,通常旨在通过词汇和词法分析来去除词尾变化,非词化后的任何单词的基本形式称为词法。

NLTK模块提供以下软件包以进行词法化-

WordNetLemmatizer  - 它将提取单词的基本形式,具体取决于它是否用作名词作为动词。您可以使用以下命令导入此程序包-

from nltk.stem import WordNetLemmatizer

Chunking分块

分块,这意味着将数据分成小块,是自然语言处理中识别语音和名词短语之类的短短语的重要过程之一。可以借助分块过程来获得句子的结构。

在此示例中,将使用NLTK Python模块实现名词短语分块, NP分块是分块的一种,它将在句子中找到名词短语块。

名词短语分块步骤

无涯教程需要按照以下给出的步骤来实现名词短语组块-

步骤1 - Chunk语法定义 ,在第一步中,将定义分块的语法,它由需要遵循的规则组成。

步骤2 - 创建Chunk解析器,现在,将创建一个chunk解析器。它将解析语法并给出输出。

步骤3 - 输出,在最后一步中,输出将以树格式生成。

首先,需要导入NLTK包,如下所示:

import nltk

接下来,需要定义句子。此处DT:行列式,VBP:动词,JJ:形容词,IN:介词,NN:名词。

sentence=[("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]

接下来,以正则表达式的形式给出语法。

grammar="NP:{<DT>?<JJ>*<NN>}"

现在,下一行代码将定义用于解析语法的解析器。

parser_chunking=nltk.RegexpParser(grammar)

现在,解析器将解析该句子。

parser_chunking.parse(sentence)

接下来,在变量中提供输出。

output=parser_chunking.parse(sentence)

借助以下代码,可以以树的形式绘制输出,如下所示。

output.draw()
Phrase 块状

Word of Bag(BoW)

单词袋(BoW)是自然语言处理中的一种有用模型,基本上用于从文本中提取特征。从文本中提取特征后,可以将其用于机器学习算法的建模中,因为原始数据无法在ML应用程序中使用。

BoW模型的工作

最初,模型从文档中的所有单词中提取词汇。

假设无涯教程有以下两个句子-

Sentence1   -  This is an example of Bag of  Words model.

Sentence2   -  We can extract features by using Bag o Words model.

现在,通过考虑这两个句子,得到以下14个不同的词-

  • This
  • is
  • an
  • example
  • bag
  • of
  • words
  • model
  • we
  • can
  • extract
  • features
  • by
  • using

构建BoW模型

先研究以下Python脚本,它将在NLTK中构建BoW模型。

首先,导入以下包-

from sklearn.feature_extraction.text import CountVectorizer 

接下来,定义句子集-

Sentences=['This is an example of Bag of Words model.', ' We can extract
   features by using Bag of Words model.']
   vector_count=CountVectorizer()
   features_text=vector_count.fit_transform(Sentences).todense()
   print(vector_count.vocabulary_)

,它表明在以上两个句子中无涯教程有14个不同的词-

{
   'this': 10, 'is': 7, 'an': 0, 'example': 4, 'of': 9, 
   'bag': 1, 'words': 13, 'model': 8, 'we': 12, 'can': 3, 
   'extract': 5, 'features': 6, 'by': 2, 'using':11
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

人工智能基础课 -〔王天一〕

数据结构与算法之美 -〔王争〕

Java并发编程实战 -〔王宝令〕

说透敏捷 -〔宋宁〕

接口测试入门课 -〔陈磊〕

如何讲好一堂课 -〔薛雨〕

大数据经典论文解读 -〔徐文浩〕

Tony Bai · Go语言第一课 -〔Tony Bai〕

零基础GPT应用入门课 -〔林健(键盘)〕

好记忆不如烂笔头。留下您的足迹吧 :)