- Natural Language Toolkit - Discussion
- Natural Language Toolkit - Useful Resources
- Natural Language Toolkit - Quick Guide
- Natural Language Toolkit - Text Classification
- Synonym & Antonym Replacement
- Natural Language Toolkit - Word Replacement
- Stemming & Lemmatization
- Looking up words in Wordnet
- Training Tokenizer & Filtering Stopwords
- Natural Language Toolkit - Tokenizing Text
- Natural Language Toolkit - Getting Started
- Natural Language Toolkit - Introduction
- Natural Language Toolkit - Home
自然语言工具包
- 自然语言工具箱——改造树木
- 自然语言工具箱——改造楚克
- Chunking & Information 排外
- 自然语言工具箱——包装
- 自然语言工具包 - 更多国家 Taggers
- 自然语言工具箱——将Taggers混为一谈
- 自然语言工具箱——Unigram Tagger
- 部分Speech(POS)基本原理
- Corpus Readers and Customs Corpora
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Natural Language Toolkit - Transforming Chunks
Why transforming Chunks?
现在,我们已经从判决中吸取教训或短语,但我们应该与这些教训做些什么。 一项重要任务就是要改变它们。 但为什么? 它是:
grammatical correction and
rearranging phrases
Filtering insignificant/useless words
如果你想判断某一短语的含义,那么“......”、“a”等许多常用词语就微不足道或无用。 例如,见以下短语:
“电影良好”。
这里最重要的词语是“去除”和“Good”。 换言之,“......”和“......”这两个词都是无用的或微不足道的。 这是因为,如果没有他们,我们也可以获得这一短语的相同含义。 “Good 电影”。
在下面的 p中,我们将学会如何消除无用/无足轻重的言辞,并在德国马克各界的帮助下保持重要话。
Example
第一,通过特里克斯敦>查询 我们需要确定哪些小tag子是重要的,哪些不是。 让我们看一看下面的言辞和口号:
Word | Tag |
---|---|
a | DT |
All | PDT |
An | DT |
And | CC |
Or | CC |
That | WDT |
The | DT |
从上表看,除闭会外,我们可以看到所有其他政党都以DT为终结,这意味着我们可以通过审视tag子的面貌来抹掉微不足道的言辞。
例如,我们将使用一个名为filter(>)的功能,该功能只使用一个小块,并在没有任何微小的缩略语的情况下重新填充。 这一功能过滤了与DT或CC最终的任何标签。
Example
import nltk def filter(chunk, tag_suffixes=[ DT , CC ]): significant = [] for word, tag in chunk: ok = True for suffix in tag_suffixes: if tag.endswith(suffix): ok = False break if ok: significant.append((word, tag)) return (significant)
现在,让我们在我们的谢 Python中利用这一功能过滤器删除微小字——
from chunk_parse import filter filter([( the , DT ),( good , JJ ),( movie , NN )])
Output
[( good , JJ ), ( movie , NN )]
Verb Correction
很多时候,用现实世界语言,我们看到了不正确之词。 例如,“你罚款吗?”不正确。 本句中的ver字不正确。 刑期应为“是你罚款吗?” NLTK为我们提供了纠正这种错误的途径,建立了相互校正图。 这些校正分布图的使用情况取决于是否在草原中存在多元或单体的 no。
Example
为了实施沙捞越计划,我们首先需要确定校正图。 让我们绘制以下两个地图:
Plural to Singularmaps
plural= { ( is , VBZ ): ( are , VBP ), ( was , VBD ): ( were , VBD ) }
singular = { ( are , VBP ): ( is , VBZ ), ( were , VBD ): ( was , VBD ) }
如上文所述,每一次绘图都有一张挂图,向另一张挂图。 举例来说,最初的制图涵盖了地图的基本内容,即,反之亦然。
其次,我们将确定一个名为verbs()的职能,在这种职能中,你可以通过一个带有不正确字面的chin子,并且“能够得到纠正的chu。 为了做到这一点,verb()功能使用称为index_chunk()的助手功能。 他们将寻找第一个被封不动字的位置。
让我们看到这些职能——
def index_chunk(chunk, pred, start = 0, step = 1): l = len(chunk) end = l if step > 0 else -1 for i in range(start, end, step): if pred(chunk[i]): return i return None def tag_startswith(prefix): def f(wt): return wt[1].startswith(prefix) return f def verbs(chunk): vbidx = index_chunk(chunk, tag_startswith( VB )) if vbidx is None: return chunk verb, vbtag = chunk[vbidx] nnpred = tag_startswith( NN ) nnidx = index_chunk(chunk, nnpred, start = vbidx+1) if nnidx is None: nnidx = index_chunk(chunk, nnpred, start = vbidx-1, step = -1) if nnidx is None: return chunk noun, nntag = chunk[nnidx] if nntag.endswith( S ): chunk[vbidx] = plural.get((verb, vbtag), (verb, vbtag)) else: chunk[vbidx] = singular.get((verb, vbtag), (verb, vbtag)) return chunk
除这些职能外,还安装和操作了设在Salph或Anaconda的地方名录中的灰色档案。 我将其节省为verbcorrect.py。
现在,请上verbs(>>>,在座标有的<0>的 >上接下>>>>。 chu
from verbcorrect import verbs verbs([( is , VBZ ), ( you , PRP$ ), ( fine , VBG )])
Output
[( are , VBP ), ( you , PRP$ ), ( fine , VBG )]
Epminating passive voice from phrases
另一项有益的任务是消除用语上的消极声音。 这样做可以帮助敲打字。 例如, >> 指导是伟大的。 可改为伟大的教员。
Example
为了实现这一目标,我们正在界定一个名为epminate_passive()的职能。 这将把ver子右侧与左手边隔开,把ver子作为ot点。 为了在周围找到ver,还将使用上文界定的index_chunk(功能。
def epminate_passive(chunk): def vbpred(wt): word, tag = wt return tag != VBG and tag.startswith( VB ) and len(tag) > 2 vbidx = index_chunk(chunk, vbpred) if vbidx is None: return chunk return chunk[vbidx+1:] + chunk[:vbidx]
现在,请我们打电话 取消_passive()。 指导职能:
from passiveverb import epminate_passive epminate_passive( [ ( the , DT ), ( tutorial , NN ), ( was , VBD ), ( great , JJ ) ] )
Output
[( great , JJ ), ( the , DT ), ( tutorial , NN )]
Swapping noun cardinals
我们知道,像5这样的中枢词被束缚为裁谈会的空白。 这些主要字词往往发生在大声之前或之后,但为了实现正常化,应当总是将它们摆在大声面前。 例如,日期 1月5日可在 5 January上书写。 让我们以以下例子理解这一点。
Example
为了实现这一目标,我们正在界定一个名为swapping_cardinals()的职能。 这将冲销在与公证人通婚后立即出现的任何卡片。 有了这一卡片,就立即在纽伦举行。 为了与特定标签进行平等比较,它使用一种称为tag_eql()的助手功能。
def tag_eql(tag): def f(wt): return wt[1] == tag return f
我们现在可以界定_(card)——
def swapping_cardinals (chunk): cdidx = index_chunk(chunk, tag_eql( CD )) if not cdidx or not chunk[cdidx-1][1].startswith( NN ): return chunk noun, nntag = chunk[cdidx-1] chunk[cdidx-1] = chunk[cdidx] chunk[cdidx] = noun, nntag return chunk
现在,让我们在日期“一月五日”上调用swapping_cardinals()函数 -
from Cardinals import swapping_cardinals() swapping_cardinals([( Janaury , NNP ), ( 5 , CD )])
Output
[( 10 , CD ), ( January , NNP )] 10 JanuaryAdvertisements