GithubHelp home page GithubHelp logo

您好,能问下以下FastText两个函数里面的的数值和公式是怎么来的嘛? about chinese-text-classification-pytorch HOT 12 OPEN

649453932 avatar 649453932 commented on June 2, 2024 4
您好,能问下以下FastText两个函数里面的的数值和公式是怎么来的嘛?

from chinese-text-classification-pytorch.

Comments (12)

li199603 avatar li199603 commented on June 2, 2024 3

那两个函数看起来2-gram变成1-gram,3-gram变成2-gram了。是不是应该把t也考虑进去?

from chinese-text-classification-pytorch.

zelin-x avatar zelin-x commented on June 2, 2024 1

就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。

正常的逻辑不应该是构造一个2-gram和3-gram字典,然后根据这个字典对句子进行idx转换吗?不理解使用哈希的目的。个人觉得没有体现出gram**中的上下文顺序,因为只要字相同,其n-gram就一样,实际的情况是字一样,上下文也不一定一样。

我也感觉应该把t也加上,否则的话2-gram无法体现上下字的联系,3-gram在此变成了2-gram

我觉得在模型输入的时候,将unigram,bigram和trigram embedding之后张量拼接就已经可以保证语序信息的输入了,因为n-gram词表大小是固定的,例如‘我是’和‘我像’,‘像’和‘是’的bigram映射到词表的同一位置,是不是可以保证相似特征的提取呢?而将t加入后这两个词映射之后就完全不同了,与普通的词袋模型似乎没有区别?
(仅代表个人想法,希望大佬指正)

from chinese-text-classification-pytorch.

649453932 avatar 649453932 commented on June 2, 2024

就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。

from chinese-text-classification-pytorch.

TestNLP avatar TestNLP commented on June 2, 2024

就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。

你好,我想问一下,你这个函数计算,比如t1 = sequence[t - 1] if t - 1 >= 0 else 0
return (t1 * 14918087) % buckets 输入是一个句子的token的idx列表,然后依次输入idx,通过这个公式算的值是buckets中的一个位置,我想问的是,这个位置如何体现2-gram**的呢?还有那个3-gram公式映射和2-gram相似,怎么体现出2-gram和3-gram的差异的呢?

from chinese-text-classification-pytorch.

TestNLP avatar TestNLP commented on June 2, 2024

就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。

正常的逻辑不应该是构造一个2-gram和3-gram字典,然后根据这个字典对句子进行idx转换吗?不理解使用哈希的目的。个人觉得没有体现出gram**中的上下文顺序,因为只要字相同,其n-gram就一样,实际的情况是字一样,上下文也不一定一样。

from chinese-text-classification-pytorch.

LChanger avatar LChanger commented on June 2, 2024

就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。

正常的逻辑不应该是构造一个2-gram和3-gram字典,然后根据这个字典对句子进行idx转换吗?不理解使用哈希的目的。个人觉得没有体现出gram**中的上下文顺序,因为只要字相同,其n-gram就一样,实际的情况是字一样,上下文也不一定一样。

我也感觉应该把t也加上,否则的话2-gram无法体现上下字的联系,3-gram在此变成了2-gram

from chinese-text-classification-pytorch.

ABBlankSpace avatar ABBlankSpace commented on June 2, 2024

楼主,能问一下self.n_gram_vocab = 250499 # ngram 词表大小
这个词表大小的值是怎么得到的吗?

from chinese-text-classification-pytorch.

zelin-x avatar zelin-x commented on June 2, 2024

那两个函数看起来2-gram变成1-gram,3-gram变成2-gram了。是不是应该把t也考虑进去?

请问您有已经测试过了吗,为什么我将t加上之后,测试集的正确率下降了2%

from chinese-text-classification-pytorch.

li199603 avatar li199603 commented on June 2, 2024

就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。

正常的逻辑不应该是构造一个2-gram和3-gram字典,然后根据这个字典对句子进行idx转换吗?不理解使用哈希的目的。个人觉得没有体现出gram**中的上下文顺序,因为只要字相同,其n-gram就一样,实际的情况是字一样,上下文也不一定一样。

我也感觉应该把t也加上,否则的话2-gram无法体现上下字的联系,3-gram在此变成了2-gram

我觉得在模型输入的时候,将unigram,bigram和trigram embedding之后张量拼接就已经可以保证语序信息的输入了,因为n-gram词表大小是固定的,例如‘我是’和‘我像’,‘像’和‘是’的bigram映射到词表的同一位置,是不是可以保证相似特征的提取呢?而将t加入后这两个词映射之后就完全不同了,与普通的词袋模型似乎没有区别?
(仅代表个人想法,希望大佬指正)

我没测试过把t加进去的情况。这里变量命名容易混淆,准确的说应该是把sequence[t]也考虑进哈希函数中更合理。bigram只用了sequence[t-1]做哈希,那对于‘我是’和‘我像’的bigram哈希结果是一样的,感觉很不合理

from chinese-text-classification-pytorch.

Mingrg avatar Mingrg commented on June 2, 2024

楼主,能问一下self.n_gram_vocab = 250499 # ngram 词表大小
这个词表大小的值是怎么得到的吗?

您好,请问这个是怎么得到的现在您知道了吗?我也好奇

from chinese-text-classification-pytorch.

gosundy avatar gosundy commented on June 2, 2024

我理解是将n-gram映射成n_gram_vocab里相应的位置,n_gram_vocab是远大于实际的vocab的。举个例子:“我是**人”在vocab里是:"我","是","中","国","人",如果是bigram:"我是","是中","**","国人",将"我是"给hash了一下映射到比vocab更远的位置,该位置的范围是n_gram_vocab,这样尽量不会和vocab里的冲突。trigram也是如此

from chinese-text-classification-pytorch.

Josoope avatar Josoope commented on June 2, 2024

想问问为啥出现这个问题AttributeError: 'Config' object has no attribute 'n_gram_vocab'
是哪里没赋值吗

from chinese-text-classification-pytorch.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.