NLTK实现文本切分

Posted zrmw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLTK实现文本切分相关的知识,希望对你有一定的参考价值。

之前已经了解了使用nltk库,将文本作为参数传入相应函数进行切分的方法,下面看看使用正则表达式如何来进行文本切分。

1. 使用正则表达式切分

1.1 通过RegexpTokenizer 进行切分。先导入 RegexpTokenizer 模块,然后构建一个与文本中的标识符相匹配的正则表达式。将此正则表达式作为参数传入RegexpTokenizer ,同时实例化一个对象,使用此对象对文本进行切分。

from nltk.tokenize import RegexpTokenizer

# RegexpTokenizer() 参数是将要匹配的字符串的正则表达式,返回值是所有匹配到的字符串组成的列表
tokenizer = RegexpTokenizer("\w+")
print(tokenizer.tokenize("Don‘t hesitate to ask questions!"))

运行结果:

[Don, t, hesitate, to, ask, questions]

1.2 使用 regexp_tokenize 切分。

from nltk.tokenize import regexp_tokenize
sentence = "My name is QWE, and I‘m 22 years old."
print(regexp_tokenize(sentence, pattern= \w+|\$[\d\.]+|\S+))

运行结果:

[My, name, is, QWE, ,, and, I, "‘m", 22, years, old, .]

1.3 以空格为分界点进行切分

from nltk.tokenize import RegexpTokenizer

tok = RegexpTokenizer(\s+, gaps= True)
print(tok.tokenize("Don‘t hesitate to ask questions"))

1.4 筛选以大写字母开头的单词

from nltk.tokenize import RegexpTokenizer
sentence = "My name is QWE, and I‘m 22 years old.I‘m from China"
capt = RegexpTokenizer([A-Z]\w+)
print(capt.tokenize(sentence))

结果:

[My, QWE, China]

(看起来都像是直接用正则匹配的。。)

1.5 使用WhitespaceTokenizer可以通过返回元组形式的序列来进行切分,该序列为标识符在语句中的位置和偏移量。

from nltk.tokenize import WhitespaceTokenizer
sentence = " She secured 90.56 % in class X \n. She is a meritorious student\n"
print(list(WhitespaceTokenizer().span_tokenize(sentence)))

结果:

[(1, 4), (5, 12), (13, 18), (19, 20), (21, 23), (24, 29), (30, 31), (33, 34), (35, 38), (39, 41), (42, 43), (44, 55), (56, 63)]

 

以上是关于NLTK实现文本切分的主要内容,如果未能解决你的问题,请参考以下文章

NLTK 对文本结构进行语法分析代码示例

snownlp和nltk啥关系

python [NLTK实现TF-IDF]#TF-IDF#算法#数据挖掘#文本挖掘#文本分类

NLTK朴素贝叶斯,文本分类代码示例 采样 SMSSpamCollection数据集下载

python 笔记:nltk (标记英文单词词性等)

使用Logstash filter grok过滤日志文件