标签: fasttext

句法类比和语义类比有什么区别?

这个关于 fastText 的视频的15:10,它提到了句法类比和语义类比。但我不确定它们之间有什么区别。

有人可以帮助解释示例的区别吗?

nlp word-embedding fasttext

4
推荐指数
1
解决办法
1771
查看次数

gensim 词嵌入(Word2Vec 和 FastText)模型中的 alpha 值?

我只想知道 alpha 的值在 gensimword2vecfasttextword-embedding 模型中的作用?我知道 alpha 是initial learning rate,它的默认值是0.075表单 Radim 博客。

如果我将其更改为更高的值,即 0.5 或 0.75 会怎样?它的作用会是什么?是否允许更改相同?但是,我已将其更改为 0.5 并在 D = 200、window = 15、min_count = 5、iter = 10、workers = 4 的大型数据上进行实验,结果对于 word2vec 模型非常有意义。然而,使用 fasttext 模型,结果有点分散,意味着相关性较低和不可预测的高低相似性分数。

为什么对于具有不同精度的两种流行模型,相同数据的结果不精确?的值alpha在模型构建过程中是否起着如此重要的作用?

任何建议表示赞赏。

python-3.x gensim word2vec word-embedding fasttext

4
推荐指数
1
解决办法
2013
查看次数

减小 Facebook fastText 的大小

我正在构建一个机器学习模型,它将处理文档并从中提取一些关键信息。为此,我需要使用词嵌入进行 OCRed 输出。我有几种不同的嵌入选项(Google 的 word2vec、Stanford 的、Facebook 的 fastText),但我主要担心的是 OOV 单词,因为 OCR 输出会有很多拼写错误的单词。例如,我想要嵌入使得嵌入嵌入(OCR 遗漏的 e)的输出应该具有一定程度的相似性。我不太关心相关的上下文信息。

我选择了 Facebook 的 fastText,因为它也提供了 OOV 单词的嵌入。我唯一关心的是嵌入的大小。fastText的模型的向量大小是300,有没有办法减少返回的词向量的大小?我正在考虑使用 PCA 或任何其他降维技术,但考虑到词向量的大小,这可能是一项耗时的任务。

dimensionality-reduction fasttext

4
推荐指数
1
解决办法
5055
查看次数

FastText 0.9.2 - 为什么召回是“nan”?

我使用 Python 接口在 FastText 中训练了一个监督模型,并且在精确度和召回率方面得到了奇怪的结果。

首先,我训练了一个模型:

model = fasttext.train_supervised("train.txt", wordNgrams=3, epoch=100, pretrainedVectors=pretrained_model)
Run Code Online (Sandbox Code Playgroud)

然后我得到测试数据的结果:

def print_results(N, p, r):
    print("N\t" + str(N))
    print("P@{}\t{:.3f}".format(1, p))
    print("R@{}\t{:.3f}".format(1, r))

print_results(*model.test('test.txt'))
Run Code Online (Sandbox Code Playgroud)

但结果总是很奇怪,因为它们显示的精度和召回率 @1 是相同的,即使对于不同的数据集也是如此,例如一个输出是:

N   46425
P@1 0.917
R@1 0.917
Run Code Online (Sandbox Code Playgroud)

然后,当我寻找每个标签的精确度和召回率时,我总是得到“nan”的召回率:

N   46425
P@1 0.917
R@1 0.917
Run Code Online (Sandbox Code Playgroud)

输出是:

{'__label__1': {'precision': 0.9202150724134941, 'recall': nan, 'f1score': 1.8404301448269882}, '__label__5': {'precision': 0.9134956983264135, 'recall': nan, 'f1score': 1.826991396652827}}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会发生这种情况?

PS:要尝试此行为的可重现示例,请参阅https://github.com/facebookresearch/fastText/issues/1072并使用 FastText 0.9.2 运行它

nlp python-3.x text-classification precision-recall fasttext

4
推荐指数
1
解决办法
1966
查看次数

在Cython中处理C++数组(使用numpy和pytorch)

我试图用来cython包装一个C++库(fastText如果相关的话).C++库类从磁盘加载一个非常大的数组.我的包装器从C++库中实例化一个类来加载数组,然后使用cython内存视图并将numpy.asarray数组转换为numpy数组,然后调用torch.from_numpy以创建张量.

出现的问题是如何处理为阵列释放内存.

现在,我得到pointer being freed was not allocated程序退出时.我希望这是因为C++代码和numpy/ pytorch都试图管理同一块RAM.

我可以简单地在C++库中注释掉析构函数,但这感觉就像它将导致我在路上遇到不同的问题.

我该如何处理这个问题?是否有任何关于如何使用C++处理内存共享的最佳实践文档cython

如果我修改C++库来包装在一个阵列shared_ptr,将cython(和numpy,pytorch等)共享shared_ptr正确?

如果问题是天真的,我道歉; Python垃圾收集对我来说非常神秘.

任何建议表示赞赏.

c++ numpy cython fasttext pytorch

3
推荐指数
1
解决办法
1199
查看次数

fasttext预训练句子相似度

