Python文本挖掘学习笔记-NLTK-分词,计算词频

文本挖掘也称为文本分析,文本挖掘是探索大量文本数据并查找模式的过程,我们将学习NLTK这个包,他功能强大,提供了一组多种自然语言算法。让我们一起来看看吧~

首先,要在你的电脑安装它:pip install nltk

第二步,我们要把文本分句,也叫tokenization~

比如说,我们有一句话:“Hello Mr. Charles, how are you? Where are you now? OK, I will meet you in Shenzhen!”

上面这句话,我们可以看到他有三句~分别是:

Hello Mr. Charles, how are you?  

Where are you now? 

OK, I will meet you in Shenzhen!

我们可以用NLTK这个包把他分成三句~ 我们会用到sent_tokenize( ) 这个方法,示例如下:

除了分开句子,分开词我们也是可以做到的~用到的是word_tokenize ( )

然后呢,我们就来进行词频统计(Frequency Distribution)~

用到的是FreqDist( ) 这个方法

如果我们要看,最常见的,就用.most_common(), 后面的括号代表最常见的top 几,如果是5,就是top 5 ,如下图,我们就能看到,排在前面的是you,逗号,are,问号。其中,you出现了3次,逗号,are,问号出现两次。

然后我们可以用matplotlib画出一个图,来展示词频。

补充:分词常用方法(摘抄)

这些对象均来自nltk.tokenize库

1. word_tokenize

  导入nltk的tokenize库后,tokens = nltk.word_tokenize(sentence)语句进行分词操作,sentence为待处理的字符串。返回一个列表。

  该方法要求被处理的字符串本身各个词语之间有空格,能处理如don't, they'll等缩写词的情况。

2. TweetTokenizer

  Twitter-aware,按空格进行分词,同时针对推文一些特性,去除@用户名,保留表情等一些特殊符号。

  分两种:

  (1)不带参数token=TweetTokenizer().tokenize(sentence)处理。

      输入"This is a coooool #dummysmiley: :-) :-P <3 and some arrows < > -> <--"

      输出['This', 'is', 'a', 'cooool', '#dummysmiley', ':', ':-)', ':-P', '<3', 'and', 'some', 'arrows', '<', '>', '->', '<--']能够拆分无效用的标点符号。

  (2)带参数token = TweetTokenizer(strip_handles=True, reduce_len = True).

      输入@remy: This is waaaaayyyy too much for you!!!!!!

      输出[':', 'This', 'is', 'waaayyy', 'too', 'much', 'for', 'you', '!', '!', '!']

      当一个词中相同字符连续出现3次以上,就只保留3个。设置strip_handles = True会删去@xxx。

3. MWETokenizer

  tokenizer = MWETokenizer([('a', 'little'), ('a', 'little', 'bit'), ('a', 'lot')])

  输入tokenizer.tokenize('In a litte or a litte bit or a lot in spite of'.split()); tokenizer.add_mwe(('in', 'spite', 'of'))

  输出['In', 'a_little', 'or', 'a_little_bit', 'or', 'a_lot', 'in_spite_of']

  该方法可对已经先保留的一些短语,或者组合,进行重组(对一些专有词可以先进行保留,如F-16,最后重组已保留-)。

4. RegexpTokenizer(https://www.runoob.com/regexp/regexp-syntax.html)

  使用到正则表达式进行分词,如对一些金钱表示或者其他非空白序列。

  tokenizer = RegexpTokenizer('\w+|\$[\d\.]+|\S+')

  输入"Good muffins cost $3.88\n in New York. Please buy me\n two of them.\n\n Thanks."

  输出['Good', 'muffins', 'cost', '$3.88', 'in', 'New', 'York', '.', 'Please', 'buy', 'me', 'two', 'of', 'them', '.', 'Thanks', '.']

5. StanfordTokenizer

  按空格进行分词,对于$4.28之类的,将符号与数字分开。

  输入“Good muffins cost $3.88\n in New York. Please buy me\n two of them.\n Thanks."

  输出['Good', 'muffins', 'cost', '$', '3.88', 'in', 'New', 'York', '.', 'Please', 'buy', 'me', 'two', 'of', 'them', '.', 'Thanks', '.']

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容