NLP之英文分词

任务

对Excel中的摘要列的英文段落进行英文分词、词性标注,将结果导入Excel

下面展示代码`。

import nltk
from nltk.tokenize import WordPunctTokenizer, sent_tokenize
from nltk.corpus import stopwords
from nltk.tag import pos_tag
import numpy as np
import pandas as pd
import xlwt

#英文断句分词	
def wo_se_broken(sentence):
	#先分句,再分词
	paragraph = sentence#句子与下一个句子之间要用空格隔开
	sents=nltk.sent_tokenize(paragraph.lower())#sent_tokenize返回分句后的句子列表
	#print(sents)
	words=[]
	for sent in sents:
		text_list=nltk.word_tokenize(sent)#分词
		#去掉标点符号
		english_punctuations=[',', '.', ':', ';', '?', '(', ')', '[', ']', '&', '!', '*', '@', '#', '$', '%']
		word_1=[w for w in text_list if w not in english_punctuations]
		#去掉停用词(停用词均为小写形式,需先将句子转为小写形式)
		stops = set(stopwords.words("english"))#set()函数创建一个无序不重复元素集
		word_2=[w for w in word_1 if w not in stops]
		word_3=pos_tag(word_2)#词性标注
		words=words+word_3
	#print(words)
	return words
		
path='E://网页下载/20210912071950877.XLSX'
path_end='E://网页下载/0-500_processed.xls'

data = pd.read_excel(path)
df1=pd.DataFrame(data)
abstracts=df1['摘要'].values#获取摘要列数据
#print(abstracts)


#以字典形式创建DataFrame
value=[]
data={'摘要分词':value}

#摘要列断词,每行一个循环
for i in range(len(abstracts)):
	abstract=abstracts[i]
	ab_broken=wo_se_broken(abstract)
	value.append(ab_broken)
#print(data)
df2=pd.DataFrame(data,columns=['摘要分词'])
df2.to_excel(path_end,columns=['摘要分词'])

一些注意的问题:
1、DataFrame是一种数据结构,对于读取到的Excel数据,须先转换成DataFrame格式,才可进行操作
DataFrame(数据,list索引(行数),list列名)
2、将结果导入Excel中时(我所得结果为断词后的列表),需先以元组方式 创建DataFrame结构,然后以DataFrame结构的结构写入Excel