トーチテキスト.語彙

クラス語彙

機能: 辞書の作成と辞書の適用に使用されます。

関数:

  • __contains__(token: str) → bool

    機能: 入力された単語が辞書に存在するかどうかを判断するために使用されます。

    パラメータ:

    • トークン: 文字列。判断が必要な言葉。

    戻り値: ブール値。入ってきた単語が辞書に載っているかどうか

  • __getitem__(token: str) → int

    機能: 辞書内の受信単語のインデックスを取得します。

    パラメータ:

    • トークン: 文字列。インデックスを作成する必要がある用語。

    戻り値: 整数。対応するインデックス。

  • __init__(vocab)

    機能: コンストラクター、Vocabインスタンスを作成します。

    パラメータ:

    • 語彙: 辞書オブジェクト。

    注: 通常、オブジェクトはコンストラクターを通じて作成されませんvocab

  • __len__() → int

    機能: 辞書の長さを取得します。

    戻り値: 整数。辞書の長さ。

  • __prepare_scriptable__()

    戻り値:JITable Vocabと呼ばれるオブジェクト。

    注: このメソッドの目的はまだ理解していませんが、返されたオブジェクトはVocab直接オブジェクトとして使用できます。

  • append_token(token: str) → None

    機能: 新しい単語を挿入します。

    パラメータ:

    • トークン: 文字列。辞書に追加する必要がある新しい単語。
  • forward(tokens: List[str]) → List[int]

    関数:lookup_indices関数を呼び出します。つまり、単語リストを辞書インデックスにマップします。

    パラメータ:

    • トークン: 文字列のリスト。インデックスとしてマップする必要がある単語のリスト。

    戻り値: 整数のリスト。マップされたリスト。

  • get_default_index() → Optional[int]

    機能: デフォルトのインデックス、つまり未登録の単語のインデックス値を返します。

    戻り値: 設定されている場合は、対応するインデックスを返します。それ以外の場合は return None

  • get_itos() → List[str]

    機能: 辞書に収録されている単語リストを取得します。

    戻り値: 文字列のリスト。リスト内でインデックスの昇順に並べ替えられた、記録された単語のリスト。

  • get_stoi() → Dict[str, int]

    機能:dict辞書のオブジェクトを取得します。

    戻り値: 辞書。キーはログインワード、値は対応するインデックスです。

  • insert_token(token: str, index: int) → None

    機能: 辞書内の指定された位置に新しい単語を挿入します。

    パラメータ:

    • トークン: 文字列。挿入する新しい単語。
    • インデックス: 整数。挿入位置。
  • lookup_indices(tokens: List[str]) → List[int]

    機能: 単語のリストをインデックスのリストにマップします。

    パラメータ:

    • トークン: 文字列のリスト。インデックスとしてマップする必要がある単語のリスト。

    戻り値: 整数のリスト。マップされたリスト。

  • lookup_token(index: int) → str

    機能: インデックス位置の単語を取得します。

    パラメータ:

    • インデックス: 整数。取得したい単語のインデックス。

    戻り値: 文字列。対応する言葉。

  • lookup_tokens(indices: List[int]) → List[str]

    機能: インデックス リストを単語リストにマップします。

    パラメータ:

    • インデックス: 整数のリスト。このリストにマッピングする必要があるインデックスのリスト。

    戻り値: 文字列のリスト。マップされた単語リスト。

  • set_default_index(index: Optional[int]) → None

    機能: デフォルトのインデックス、つまり未登録の単語のインデックスを設定します。

    パラメータ:

    • インデックス: 整数。デフォルトのインデックス。に渡すこともできますNone

例:

from torchtext.vocab import Vocab, vocab
from collections import Counter, OrderedDict

counter = Counter(["a", "b", "b", "b", "c", "c"])
sorted_by_freq_tuples = sorted(counter.items(), key=lambda x:x[1], reverse=True)

ordered_dict = OrderedDict(sorted_by_freq_tuples)

v1 = vocab(ordered_dict)
# get_itos() → List[str]
print(v1.get_itos())

# get_stoi() → Dict[str, int]
print(v1.get_stoi())

# insert_token(token: str, index: int) → None
v1.insert_token("d", 1)
print(v1.get_stoi())

# lookup_indices(tokens: List[str]) → List[int]
print(v1.lookup_indices(["a", "a", "b", "c", "d"]))

