python自然语言处理库_Python AI自然语言处理

SnowNLP是一个python写的类库,能够便当的处置中文文本内容。如

中文分词

词性标注

情感剖析

文本分类

提取文本关键词

文本类似度计算

装置:pip install snownlp

完成snownlp装置后,查看模块的目录构造,如图所示

这里写图片描绘

normal:文字转换成拼音

seg:中文分词

sentiment:情感剖析

sim:文本类似度

summary:提取文本摘要

tag:词性标注

__init__.py:整个模块的函数办法

想理解snownlp,能够翻开 __init__.py 查看snownlp提供的办法函数

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from . import normal

from . import seg

from . import tag

from . import sentiment

from .sim import bm25

from .summary import textrank

from .summary import words_merge

class SnowNLP(object):

def __init__(self, doc):

self.doc = doc

self.bm25 = bm25.BM25(doc)

@property

def words(self):

return seg.seg(self.doc)

@property

def sentences(self):

return normal.get_sentences(self.doc)

@property

def han(self):

return normal.zh2hans(self.doc)

@property

def pinyin(self):

return normal.get_pinyin(self.doc)

@property

def sentiments(self):

return sentiment.classify(self.doc)

@property

def tags(self):

words = self.words

tags = tag.tag(words)

return zip(words, tags)

@property

def tf(self):

return self.bm25.f

@property

def idf(self):

return self.bm25.idf

def sim(self, doc):

return self.bm25.simall(doc)

def summary(self, limit=5):

doc = []

sents = self.sentences

for sent in sents:

words = seg.seg(sent)

words = normal.filter_stop(words)

doc.append(words)

rank = textrank.TextRank(doc)

rank.solve()

ret = []

for index in rank.top_index(limit):

ret.append(sents[index])

return ret

def keywords(self, limit=5, merge=False):

doc = []

sents = self.sentences

for sent in sents:

words = seg.seg(sent)

words = normal.filter_stop(words)

doc.append(words)

rank = textrank.KeywordTextRank(doc)

rank.solve()

ret = []

for w in rank.top_index(limit):

ret.append(w)

if merge:

wm = words_merge.SimpleMerge(self.doc, ret)

return wm.merge()

return ret

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

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

整个snownlp模块就提供这些办法函数给我们运用,详细的运用方式以官方文档为例

from snownlp import SnowNLP

s = SnowNLP(u'这个东西真心很赞')

# 分词

s.words # [u'这个', u'东西', u'真心',

# u'很', u'赞']

# 词语标注

s.tags # [(u'这个', u'r'), (u'东西', u'n'),

# (u'真心', u'd'), (u'很', u'd'),

# (u'赞', u'Vg')]

# 情感剖析

s.sentiments # 0.9769663402895832 positive的概率

# 转换拼音

s.pinyin # [u'zhe', u'ge', u'dong', u'xi',

# u'zhen', u'xin', u'hen', u'zan']

s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')

# 转换简体

s.han # u'「繁体字」「繁体中文」的叫法

# 在台湾亦很常见。'

text = u'''

自然言语处置是计算机科学范畴与人工智能范畴中的一个重要方向。

它研讨能完成人与计算机之间用自然言语停止有效通讯的各种理论和办法。

自然言语处置是一门融言语学、计算机科学、数学于一体的科学。

因而,这一范畴的研讨将触及自然言语,即人们日常运用的言语,

所以它与言语学的研讨有着亲密的联络,但又有重要的区别。

自然言语处置并不是普通地研讨自然言语,

而在于研制能有效地完成自然言语通讯的计算机系统,

特别是其中的软件系统。因此它是计算机科学的一局部。

'''

s = SnowNLP(text)

# 提取关键字

s.keywords(3) # [u'言语', u'自然', u'计算机']

# 提取摘要

s.summary(3) # [u'因此它是计算机科学的一局部',

# u'自然言语处置是一门融言语学、计算机科学、

# 数学于一体的科学',

# u'自然言语处置是计算机科学范畴与人工智能

# 范畴中的一个重要方向']

# 文本分句处置

temp_list = s.sentences

s = SnowNLP([['这篇', '文章'],

['那篇', '论文'],

['这个']])

# TF-IDF算法

s.tf

s.idf

# 文本类似度。从s对象中找出与sim(['文章'])类似的文本

s.sim(['文章'])# [0.3756070762985226, 0, 0]

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

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

关于锻炼

锻炼是更好地完善现有的语料库,如今提供锻炼的包括分词,词性标注,情感剖析。以分词为例 分词在snownlp/seg目录下

# 分词锻炼

from snownlp import seg

seg.train('data.txt')

seg.save('seg.marshal')

# 词性标注锻炼

# from snownlp import tag

# tag.train('199801.txt')

# tag.save('tag.marshal')

# 情感剖析锻炼

# from snownlp import sentiment

# sentiment.train('neg.txt', 'pos.txt')

# sentiment.save('sentiment.marshal')

1

2

3

4

5

6

7

8

9

10

11

12

这样锻炼好的文件就存储为seg.marshal了,之后修正snownlp/seg/init.py里的data_path指向刚锻炼好的文件即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值