python从文本中提取人名
时间: 2023-09-11 18:12:32 浏览: 271
使用python爬取网站上的姓名
要从文本中提取人名,可以使用Python中的自然语言处理工具NLTK(Natural Language Toolkit)和正则表达式。具体步骤如下:
1. 导入需要的库和模块:
```
import nltk
from nltk.tokenize import word_tokenize
import re
```
2. 下载NLTK中必要的数据集:
```
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
```
3. 读取文本文件并进行分词:
```
with open('text.txt', 'r') as file:
text = file.read()
words = word_tokenize(text)
```
4. 对分词后的文本进行词性标注:
```
tagged_words = nltk.pos_tag(words)
```
5. 利用正则表达式匹配词性为NNP(专有名词)的词汇,并将其提取出来:
```
names = []
for word, tag in tagged_words:
if re.match('[NNP]+', tag):
names.append(word)
```
这里使用了正则表达式 '[NNP]+',表示匹配一个或多个词性为NNP的单词。
6. 最后得到的names列表中即为文本中提取出来的人名。
完整代码如下:
```
import nltk
from nltk.tokenize import word_tokenize
import re
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
with open('text.txt', 'r') as file:
text = file.read()
words = word_tokenize(text)
tagged_words = nltk.pos_tag(words)
names = []
for word, tag in tagged_words:
if re.match('[NNP]+', tag):
names.append(word)
print(names)
```
阅读全文