# lookup_token(index: int) → str
print(v1.lookup_token(0))

# lookup_tokens(indices: List[int]) → List[str]
print(v1.lookup_tokens([2, 2, 0, 1, 3]))

# lookup_token(index: int) → str
print(v1.lookup_token(0))

結果の例:

['b', 'c', 'a']
{
    
    'b': 0, 'c': 1, 'a': 2}
{
    
    'b': 0, 'd': 1, 'c': 2, 'a': 3}
[3, 3, 0, 2, 1]
b
['c', 'c', 'b', 'd', 'a']
b

vocab(owned_dict: 辞書, min_freq: int = 1) → torchtext.vocab.Vocab

関数:

オブジェクトを作成するためのファクトリ メソッドVocab

dict注: 語彙オブジェクトを構築するときは、構築中に渡されるキーと値のペアの順序を参照します。したがって、単語が出現頻度によってソートされているかどうかはユーザーにとって非常に重要であり、辞書を作成するordered_dictことを。

パラメータ:

  • requested_dirt: 辞書。辞書の構築に使用される辞書。通常は タイプですOrderedDict[str, int]
  • min_freq: 整数、デフォルトは です1辞書で受け入れられる最小の単語頻度を示し、ordered_dirt単語頻度の値として表されます。

戻り値: 対応するVocabオブジェクト

例:

from torchtext.vocab import Vocab, vocab
from collections import Counter, OrderedDict

counter = Counter(["a", "b", "b", "b", "c", "c"])
sorted_by_freq_tuples = sorted(counter.items(), key=lambda x:x[1], reverse=True)
sorted_by_freq_tuples

ordered_dict = OrderedDict(sorted_by_freq_tuples)
ordered_dict

v1 = vocab(ordered_dict,  min_freq=2)
print(v1.get_stoi())

tokens = ["e", "d","d","d", "c", "b", "a"]
v2 = vocab(OrderedDict([(token, 1) for token in tokens]))
unk_token = "<unk>"
default_index = -1
if unk_token not in v2: v2.insert_token(unk_token, 0)
print(v2.get_stoi())

結果の例:

{
    
    'b': 0, 'c': 1}
{
    
    '<unk>': 0, 'e': 1, 'd': 2, 'c': 3, 'b': 4, 'a': 5}

build_vocab_from_iterator(iterator: Iterable、min_freq: int = 1、specials: Optional[List[str]] = None、special_first: bool = True) → torchtext.vocab.Vocab

機能: イテレータを使用してVocabオブジェクトを生成します。

パラメータ:

  • イテレータ: イテレータ。yieldまたは は辞書の作成に使用されます词语迭代器
  • min_freq: 整数、デフォルト1最小単語頻度。最小単語頻度未満の単語は作成時に無視されます。
  • スペシャル: 文字列のリスト、デフォルトNone辞書に追加する必要がある一部の特殊記号。追加の順序はリスト内の順序と同じです。
  • special_first: ブール値、デフォルトTruespecials辞書の先頭に記号を挿入するかどうかを示します。

戻り値: 対応するVocabオブジェクト

例:

from torchtext.vocab import build_vocab_from_iterator

tokens = ["e", "d","d","d", "c", "b", "b", "a"]
vocab = build_vocab_from_iterator(tokens, min_freq=2, specials=["<unk>", "<eos>"],  special_first=False)
print(vocab.get_itos())

結果の例:

['d', 'b', '<unk>', '<eos>']

クラス ベクトル

機能: 単語埋め込みベクトルを保存します。

