2

私はpythonの初心者です。ドキュメント トークンのリストを指定して、逆インデックス関数を作成する必要があります。インデックスは、一意の各単語をドキュメント ID のリストにマップし、昇順で並べ替えます。

私のコード:

def create_index(tokens):
    inverted_index = {}
    wordCount = {}
    for k, v in tokens.items():
        for word in v.lower().split():
            wordCount[word] = wordCount.get(word,0)+1
            if inverted_index.get(word,False):
                if k not in inverted_index[word]:
                    inverted_index[word].append(k)
            else:
                inverted_index[word] = [k]
    return inverted_index, wordCount

注: これは、入力引数が次の形式の場合に正常に機能します。{1:"Madam I am Adam",2: "I have never been afraid of him"}

上記の例で得られる出力:

{'madam': [1], 'afraid': [2], 'i': [1, 2], 'of': [2], 'never': [2], 'am': [1], 'been': [2], 'adam': [1], 'have': [2], 'him': [2]}

私のコードによると、K、vはリストのキーと値に対応します

引数を指定して create_index 関数を呼び出したときの望ましい出力:

index = create_index([['a', 'b'], ['a', 'c']])
>>> sorted(index.keys())
['a', 'b', 'c']
>>> index['a']
[0, 1]
index['b']
[0]
index['c']
[1]
4

1 に答える 1

2

このようなもの?

>>> from collections import defaultdict
>>> def create_index (data):
        index = defaultdict(list)
        for i, tokens in enumerate(data):
            for token in tokens:
                index[token].append(i)
        return index

>>> create_index([['a', 'b'], ['a', 'c']])
defaultdict(<class 'list'>, {'b': [0], 'a': [0, 1], 'c': [1]})
>>> index = create_index([['a', 'b'], ['a', 'c']])
>>> index.keys()
dict_keys(['b', 'a', 'c'])
>>> index['a']
[0, 1]
>>> index['b']
[0]
于 2015-01-19T07:33:55.447 に答える