Comments (12)
那两个函数看起来2-gram变成1-gram,3-gram变成2-gram了。是不是应该把t也考虑进去?
from chinese-text-classification-pytorch.
就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有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.
就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。
from chinese-text-classification-pytorch.
就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有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.
就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有n-gram都映射到一个词表中。 (每个n-gram会得到一个数值,该数值对词表大小取模,得到它在词表中的位置)
词表大小也是自己定的,理论上词表越大,效果越好;词表越小,不同的n-gram就越有可能映射到词表的同一个位置。 但是这里要考虑到内存、耗时的问题(性价比),还有就是有的n-gram组合可能永远不会出现,所以词表也不是越大越好的。
正常的逻辑不应该是构造一个2-gram和3-gram字典,然后根据这个字典对句子进行idx转换吗?不理解使用哈希的目的。个人觉得没有体现出gram**中的上下文顺序,因为只要字相同,其n-gram就一样,实际的情况是字一样,上下文也不一定一样。
from chinese-text-classification-pytorch.
就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有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.
楼主,能问一下self.n_gram_vocab = 250499 # ngram 词表大小
这个词表大小的值是怎么得到的吗?
from chinese-text-classification-pytorch.
那两个函数看起来2-gram变成1-gram,3-gram变成2-gram了。是不是应该把t也考虑进去?
请问您有已经测试过了吗,为什么我将t加上之后,测试集的正确率下降了2%
from chinese-text-classification-pytorch.
就是用几个质数做的简单的哈希函数,这些数都是可以改的,你也可以自己定义一个哈希函数,目的就是把所有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.
楼主,能问一下self.n_gram_vocab = 250499 # ngram 词表大小
这个词表大小的值是怎么得到的吗?
您好,请问这个是怎么得到的现在您知道了吗?我也好奇
from chinese-text-classification-pytorch.
我理解是将n-gram映射成n_gram_vocab里相应的位置,n_gram_vocab是远大于实际的vocab的。举个例子:“我是**人”在vocab里是:"我","是","中","国","人",如果是bigram:"我是","是中","**","国人",将"我是"给hash了一下映射到比vocab更远的位置,该位置的范围是n_gram_vocab,这样尽量不会和vocab里的冲突。trigram也是如此
from chinese-text-classification-pytorch.
想问问为啥出现这个问题AttributeError: 'Config' object has no attribute 'n_gram_vocab'
是哪里没赋值吗
from chinese-text-classification-pytorch.
Related Issues (20)
- Text_RCNN文本分类效果
- 使用自己的数据集出现问题 HOT 1
- FastText的n_gram_vocab HOT 1
- 一个文本要是有多个标签要怎么用这个模型呢 HOT 3
- 用模型进行预测,该怎么实现呢 HOT 1
- 如果想改成英文数据,都需要修改什么呢
- transformer HOT 2
- 可以写一个单条预测的接口嘛?
- RuntimeError: GET was unable to find an engine to execute this computation
- 是否有文本长度限制
- Bi-LSTM问题
- 是否是没有进行分词?
- 选择题如何定制输入
- 词向量训练问题
- [BUG] TextCNN训练速度很慢
- 请问为何TextCNN的一个iter为什么要十几分钟,而TextRNN就很快,一个epoch不到一分钟? HOT 1
- 网络结构中Model加载预训练词向量的疑问
- 这个仓是不是没有维护了呀?
- AttributeError: 'Config' object has no attribute 'n_gram_vocab' HOT 1
- 模型预测类 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chinese-text-classification-pytorch.