-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
word2vec_skipgram #818
Comments
你好!请使用 |
我想简单的使用demo里面的sensim.py,尝试使用。用于检测2句话的相似度 |
你可以尝试PaddleHub 1.8版本之后支持的文本语义匹配任务,注意请安装word2vec_skipgram (1.1.0版本, demo: 如果只是想简单体验了下word2vec做两句话的语义相似度,请安装word2vec_skipgram (1.0.0版本, |
你好,谢谢。我已经解决了问题,这个预测时间6秒一个,是我没开启gpu? |
预测代码是什么样的呢?是如何统计时间的呢? |
执行词法分析很快,但是执行,哪个word2vec_skipgram 模型,比较耗时。时间一直超过5秒的样子。 |
预测代码是什么样的呢? |
1.1.0 版本中如果只是想简单的获取词语的向量该怎么获取呢? |
@Steffy-zxf 我试了之前的 demo,似乎 1.1.0 版本与 1.0.0 版本差异非常大。有 1.1.0 版本的 demo 吗? |
@T-baby 1.1.0 word2vec获取词向量,参考以下代码: import paddle.fluid as fluid
import paddlehub as hub
raw_data = ["驾驶违章一次扣12分用两个驾驶证处理可以吗",
"一次性扣12分的违章,能用不满十二分的驾驶证扣分吗",
"水果放冰箱里储存好吗", "中国银行纪念币网上怎么预约",
"电脑反应很慢怎么办", "反应速度慢,电脑总是卡是怎么回事"]
max_seq_len = 50
module = hub.Module(name="word2vec_skipgram", version='1.1.0')
inputs, outputs, program = module.context(trainable=False,max_seq_len= max_seq_len)
word_ids = inputs["text"]
embedding = outputs["emb"]
tokenizer = hub.CustomTokenizer(vocab_file=module.get_vocab_path())
place = fluid.CPUPlace()
exe = fluid.Executor(place)
feeder = fluid.DataFeeder(feed_list=[word_ids], place=place)
for data in raw_data:
data_dict = tokenizer.encode(text=data, max_seq_len=max_seq_len)
text = data_dict['text']
vecs, = exe.run(
program,
feed=feeder.feed([[text]]),
fetch_list=[embedding.name],
return_numpy=True)
print("The input text is {}, and the embeddings are ".format(data))
print(vecs) NOTE:
|
非常感谢 |
tokenizer.encode 有 文档地址吗? |
非常奇怪的是如果 hub.Module(name="word2vec_skipgram", version="1.1.0") ,指定了版本,似乎每次运行都会重新下载一次模型文件?我电脑上是每次都会出现。 paddlepaddle == 1.8.3 |
还想请问下,max_seq_len 的主要作用是?这个参数很少在 word2vec 中见到。 |
tokenizer.py 第 206 行,重复进行了 convert_tokens_to_ids 操作。有两行一模一样的。 ids = self.convert_tokens_to_ids(tokens)
return self.convert_tokens_to_ids(tokens) |
还有就是 1.1.0 版本中没有考虑到如果分词中存在 Word Embedding 的未登录词的情况。 |
tokenizer.py 第 125 行,又重复进行了 self._convert_token_to_id(token)。 |
max_seq_len的作用:将输入的text 切词后单词个数不足max_seq_len,会进行补齐。如果切词后单词个数超过max_seq_len,会进行截断。
感谢反馈问题!可以提pr帮我们修复code重复问题。
tokenizer有考虑未登录词的问题,参考:https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.8/paddlehub/tokenizer/tokenizer.py#L81 |
您好,可以将生成好的词向量转换成原始文本嘛? |
这边是传啥
The text was updated successfully, but these errors were encountered: