理解 FastText 多语言
understanding FastText multilingual
我正在使用这个修改版的 FastText (fastText_multilingual),它可以让我用两种语言对齐单词。
我想了解他们的 fasttext.py,尤其是 Fast Vector class。
在示例文件 align_your_own.ipynb 中,作者展示了如何衡量两个词之间的相似性。我想对整个单词集重复这个过程,而不是每次都为一个单词测量相似度。为此,我需要了解如何访问这些 FastVector 对象。
这就是为什么我试图理解 Fast 向量 class。
我被困在这里:
def __init__(self, vector_file='', transform=None):
"""Read in word vectors in fasttext format"""
self.word2id = {}
# Captures word order, for export() and translate methods
self.id2word = []
print('reading word vectors from %s' % vector_file)
with open(vector_file, 'r') as f:
(self.n_words, self.n_dim) = \
(int(x) for x in f.readline().rstrip('\n').split(' '))
self.embed = np.zeros((self.n_words, self.n_dim))
for i, line in enumerate(f):
elems = line.rstrip('\n').split(' ')
self.word2id[elems[0]] = i
self.embed[i] = elems[1:self.n_dim+1]
self.id2word.append(elems[0])
我从来没有在 python 中创建过 class,所以这让我的事情变得更加困难。这些是我无法深入理解的台词:
1. (self.n_words, self.n_dim) = \
2. self.word2id = {}, self.id2word = [],
3. self.embed = np.zeros((self.n_words, self.n_dim))
这些是我的问题:
- 1 上的 "= \" 是什么意思?
- 哪里定义了word2id、id2word和embed?它们是 python 的关键字吗?
行尾的反斜杠告诉 Python 将当前逻辑行扩展到下一个物理行。
在您的情况下,您可以将这两行作为一行阅读:
(self.n_words, self.n_dim) = (int(x) for x in f.readline().rstrip('\n').split(' '))
在 Python 中,变量在您首次为其赋值时创建 (https://www.w3schools.com/python/python_variables.asp)。
因此,word2id、id2word 和 embed 不是关键字;它们是在为它们分配值时创建的。
我正在使用这个修改版的 FastText (fastText_multilingual),它可以让我用两种语言对齐单词。
我想了解他们的 fasttext.py,尤其是 Fast Vector class。 在示例文件 align_your_own.ipynb 中,作者展示了如何衡量两个词之间的相似性。我想对整个单词集重复这个过程,而不是每次都为一个单词测量相似度。为此,我需要了解如何访问这些 FastVector 对象。 这就是为什么我试图理解 Fast 向量 class。
我被困在这里:
def __init__(self, vector_file='', transform=None):
"""Read in word vectors in fasttext format"""
self.word2id = {}
# Captures word order, for export() and translate methods
self.id2word = []
print('reading word vectors from %s' % vector_file)
with open(vector_file, 'r') as f:
(self.n_words, self.n_dim) = \
(int(x) for x in f.readline().rstrip('\n').split(' '))
self.embed = np.zeros((self.n_words, self.n_dim))
for i, line in enumerate(f):
elems = line.rstrip('\n').split(' ')
self.word2id[elems[0]] = i
self.embed[i] = elems[1:self.n_dim+1]
self.id2word.append(elems[0])
我从来没有在 python 中创建过 class,所以这让我的事情变得更加困难。这些是我无法深入理解的台词:
1. (self.n_words, self.n_dim) = \
2. self.word2id = {}, self.id2word = [],
3. self.embed = np.zeros((self.n_words, self.n_dim))
这些是我的问题:
- 1 上的 "= \" 是什么意思?
- 哪里定义了word2id、id2word和embed?它们是 python 的关键字吗?
行尾的反斜杠告诉 Python 将当前逻辑行扩展到下一个物理行。 在您的情况下,您可以将这两行作为一行阅读:
(self.n_words, self.n_dim) = (int(x) for x in f.readline().rstrip('\n').split(' '))
在 Python 中,变量在您首次为其赋值时创建 (https://www.w3schools.com/python/python_variables.asp)。 因此,word2id、id2word 和 embed 不是关键字;它们是在为它们分配值时创建的。