関数:

  • __init__(name, cache=None, url=None, unk_init=None, max_vectors=None)

    機能: コンストラクター。

    パラメータ:

    • 名前: 文字列。Word 埋め込みベクトル ファイルへのパス。
    • キャッシュ: 文字列、デフォルトNoneキャッシュベクターディレクトリ。
    • URL: 文字列、デフォルトNone単語埋め込みベクトルをダウンロードするためのリンク。
    • unk_init: 関数。未登録の単語を初期化するために使用します。デフォルトでは、未登録の単語はすべてゼロのベクトルで初期化されます。パラメータが Tensor であり、同じ次数の Tensor を返す関数を渡して、未登録の単語を処理できます。
    • max_vectors: 整数。事前トレーニングされた単語ベクトルの数を制限するために使用されます。ほとんどの事前トレーニング済み単語ベクトルは単語頻度の降順に並べ替えられるため、メモリが不十分な場合は辞書のサイズを制限できます。
  • get_vecs_by_tokens(tokens, lower_case_backup=False)

    機能: 単語を単語埋め込みベクトルに変換します。

    パラメータ:

    • トークン: 文字列のリスト。単語ベクトルに変換される単語のリスト。
    • lower_case_backup: ブール値、デフォルトFalse単語を小文字に変換してから単語ベクトルを取得するかどうか。Yes の場合False、すべての単語が入力された大文字と小文字を区別して単語ベクトルを検索します。の場合True、単語ベクトルは最初に元の大文字と小文字に従って検索され、見つからない場合は小文字に変換されてから単語ベクトルが検索されます。

    戻り値: 単語埋め込みベクトルのリストTensor

例:

from torchtext.vocab import build_vocab_from_iterator,GloVe,Vectors

vec = Vectors(".vector_cache/glove.6B.50d.txt")
print("hi:", vec["hi"])

examples = ["ChIP", "chip"]
ret = vec.get_vecs_by_tokens(examples, lower_case_backup=True)

print("\n".join(["{}:{}".format(examples[i], ret[i]) for i in range(len(examples))]))

結果の例:

hi: tensor([-0.5431,  0.3443,  0.2713,  1.0487, -1.1642, -1.2722,  0.3578, -0.5653,
        -0.2988,  0.8518,  0.5222, -0.0020, -0.4643,  0.0336,  0.0484,  0.7876,
         0.0760,  0.5158,  0.3478,  0.5380,  0.2830, -0.1313, -0.0738,  0.4261,
         0.0310, -0.5503, -0.9979, -0.2895,  0.3052, -1.1194,  1.2957,  0.9117,
         0.3222,  0.9341, -0.3415, -0.6271, -0.0922,  0.5090,  0.2920, -0.2012,
         0.1961, -0.4588,  1.1099, -0.6874,  1.5724, -0.1045,  0.2359, -0.5659,
         0.4368,  0.9809])
ChIP:tensor([-0.7710, -1.1697,  1.5195,  0.8371,  0.7419, -0.2185, -0.7212, -0.9400,
        -0.0113,  0.5485,  0.4040, -0.1846, -0.4630,  0.2620, -0.6464,  0.3599,
        -0.8610, -0.3869, -0.0271, -1.0254,  0.3280, -0.7500, -0.6859, -0.6912,
         0.3429, -0.6660, -0.2910, -0.6104,  0.3322, -0.4252,  2.4573, -0.8748,
         0.4891,  1.2888,  0.5780, -0.5509, -0.2263,  0.8127,  0.7048, -0.5498,
         0.3620, -0.2171, -0.2991,  0.2917,  1.2260,  0.2446,  1.2133, -0.0967,
         0.0474,  0.1971])
chip:tensor([-0.7710, -1.1697,  1.5195,  0.8371,  0.7419, -0.2185, -0.7212, -0.9400,
        -0.0113,  0.5485,  0.4040, -0.1846, -0.4630,  0.2620, -0.6464,  0.3599,
        -0.8610, -0.3869, -0.0271, -1.0254,  0.3280, -0.7500, -0.6859, -0.6912,
         0.3429, -0.6660, -0.2910, -0.6104,  0.3322, -0.4252,  2.4573, -0.8748,
         0.4891,  1.2888,  0.5780, -0.5509, -0.2263,  0.8127,  0.7048, -0.5498,
         0.3620, -0.2171, -0.2991,  0.2917,  1.2260,  0.2446,  1.2133, -0.0967,
         0.0474,  0.1971])

知らせ:

  • データダウンロードアドレス:http://nlp.stanford.edu/data/glove.6B.zip
  • 設定後、lower_case_backup=True「ChIP」と「chip」の単語埋め込みベクトルが同じであることがわかります。

事前学習済みの単語ベクトル

グローブ

torchtext.vocab.GloVe(name='840B', dim=300, **kwargs)

ファストテキスト

torchtext.vocab.FastText(language='en', **kwargs)

チャーングラム

torchtext.vocab.CharNGram(**kwargs)

おすすめ

転載: blog.csdn.net/qq_42464569/article/details/120803135