【Day15-文字】文字资料的基本处理——Token、Stem、Stopword

前一天我们谈了一些关於如何处理字串的的基本操作
同时在结尾有稍微提出一点对於文字的看待观点
那我们今天就针对昨天提出的这些问题来做一些处理吧~

让程序记得不同的单字——Tokenization

回到前一天我们提出的问题——电脑要如何看待这些文字呢?
这个时候就要提到一个概念叫做token(中文比较接近的翻译应该是标记),因为对於电脑来说并不认得这些单字的实际意思,不过却可以分的出来这些单字是一样或不一样的,因此我们可以透过将整篇文章分割成不同的基本单位——英文通常以一个单字为单位,而中文则以一个词语为单位。

text = "I have a pen. You had two apples."
token = nltk.word_tokenize(text)
token

输出:

['I', 'have', 'a', 'pen', '.', 'You', 'had', 'two', 'apples', '.']

让程序记得同一个单字的不同样子——Stemming/Lemmatization

回到我们昨天的另一个问题——apple和apples应该要是视为一样还是不同的东西呢?
这个时候我们可以有两种方式来把它转换

词根提取-Stemming

from nltk import PorterStemmer
PS = PorterStemmer()
token_stem  = [PS.stem(word) for word in token]
token_stem

输出:

['i', 'have', 'a', 'pen', '.', 'you', 'had', 'two', 'appl', '.']

词性转换-Lemmatization

from nltk.stem import WordNetLemmatizer
LM = WordNetLemmatizer()
token_lem = [LM.lemmatize(word,"v") for word in token]
token_lem = [wnl.lemmatize(word,"a") for word in token_lem]
token_lem = [wnl.lemmatize(word,"n") for word in token_lem]
token_lem

输出:

['I', 'have', 'a', 'pen', '.', 'You', 'have', 'two', 'apple', '.']

嗯...今天被拉去续摊,所以解释比较简陋XD


<<:  <Day15>Ticks — 取得选择权(Options)逐笔成交资料

>>:  LineBot - 图文选单

Day14 上上下下左左右右 & 世代差异的沟通术

如果你看到标题秒懂而且联想到梁家辉的话,我只能说,你一定是一个擅长沟通的好PM。 谈到团队内沟通,跟...

github

右上 or 左上Repositories New ... > Settings > p...

纯Javascript,使用new Date()制作date picker

刚好有一道面试题目,不能使用 input type=date 或任何现有套件,要做出类似Datepi...

DAY2-EXCEL统计分析:各项绘图功能与特色

如何绘制图表: 先建立一份咖啡厅的销售量资料 点选上方工具列的<插入>--<图表&...

Day 20 - 将 NEWS 後台储存资料提取後,送至前台渲染画面 (下) - News View Page InnerText 应用 - ASP.NET Web Forms C#

=x= 🌵 NEWS 前台 View 页面後端功能制作。 NEWS View 页面资料介绍 : 📌 ...