Open michael92ht opened 6 years ago
最近一直都在做词向量方面的工作,字向量稍后会提供。 在我个人看来,下游任务通常分词做比不分词效果普遍要好。可能字向量各种信息压缩程度太高了。
@shenshen-hungry 谢谢你们,但是在一些特定场景中,句子或话语很短的时候,字向量还是有些必要。辛苦啦
@michael92ht @rubby33 谢谢你们的建议,我们会尽快加上。如果你们现在就需要 可以去 various co-occurrence information的表里面去下载context vector,然后把长度为一的拿出来就是字向量哈。这个向量也会有不错的性质,比如“吃”和“食”,“厅”和“堂” 会很相近
@zhezhaoa 你是指Co-occurrence Type为Word → Character (1)的Context Word Vectors嘛?还是说任意一个Context Word Vectors都可以呢?
@aluminumbox character的context里面会包含char的ngram,其中会有unigram也就是单个的汉字。
@aluminumbox 是的,把Word → Character (1)的中的context vector拿出来,只保留里面的单个汉字,就是中文的字向量
@zhezhaoa @shenshen-hungry 试了一下,里面单个字符的字符还是比较丰富的,一些非常特殊的字符都有相应的向量表示。相对来说还是比较大的,希望只对常见的中文字符做字嵌入就好。还是希望有专门为中文字符做的字符向量。
@zhezhaoa @shenshen-hungry 试了一下,里面单个字符的字符还是比较丰富的,一些非常特殊的字符都有相应的向量表示。相对来说还是比较大的,希望只对常见的中文字符做字嵌入就好。还是希望有专门为中文字符做的字符向量。
@shenshen-hungry 放字符向量的时候,能否按出现频率进行排序? 字典数将近七十万字相对来说确实有点大,如果能按出现频率排好,要多少个直接readline()方便很多,不用自己挑常用字
@WangHexie 所有词向量文件里面的token都是按字符频率排序的,从高到低依次减少。
能不能直接把词频放上?老铁
@EricLingRui 近期没有放词频的计划。实际上,词频对于大部分需要词向量的任务来说并没有什么特别重要的意义。而且词向量文件是按词频顺序排列,基本上能满足绝大部分需求了。
哪里可以拿到训练后的字向量呢?
@AliceHuJie 在主页Various Co-occurrence Information里面的Feature Character的Context Word Vectors。
单纯的word和character 都比较容易训练,想问一下训练word+character和word +character+n-gram,是怎么训练的,神经网络模型的输入是什么,实现的原理能讲一下吗?有没有代码?或者是已发表的论文都可以的谢谢您
@sunnychou0330 我们使用ngram2vec项目的工具包训练的,具体可以参考ngram2vec论文。 word+char的原理大致如图:
@shenshen-hungry 谢谢您,我去了解一下,不会的再来咨询您
@WangHexie 所有词向量文件里面的token都是按字符频率排序的,从高到低依次减少。
现在想基于词向量,生成句向量,想要参考SIF的做法,里面会有用到词频文件。可否将词频也分享一下呢~(百度百科语料)
@Ramlinbird 其实用Zipf's Law估算一下就可以:)
@shenshen-hungry 请问一下 co-currence那里,Word → Character (1)里面的(1)是什么意思呢 我看到下面有(1-2)(1-4)。谢谢
@Lindahe0707 后面的数字指的是character级别的Ngram,1-2是包括character unigram和bigram。
@shenshen-hungry 谢谢! 我们现在发现一个问题是,用上面说到的方法“context vector,然后把长度为一的拿出来就是字向量”, 取出来之后,大约只有7000个字,但是很多常用字都不在里面,比如“乐”, “玻”, “璃”之类。这个你们有注意到吗?
@Lindahe0707 刚看了一下,大多有一万多字,而且这几个字都是有的,要不然你再试试?
你好,请问现在有字符向量吗??还是只能从word->character中提取?
@wzs951015 目前是这样操作的,这里的词向量在大部分任务中可以满足需求的。
期待字向量
对于词向量中没有的,怎么解决
@zengzenghe 如果是单独使用词向量的话,可以用均值来表示未出现的。如果是用词向量初始化模型的词向量层,可以用均值或者随机初始化。
请问 Word → Character (1) 和Word → Character (1-2)以及Word → Character (1-4)里面的字向量有区别吗?如果有哪个效果好?
@matthew77 区别在于训练中字符context不一样,比如:1-2指的是character unigram和character bigram。实际使用中,得根据下游任务实践才能知道哪个效果好。
我在做一个实体标注的项目。训练集是基于字的标注,如:
西 B-SHS 子 I-SHS 电 I-SHS 梯 I-SHS 于 O 2 B-CHD 0 I-CHD 1 I-CHD 5 I-CHD
由于训练集不是很大,所以想用Pre trained 字向量。请问这种情况下用,那个字向量的效果会比较好?
@matthew77 建议都下载试试,对于不同的任务不同的字向量可能有差异。
请问一下,如果今后你们出专门的字向量,那同现在“Various Co-occurrence Information” 里面的字向量会有什么区别呢?
@matthew77 本质上区别不大,因为利用的信息几乎一样。
谢谢! 还想请教一个问题,我是否可以用facebook 的fasttext,将里面的单个汉字拿出来做为我的字向量?这样做法是否合理? 同样,我是不是也可以从“Various Co-occurrence Information” 里面,用各种Context Word Vectors来测试,比如从Ngram里面讲字向量分离出来,做测试。是否是合理的?
@matthew77 可以用的。不过Facebook的fasttext是在wiki上面训练的,对于下游任务来说百度百科语料是要好于wiki语料的,具体可以看这个项目首页的两篇论文。
谢谢!那我就每个都拿来做做测试。目前我用了fasttext和Word → Character (1)这两个。发现fastext的效果好不少。
@matthew77 可以试试Word → Character (1-4) context vector。
现在有了吗 《Is Word Segmentation Necessary for Deep Learning of Chinese Representations?》
@guotong1988 在Word → Character (1-4) context vector里面有字向量,和词向量混合训练的,信息更充分。
作者大大,你说的那个字符向量文件解压完以后里面有一些不是单字的呀(比如“中国”,“一个”)
@deardeerluluu 里面有字向量,不是只有字向量。
会专门训练字向量吗? 发现 Context Word Vectors中的字向量效果不如纯粹训练的字向量。
会专门训练字向量吗? 发现 Context Word Vectors中的字向量效果不如纯粹训练的字向量。
BERT模型大多数是基于字的 可以下载一个BERT模型,抽取里面的embedding,得到字向量 一个选择是从这里面下载BERT预训练模型 https://github.com/dbiir/UER-py/wiki/Modelzoo 然后用这个脚本抽取embedding https://github.com/dbiir/UER-py/blob/master/scripts/extract_embeddings.py
@MrRace 请问“Context中的字向量效果不如单独训练的”这个有做过具体的比较吗?在什么情况下可以相差多少?
@MrRace 请问“Context中的字向量效果不如单独训练的”这个有做过具体的比较吗?在什么情况下可以相差多少?
我在fasttext中分别测试的,分别使用预训练这两种的。也可能与数据集或者数据量有关。具体相差多少,有些忘记了。后续找找,兴许进一步对比。
@MrRace 感觉可能跟数据集有关系,和下游任务越相似并且越大的数据集训练出来的向量效果越好。如果方便的话还请提供一下具体的实验配置,比如数据集、参数等相关信息,以便让看到的人持续地讨论。
如何使用字向量对比2个不同长度的词语,比如“你好”和“我爱你”?
什么时候可以提供中文字符的向量表示