网站用户推广,网络游戏陪玩,网络网站建设10大指标,卖房子最快的平台一、文本的基本单位
1、Token
定义#xff1a;文本的最小单位#xff0c;例如单词、标点符号。
示例#xff1a; 原句#xff1a; I love NLP. 分词结果#xff1a; [I, love, NLP, .] 2、语法与语义
语法#xff1a;词的结构和句子的组合规则。
语义文本的最小单位例如单词、标点符号。
示例 原句 I love NLP. 分词结果 [I, love, NLP, .] 2、语法与语义
语法词的结构和句子的组合规则。
语义词的含义和上下文理解。
示例 句子 Time flies like an arrow. 有多重解释 时间像箭一样飞逝。 像箭一样的飞虫在时间中飞翔。 二、基本的文本预处理
1、分词Tokenization 英文分词基于空格或标点分隔。中文分词基于统计和规则的方法如 Jieba。 2、去停用词
停用词意义较小或频率过高的词例如 the, is, and。
3、词干化
将词语削减为根形式例如 running → run。
4、词形还原
考虑语法规则还原为词的基本形式例如 mice → mouse。
三、用nltk库做文本预处理
NLTKNatural Language Toolkit 是一个功能强大、 灵活性高的开源 Python 库 专为自然
语言处理NLP 领域的研究和开发而设计。 NLTK 提供了一套丰富的工具和资源 适合处
理、分析和理解人类语言文本。
1、文本预处理包
分词 nltk.tokenize.word_tokenize停用词库 nltk.corpus.stopwords词干化 nltk.stem.PorterStemmer词形还原 nltk.stem.WordNetLemmatizer
2、案例
使用 Python 对自己的文本数据进行分词、去停用词操作并计算剩余单词的数量
文本如下 Dr. Smiths favorite movie in 2024 is Inception; he rates it 9/10 stars! Isnt that amazing? Lets analyze this #text with NLP techniques: homework1.py, line 42. 代码如下
from nltk import pos_tag
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer,WordNetLemmatizerfrom src.common import utildef text_prepare(text):#分词print(f原始文本{text})tokens word_tokenize(text)print(f分词后{tokens})#去除停用词en_stopwords stopwords.words(english) #获取英文停用词表print(f去除停用词前文本长度{len(tokens)})filter_stop_words []for token in tokens:token token.lower()if token not in en_stopwords:filter_stop_words.append(token)print(f去除停用词后文本{filter_stop_words})print(f去除停用词后文本长度{len(filter_stop_words)})#词干化prepare_stem []porter_stemmer PorterStemmer()for token in filter_stop_words:token porter_stemmer.stem(token)prepare_stem.append(token)print(f词干化后{prepare_stem})#词性标注tagged_pos pos_tag(filter_stop_words)print(f词性标注后{tagged_pos})#词形还原prepare_lemma []wordnetLemma WordNetLemmatizer()for word, pos in tagged_pos:prepare_lemma.append(wordnetLemma.lemmatize(word,util.get_wordnet_pos(pos)))print(f词形还原后{prepare_lemma})def main():file_path examplewith(open(file_path, r, encodingutf-8)) as file:text file.read()text_prepare(text)if __name__ __main__:main()
运行结果
原始文本Dr. Smiths favorite movie in 2024 is Inception; he rates it 9/10 stars! Isnt that amazing? Lets analyze this #text with NLP techniques: homework1.py, line 42.分词后[, Dr., Smith, s, favorite, movie, in, 2024, is, Inception, , ;, he, rates, it, 9/10, stars, !, Is, nt, that, amazing, ?, Let, s, analyze, this, #, text, with, NLP, techniques, :, , homework1.py, ,, line, 42, ., ]去除停用词前文本长度40去除停用词后文本[, dr., smith, s, favorite, movie, 2024, inception, , ;, rates, 9/10, stars, !, nt, amazing, ?, let, s, analyze, #, text, nlp, techniques, :, , homework1.py, ,, line, 42, ., ]
去除停用词后文本长度32词干化后[, dr., smith, s, favorit, movi, 2024, incept, , ;, rate, 9/10, star, !, nt, amaz, ?, let, s, analyz, #, text, nlp, techniqu, :, , homework1.pi, ,, line, 42, ., ]词性标注后[(, ), (dr., NN), (smith, NN), (s, POS), (favorite, JJ), (movie, NN), (2024, CD), (inception, NN), (, ), (;, :), (rates, NNS), (9/10, CD), (stars, NNS), (!, .), (nt, RB), (amazing, VBG), (?, .), (let, NN), (s, POS), (analyze, JJ), (#, #), (text, JJ), (nlp, NN), (techniques, NNS), (:, :), (, NN), (homework1.py, NN), (,, ,), (line, NN), (42, CD), (., .), (, )]词形还原后[, dr., smith, s, favorite, movie, 2024, inception, , ;, rate, 9/10, star, !, nt, amaze, ?, let, s, analyze, #, text, nlp, technique, :, , homework1.py, ,, line, 42, ., ]