Ste*_*ere 7 tensorflow tensorflow-hub
我正在为一些句子创建嵌入,它对于相似性搜索非常有用,除非句子中有一些真正不寻常的单词。
在这种情况下,真正不寻常的单词实际上包含句子中任何单词的最相似信息,但由于该单词显然不在模型的词汇表中,因此所有这些信息在嵌入过程中都会丢失。
我想获得 GUSE 嵌入模型已知的所有单词的列表,以便我可以将这些已知单词从句子中屏蔽掉,只留下“新奇”单词。
然后,我可以对目标语料库中的那些新词进行精确的词搜索,并实现相似句子搜索的可用性。
例如“我喜欢使用 Xapian!” 被嵌入为“我喜欢使用 UNK”。
如果我只是对“Xapian”进行关键字搜索而不是语义相似性搜索,我会得到比使用 GUSE 和向量 KNN 更相关的结果。
关于如何提取 GUSE 已知/使用的词汇有什么想法吗?
我假设您已经安装了tensorflow和tensorflow_hub,并且您已经下载了该模型。
重要提示:我假设您正在看https://tfhub.dev/google/universal-sentence-encoder/4!无法保证不同版本的对象图看起来相同,很可能需要进行修改。
找到它在磁盘上的位置 - 除非/tmp/tfhub_modules您设置TFHUB_CACHE_DIR环境变量,否则它位于某个位置(Windows/Mac 有不同的位置)。该路径应包含一个名为 的文件saved_model.pb,该文件是使用 Protocol Buffers 序列化的模型。
不幸的是,字典在模型的 Protocol Buffers 文件中序列化,而不是作为外部资产,因此我们必须加载模型并从中获取变量。
策略是使用tensorflow的代码反序列化文件,然后沿着序列化对象树一直到字典。
import importlib
MODEL_PATH = 'path/to/model/dir' # e.g. '/tmp/tfhub_modules/063d866c06683311b44b4992fd46003be952409c/'
# Use the tensorflow internal Protobuf loader. A regular import statement will fail.
loader_impl = importlib.import_module('tensorflow.python.saved_model.loader_impl')
saved_model = loader_impl.parse_saved_model(MODEL_PATH)
# reach into the object graph to get the tensor
graph = saved_model.meta_graphs[0].graph_def
function = graph.library.function
node_type, node_value = function[5].node_def
# if you print(node_type) you'll see it's called "text_preprocessor/hash_table"
# as well as get insight into this branch of the object graph we're looking at
words_tensor = node_value.attr.get("value").tensor
word_list = [i.decode('utf-8') for i in words_tensor.string_val]
print(len(word_list)) # -> 400004
Run Code Online (Sandbox Code Playgroud)
不管 GitHub 问题可能会让你怎么想,这里的 400k 单词并不是GloVe 400k 词汇表。您可以通过下载GloVe 6B 嵌入(文件链接)、提取glove.6B.50d.txt、然后使用以下代码比较两个词典来验证这一点:
with open('/path/to/glove.6B.50d.txt') as f:
glove_vocabulary = set(line.strip().split(maxsplit=1)[0] for line in f)
USE_vocabulary = set(word_list) # from above
print(len(USE_vocabulary - glove_vocabulary)) # -> 281150
Run Code Online (Sandbox Code Playgroud)
检查不同的词汇表本身就很有趣,例如为什么 GloVe 有“287.9”的条目?
| 归档时间: |
|
| 查看次数: |
936 次 |
| 最近记录: |