ngram_range的作用与N-gram的Python应用(还差一个ngram聚类没完成)

目前N-gram最为有用的就是自然语言的自动分类功能。
基于n-gram的自动分类方法有两大类,
一类是人工干预的分类(Classification),又称分类;
一类是无人工干预的分类(Clustering),又称聚类。

N-Gram距离定义为:
∣ G N ( s ) + G N ( t ) ∣ − 2 X ∣ G N ( s ) ∩ G N ( t ) ∣ |G_N(s)+G_N(t)|-2X|G_N(s)∩G_N(t)| GN(s)+GN(t)2GN(s)GN(t)
( N N N的意思是在s中每两个字符进行分割,分割的结果作为最小单位)

扯白了其实就是差异化,上述式子的值(范围)越小,那么就说明两个句子越相似,反之,则差异越大。

举例[2]:
∣ G N ( s ) ∣ |G_N(s)| GN(s) 是字符串 s 的 N-Gram集合,N 值一般取2或者3,假设N=2为例对字符串Gorbachev和Gorbechyov进行分段:

20160429144714271

距离:8 + 9 − 2 × 4 = 9

------------------------------------N-Gram代码应用------------------------------------
https://github.com/appleyuchi/Ngram
-------------------------------------------附录----------------------------------------------
input
一般使用默认即可,可以设置为"filename’或’file’

encodeing
使用默认的utf-8即可,分析器将会以utf-8解码raw document

decode_error
默认为strict,遇到不能解码的字符将报UnicodeDecodeError错误,设为ignore将会忽略解码错误,还可以设为replace,作用尚不明确

strip_accents
默认为None,可设为ascii或unicode,将使用ascii或unicode编码在预处理步骤去除raw document中的重音符号

analyzer
一般使用默认,可设置为string类型,如’word’, ‘char’, ‘char_wb’,还可设置为callable类型,比如函数是一个callable类型

preprocessor
设为None或callable类型

tokenizer
设为None或callable类型

ngram_range
词组切分的长度范围,ngram_range(min,max)是指将text分成min,min+1,min+2,…max 个不同的词组
比如’Python is useful’中ngram_range(1,3)之后可得到’Python’ ‘is’ ‘useful’ ‘Python is’ ‘is useful’ 和’Python is useful’如果是ngram_range (1,1) 则只能得到单个单词’Python’ ‘is’和’useful’

stop_words
设置停用词,设为english将使用内置的英语停用词,设为一个list可自定义停用词,设为None不使用停用词,设为None且max_df∈[0.7, 1.0)将自动根据当前的语料库建立停用词表

lowercase
将所有字符变成小写

token_pattern
过滤规则,表示token的正则表达式,需要设置analyzer == ‘word’,默认的正则表达式选择2个及以上的字母或数字作为token,标点符号默认当作token分隔符,而不会被当作token

max_df
可以设置为范围在[0.0 1.0]的float,也可以设置为没有范围限制的int,默认为1.0。这个参数的作用是作为一个阈值,当构造语料库的关键词集的时候,如果某个词的document frequence大于max_df,这个词不会被当作关键词。如果这个参数是float,则表示词出现的次数与语料库文档数的百分比,如果是int,则表示词出现的次数。如果参数中已经给定了vocabulary,则这个参数无效

min_df
类似于max_df,不同之处在于如果某个词的document frequence小于min_df,则这个词不会被当作关键词

max_df用于删除过于频繁出现的术语,也称为“语料库特定的停用词”.例如:

max_df = 0.50表示“忽略出现在50%以上文档中的术语”.
max_df = 25表示“忽略超过25个文档中出现的术语”.

默认的max_df是1.0,这意味着“忽略出现在100%以上文档中的术语”.因此,默认设置不会忽略任何术语.

min_df用于删除不经常出现的术语.例如:

min_df = 0.01表示“忽略出现在少于1%的文档中的术语”.
min_df = 5表示“忽略少于5个文档中出现的术语”.

max_features
默认为None,可设为int,对所有关键词的term frequency进行降序排序,只取前max_features个作为关键词集

vocabulary
默认为None,自动从输入文档中构建关键词集,也可以是一个字典或可迭代对象?

binary
默认为False,一个关键词在一篇文档中可能出现n次,如果binary=True,非零的n将全部置为1,这对需要布尔值输入的离散概率模型的有用的

dtype
使用CountVectorizer类的fit_transform()或transform()将得到一个文档词频矩阵,dtype可以设置这个矩阵的数值类型

Reference:
[1]TfidfVectorizer(stop_words=‘english’,ngram_range=(1,1))中ngram_range的意义
[2]字符串间距离 N-Gram

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值