tre*_*ddy 3 python nlp scikit-learn
我正在学习一门教程,我对Python和机器学习都很陌生.(所以,如果我看起来像诺贝尔,请道歉...这是因为我).该教程可以在这里找到:数据科学Python教程
我看到bow_transformer早期创建了一个变量:
bow_transformer = CountVectorizer(analyzer=split_into_lemmas).fit(messages['message'])
Run Code Online (Sandbox Code Playgroud)
我对'矢量化'的理解在这里并不是很清楚......我们是否说语料库中每条短信的每个单词都是自己的行?
然后,这个变量被转换(我假设transform这里是创建一个单词的某种(x,y)表示,以便机器可以读取+计算它们的出现次数:
bow4 = bow_transformer.transform(messages['message'])
messages_bow = bow_transformer.transform(messages['message'])
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一般都很困惑......而且我认为我已经将所有内容合理化了(如果我在上面做了一些逻辑错误,请纠正我,这将有助于我对机器学习+ Python的理解非常有帮助.
我的困惑被以下块放大了:
tfidf_transformer = TfidfTransformer().fit(messages_bow)
tfidf4 = tfidf_transformer.transform(bow4)
Run Code Online (Sandbox Code Playgroud)
messages_bow是弓变换(无论那意味着什么),然后messages_bow然后适合tfidfTransformer,并赋予tfidf_transformer变量.这个新创建的tfidf_transformer变量现在看起来不再像变量了,因为下一行是tfidf4使用上述过程/对象创建一个新变量()?
我希望你们能理解我的困惑 - 我不知道如何搜索我的问题,因为我根本不知道我不知道的事情.我的问题是尖叫"Noobie",我希望这并不能阻止任何人认真对待我的问题.
矢量化器将语料库(例如文本文档)转换为矢量矢量空间模型.有很多方法可以做到这一点,结果将取决于所使用的技术.矢量化器是必要的,因为模型使用数字,而不是单词.特别是,CountVectorizer的实现将生成一个数组,其中包含每个单词的出现次数.在这种特殊情况下,CountVectorizer用作生成TF-IDF(术语频率 - 逆文档频率)表示的先前步骤,这是用于确定文档中单词的"重要性"的最流行的技术之一.该模型的假设是,出现更多的术语更可能代表该文档(术语频率),但是,不应考虑整个语料库之间的"常用词"(反向文档频率),例如,连接器.该技术广泛用于信息检索领域.
一旦在向量空间表示中有了语料库,就可以开始使用此表示作为机器学习技术的输入.
特别是,transform方法将返回将训练(拟合)模型应用于作为参数传递的元素的结果.换句话说,转换将输入"转换"为"模型表示语言".
让我们用一个例子来澄清这一点:
假设我们有3个文件(内容没有意义,我知道):
CountVectorizer将在调用fit()时学习词汇表.
[this, is, document, one, grumpy, two, sad, three, happy]
另一方面,当在语料库上调用transform时,它将使用词汇表来生成此矩阵:
[1, 2, 1, 1, 1, 0, 0, 0, 0]
(1) [1, 2, 1, 0, 0, 1, 1, 0, 0]
[1, 2, 1, 0, 0, 0, 0, 1, 1]
其中包含每个文档的单词出现次数.这里,值2对应于在每个文档中重复两次的单词"is".此外,值"0"表示文档中不存在该单词.
现在,我们可以使用此矩阵来训练TF-IDF模型with fit(),它将生成以下向量:
(2) [3, 6, 3, 1, 1, 1, 1, 1, 1]
其中包含每个单词的全局出现次数.然后,当您将变换应用于(1)时,tf-idf模型将使用拟合阶段(2)中生成的向量来创建tf-idf矩阵:
[0.33, 0.33, 0.33, 1, 1, 0, 0, 0, 0]
[0.33, 0.33, 0.33, 0, 0, 1, 1, 0, 0]
[0.33, 0.33, 0.33, 0, 0, 0, 0, 1, 1]
其中较低的数字代表更常见的单词.注意'独特'单词有更高的数字.后面的矩阵是您将用于训练ML模型的矩阵.
总而言之,例如,如果您想使用聚类技术(例如KMeans)对一堆文档进行分类,那么该过程将是:
转换文档以生成VSM表示.安装TF-IDF模型,用于确定哪些术语在每个文档中最重要.
适合KMeans模型,该模型将生成理想情况下将包含相关文档的集群.为此,模型将使用在最后一步中生成的结果通过识别它们之间的共享单词来建立文档关系.
所有这些解释都是在自然语言处理的背景下,如果你想使用ML来识别图像,你当然不会使用tf-idf.
我希望我有所帮助!
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |