三、Orange 中的自然语言处理
Orange3.0 中对自然语言的处理有专门的模块,称之为“Text”模块,主要是对自然语言进行 token(词粒)分割,注意不是词义分割。如果是处理中文,还需要预先用中文语言处理系统进行预处理(如结巴系统等)。 (一)Orange 预处理窗口
Orange3.0 中对文本的预处理主要由图 2-9-5 所示的页面完成。

Transformation(转换):
Lowercase:将所有字符变成小写。
Remove accents:去除音调符号,例如法语中éè等字母上的音调符号。
Parse html:解析 html。
Remove urls:去除 urls。
Tokenization(标记化又称词汇分析):
Word Punctuation:根据词语和标点符号进行 token。
Whitespace:根据空格进行 token。
Sentence:根据句子进行 token。
Regexp:根据正则化字符串进行 token。
Tweet:根据推特进行 token。
注:NLP 中 token 为通过 Tokenization 操作后把文本切分成一个字符串序列,其元素一般称为 token,在此称之为“词粒”。
Filtering(过滤):
Stopwords:设置停用词,设为 english 将使用内置的英语停用词,设为一个 list 可自定义停用词,设为 None 不使用停用词,设为 None 且 max_df∈[0.7,1.0]将自动根据当前的语料库建立停用词表。
Lexicon:设置词汇。
N-grams Range:词组切分的长度范围。n-gram-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”。
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,则这个参数无效。
Max_df 用于删除过于频繁出现的术语,也称为“语料库特定的停用词”。例如:
max_df = 0.50 表示“忽略出现在 50%以上文档中的术语”。
Max_df = 25 表示“忽略超过 25 个文档中出现的术语”。
默认的 max_df 是 1.0,这意味着“忽略出现在 100%以上文档中的术语”。因此,默认设置不会忽略任何术语。
Min_df:类似于 max_df,不同之处在于如果某个词的 document frequence 小于 min_df,
则这个词不会被当作关键词。
Min_df 用于删除不经常出现的术语。例如:
min_df = 0.01 表示“忽略出现在少于 1%的文档中的术语”。
Min_df = 5 表示“忽略少于 5 个文档中出现的术语”。
Max_features:默认为 None,可设为 int,对所有关键词的 term frequency 进行降序排序,只取前 max_features 个作为关键词集。
(二) N-Gram 对文本分类的计算
目前, N-Gram 最为有用的就是自然语言的自动分类功能。
基于 N-Gram 的自动分类方法有两大类:一类是人工干预的分类(Classification),又称分类;另一类是无人工干预的分类(Clustering),又称聚类。
N-Gram 距离定义为
是字符串 s 的 N-Gram 集合, N 值一般取 2 或者 3,假设以 为例对字符串Gorbachev 和 Gorbechyov 进行分段:
从以上分词可以得出, 。所以这两个字符串的N-Gram 距离为 。