首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Gensim Fasttext预训练模型与我的文本相匹配

将Gensim Fasttext预训练模型与我的文本相匹配
EN

Stack Overflow用户
提问于 2022-04-01 19:09:56
回答 1查看 500关注 0票数 0

我有一个预先训练过的快速文本模型,我已经将它加载到我的笔记本中,并希望它适合我的自由形式文本来训练一个ML分类器。

代码语言:javascript
运行
复制
import pandas as pd
from sklearn.model_selection import train_test_split
from gensim.models import FastText
import pickle
import numpy as np
from numpy.linalg import norm
from gensim.utils import tokenize

model_2 = FastText.load(model_path + 'itsm_fasttext_embeddings_100_dim.model')
tokens = list()
def get_column_vector(model, list_corpus):
    for i in list_corpus:
        svec = np.zeros(100)
        tok_sent = list(tokenize(i))
        count = 0
        for word in tok_sent:
            vec = model.wv[word]
            norm_vec = norm(vec)
            if (norm_vec > 0):
                vec = np.multiply(vec, (1/norm_vec))
                svec = np.add(svec, vec)
                count += 1
        if (count > 0):
            averaged_vec = np.multiply(svec, (1/count))
            tokens.append(averaged_vec)
    return tokens

list_corpus = df["freeformtext_col"].tolist()

# lst = array of vectors for each row of free form text 

lst = get_column_vector(model, list_corpus)

x_text_train, x_text_test, y_train, y_test = train_test_split(lst, y, test_size=0.2, random_state=42)
model_2.fit(x_text_train, y_train, validation_split=0.1, shuffle=True)

我得到的错误

代码语言:javascript
运行
复制
    ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Input In [59], in <cell line: 1>()
----> 1 model_2.fit(x_text_train, y_train, validation_split=0.1, 
shuffle=True)

AttributeError: 'FastText' object has no attribute 'fit'

其他显示快速文本初始训练的文档具有适合的功能。我很难找到其他人的文档,他们采用了一个快速文本gensim模型,并将其与他们的文本数据相匹配,最终使用了分类器。

EN

回答 1

Stack Overflow用户

发布于 2022-04-01 19:41:48

Gensim FastText实现不提供.fit()方法。(我也没有在Facebook的Python包装器中看到它原来的C++ FastText实现的任何这样的方法。即使在监督分类模式下,它也有自己的train_supervised()方法,而不是scikit-learn-style fit()方法。

如果您看到一些使用这种方法的在线示例,那么它一定是使用了不同的FastText实现--因此您应该查阅另一个示例的详细信息,以查看它们使用的是哪个库。

我不知道有什么好的在线例子显示如何“微调”一个经过预先训练的FastText模型到一个更小的新文本集,更不用说任何演示的好处,难题,和执行这样的操作的经验规则。

如果你确实在网上看到一个例子,提出这样一种方法&展示了一些比其他不那么复杂的方法的好处,那么这种灵感来源也将是在尝试调试他们的方法时要遵循的模式--或者提到/链接。如果没有人的完整工作例子作为指南/模板,你就处于即兴创新模式。

注意,你不需要从别人受过训练的模特开始。您可以使用自己的培训文本来训练您自己的FastText模型--对于许多领域和任务,这可能比从维基百科文本或大型web爬虫等公共来源培训的通用模型工作得更好。

当您这样做时,您可以选择简单地在其基本的无监督模式下使用FastText --作为对文本进行特征化的一种方法--然后将那些FastText建模的特性传递给其他显式分类器选项(例如scikit-learn中的许多calssifiers与.fit()方法)。

FastText自己的-supervised模式构建了一种将单词训练与分类训练相结合的不同类型的模型。您在网上找到的通用FastText语言模型不太可能是特定的-supervised模式模型,除非它被显式声明为模型。如果它是一个标准的无监督模型,那么就没有简单的方法可以将它调整为-supervised模型。如果它已经是一种-supervised模型,那么它已经为其他人的一套固定的已知标签接受了培训。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71711743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档