当前位置:   article > 正文

利用spaCy对中文文本分词和去除停用词处理_spacy 中文分词

spacy 中文分词

spaCy简介

spaCy语言模型包含了一些强大的文本分析功能,如词性标注和命名实体识别功能。目前spaCy免费支持的语言有:英文、德语、法语、西班牙语、葡萄语、意大利语和荷兰语,其他的语言也在慢慢的增长。对于spaCy处理中文文本(本文选取了《天龙八部》小说来示例)具体实现过程如下:

1、对文本进行分词处理并去除停用词保存成一个txt

首先,在导入spaCy相关模块后,需要加载中文处理包。然后读取小说数据,对天龙八部小说进行nlp处理,既包括:分词、向量化、词性标注、语法解析和命名实体识别,并对小说用符号“/”进行分隔。最后通过is_stop函数判断分词中的词语是否为停用词,去除掉停用词后把结果写入txt文件中,具体代码如下:

import spacy
import pandas as pd
import time
from spacy.lang.zh.stop_words import STOP_WORDS

nlp = spacy.load('zh_core_web_sm')

def fenci_stopwords(data,newdata1):
    fenci = []
    qc_stopwords =[]

    article = pd.read_table(data,encoding="utf-8")
    start1 = time.time()
    with open(newdata1,'w',encoding='utf-8') as f1: 
        for i in article["天龙八部"]:#分词
            doc = nlp(i)
            result1 = '/'.join([t.text for t in doc])
            fenci.append(result1)

	for j in fenci:#去除停用词   
            words = nlp.vocab[j]    
            if words.is_stop == False:        
                qc_stopwords.append(j)
                result2 = '/'.join(qc_stopwords)
                f1.write(result2)
    end1 = time.time()
    return end1-start1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

2、提取文本中所有的人物(去重)并输出成另一份txt

在对天龙八部进行分词和去除停用词处理后,利用nlp函数处理后对文本有属性分类,提取出属性为“PERSON”的词语,写入到另外一份txt文件中:

def quchong(data,newdata2):
    person = []
    start2 = time.time()
    article = pd.read_table(data,encoding="utf-8")
    with open(newdata2,"w",encoding="utf-8") as f2:
        for i in article["天龙八部"]:#分词
            doc = nlp(i)
            for k in doc.ents:
                if k.label_ == "PERSON":
                    person.append(k.text)
                #print(token.text,token.pos_)
                rw = list(set(person))
                rw = "\n".join(rw)
                f2.write(rw)
    end2 = time.time()
    return end2-start2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

通过在PowerShell运行该文件,结果如下:
运行时间结果
分词并去除停用词结果
人物去重结果

3、改进方向

(1)从结果看来,文本分词效果会比jieba处理效果逊色一点,分词这部分建议还是用jieba模块。但是spaCy除了分词,其在向量化、词性标注等方面准确度较高。
(2)从时间消耗来看,处理整本小说所花费的时间较长,原因也有可能是代码中涉及到多重for循坏,这也是后续代码需要改进的地方。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/617424
推荐阅读
相关标签
  

闽ICP备14008679号