我想使用 fasttext 预训练模型来计算一组句子之间的相似度。谁能帮我?最好的方法是什么?

我通过训练 tfidf 模型来计算句子之间的相似度。像这样编写代码。是否可以更改它并使用 fasttext 预训练模型?例如使用向量来训练 tfidf 模型?

def generate_tfidf_model(sentences):
    print("generating TfIdf model")
    texts = [[sentence for sentence in doc.split()] for doc in sentences]
    dictionary = gensim.corpora.Dictionary(texts)    
    feature_cnt = len(dictionary.token2id)
    mycorpus = [dictionary.doc2bow(doc, allow_update=True) for doc in texts]
    tfidf_model = gensim.models.TfidfModel(mycorpus)
    index = gensim.similarities.SparseMatrixSimilarity(tfidf_model[mycorpus]
                                                        , num_features = feature_cnt)
    return tfidf_model, index, dictionary

def query_search(query, tfidf_model, index, dictionary):
    query = normal_stemmer_sentence(query)
    query_vector = dictionary.doc2bow(query.split())
    similarity = index[tfidf_model[query_vector]]
    return similarity
Run Code Online (Sandbox Code Playgroud)

python nlp information-retrieval sentence-similarity fasttext

3
推荐指数
1
解决办法
6544
查看次数

fasttext监督学习中args wordNgrams、minn和maxn有什么区别?

阅读《高效文本分类技巧袋》后,我有点困惑。wordNgramsargs和minn之间有什么区别maxn

例如,文本分类任务和 Glove 嵌入为 pretrainedVectors

ft.train_supervised(file_path,lr=0.1,epoch=5,wordNgrams=2,dim=300,loss='softmax', minn=2,maxn=3,pretrainedVectors='glove.300d.txt',verbose=0)
Run Code Online (Sandbox Code Playgroud)

输入句子是“我爱你”。给定minn=2,maxn=3,整个句子转化为[<I, I>], [<l, <lo, lo, lov,.....]etc 对于love这个词,它的fasttext嵌入= (emb(love)(作为一个完整的词)+ emb(<l)+emb(<lo)+。 ...) / n. 对于句子,它被分成[I love, love you](因为 wordNgrams=2) 并且这些 2-gram 嵌入是[(fasttext emb(I)+fasttext emb(love))/2, (fasttext emb(love)+fasttext emb(you))/2]。句子嵌入是 2-gram 嵌入的平均值,维数为 300。然后它通过具有 #labels 神经元的层(即乘以大小为 [300, #labels] 的矩阵)。

这是正确的吗?如果我错了请纠正我

supervised-learning text-classification fasttext

3
推荐指数
1
解决办法
924
查看次数

将数据帧转换为 fasttext 数据格式

我想将数据帧转换为 fasttext 格式

我的数据框

text                                                             label 
Fan bake vs bake                                                 baking
What's the purpose of a bread box?                               storage-method
Michelin Three Star Restaurant; but if the chef is not there     restaurant
Run Code Online (Sandbox Code Playgroud)

快速文本格式

__label__baking Fan bake vs bake
__label__storage-method What's the purpose of a bread box?
__label__restaurant Michelin Three Star Restaurant; but if the chef is not there
Run Code Online (Sandbox Code Playgroud)

我尝试过df['label'].apply(lambda x: '__label__' + x).add_suffix(df['text']) ,但它没有按我的预期工作。我应该如何更改我的代码?

python pandas fasttext

3
推荐指数
1
解决办法
1183
查看次数

fasttext 错误:预测一次处理一行(删除 '\n')

您好,我有一个包含文本的数据框列。我想使用 fasttext 模型来进行预测。我可以通过将文本数组传递给 fasttext 模型来实现此目的。

import fasttext
d = {'id':[1, 2, 3], 'name':['a', 'b', 'c']}
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

我从系列中删除了“\n”

name_list = df['name'].tolist()
name_list = [name.strip() for name in name_list]
Run Code Online (Sandbox Code Playgroud)

并做出预测model.predict(name_list)

然而,我得到了ValueError: predict processes one line at a time (remove '\n')

我的列表中没有 '\n' 并且'\n' in name_list返回False

我还发现了一个有类似问题的帖子,但仍然遇到同样的错误。

predictions=[]
for line in df['name']:
    pred_label=model.predict(line, k=-1, threshold=0.5)[0][0]
    predictions.append(pred_label)
df['prediction']=predictions
Run Code Online (Sandbox Code Playgroud)

pandas fasttext

3
推荐指数
1
解决办法
3347
查看次数

如何在单词/事物词典中查找前 N 个相似单词?

str我有一个要映射的列表。这些词可以是“金属”或“圣帕特里克”。目标是根据此列表映射一个新字符串并找到前 N 个相似项。例如,如果我经过“St. Patrick”,我想捕获“st patrick”或“saint patrick”。

我知道有 gensim 和 fastText,而且我有一种直觉,我应该追求余弦相似度(或者如果有其他建议,我会洗耳恭听)。我主要处理时间序列,gensim 模型训练似乎不喜欢单词列表。

接下来我应该瞄准什么?

python nlp fasttext

3
推荐指数
1
解决办法
1535
查看次数