匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

「Python」用NLTK进行自然语言处理,初学者必读

Python是一种高效而且易于使用的脚本语言,完全可以处理各种各样的任务。其中,自然语言处理(NLP)是Python中最流行的任务之一,这主要是因为Python中有一个强大的自然语言工具包(NLTK)。

在本文中,我们将介绍Python中NLTK的一些基本功能,包括文本语料库、分词、词性标注、命名实体识别和情感分析等方面。

1. 文本语料库

要使用NLTK,首先需要安装并导入它。安装方法如下:

```
pip install nltk
```

导入方法如下:

```
import nltk
```

NLTK中提供了多种实际应用场景的语料库,包括英文、法语、西班牙语等多种语言,这些语料库可用于实际的自然语言处理任务。在本文中,我们使用英文语料库进行演示。

```
nltk.download('gutenberg')
```

其中,`gutenberg`是一种英文语料库,包括多种英文文学作品,如《简爱》、《汤姆叔叔的小屋》等。

2. 分词

分词是NLP中最基本的任务之一,其目的是将文本分解成单独的词语。NLTK提供了一些用于分词的工具。

```
from nltk.tokenize import word_tokenize
text = "This is a sample sentence"
words = word_tokenize(text)
print(words)
```

输出结果如下:

```
['This', 'is', 'a', 'sample', 'sentence']
```

3. 词性标注

词性标注是将文本中的每个单词标记为相应的词性,例如名词、动词、形容词等。NLTK中的`pos_tag`实现了词性标注。

```
from nltk import pos_tag
words = word_tokenize("This is a sample sentence")
print(pos_tag(words))
```

输出结果如下:

```
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('sample', 'JJ'), ('sentence', 'NN')]
```

其中,`DT`表示限定词,`VBZ`表示动词,`JJ`表示形容词,`NN`表示名词。

4. 命名实体识别

命名实体识别(NER)是NLP中的一个重要任务,其目的是从文本中识别出具有特殊意义的实体,例如人名、地名、组织机构等。在NLTK中,`ne_chunk`提供了NER的实现。

```
from nltk import ne_chunk
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag

text = "Barack Obama was born in Hawaii"
tokens = word_tokenize(text)
tags = pos_tag(tokens)
named_entities = ne_chunk(tags)

print(named_entities)
```

输出结果如下:

```
(S
  (PERSON Barack/NNP)
  (PERSON Obama/NNP)
  was/VBD
  born/VBN
  in/IN
  (GPE Hawaii/NNP))
```

其中,`(PERSON Barack/NNP)`和`(PERSON Obama/NNP)`表示人名,`(GPE Hawaii/NNP)`表示地名。

5. 情感分析

情感分析是NLTK中的又一重要任务,其目的是对文本中表达的情感进行分类,例如积极或消极。在NLTK中,可以使用`SentimentIntensityAnalyzer`实现情感分析。

```
from nltk.sentiment import SentimentIntensityAnalyzer

sia = SentimentIntensityAnalyzer()

print(sia.polarity_scores('This is a really good day!'))

print(sia.polarity_scores('I am feeling very sad today.'))
```

输出结果如下:

```
{'neg': 0.0, 'neu': 0.363, 'pos': 0.637, 'compound': 0.6486}
{'neg': 0.564, 'neu': 0.436, 'pos': 0.0, 'compound': -0.5256}
```

其中,`compound`表示整个文本的情感得分,值介于-1和1之间,越接近-1表示越消极,越接近1表示越积极。

NLTK是Python中最强大的自然语言工具包之一,它提供了许多强大的功能,包括文本语料库、分词、词性标注、命名实体识别和情感分析等方面。初学者可以通过对这些功能的掌握,逐步开始构建自己的自然语言处理应用程序。