import nltk
from nltk.collocations import *
tokens = ['a','b','c','d','b','c','a','b','c']
tokens2 = [['a','b','c','d'],['b','c','a','b','c']]
bigrams = nltk.bigrams(tokens)
fdist = nltk.FreqDist(bigrams)
for i,j in fdist.items():
print i,j``
print fdist.most_common(2)
Код выше работает для ввода как токенов, но он выдает ошибку, когда я использую токены2. В конце концов, я должен вернуть ему 2 лучших биграма, когда ему дается набор токенов. Помощь будет высоко оценена.Python Top Bigrams
Так что 'tokens2' - это список списка жетонов, не так ли? Но вы говорите «наборы» - это то, что вы хотите, или ...? –
да, вы правы, что tokens2 - это список списка токенов. Как токены, так и токены2 являются возможными входами, в которых я должен возвращать две наиболее распространенные bigrams. –
. Чтобы принять совершенно разные типы аргументов и действовать по-разному на каждом, это абсолютно злая спецификация, поскольку для этого требуется тестирование типа. Я бы стоял принципиально и отталкивался от этой спецификации (я занимал такие позиции в течение многих десятилетий с тех пор, как я учился в колледже, и, несмотря на некоторые трудные последствия, это послужило моей карьере, и что бы я ни смог сделать в этот мир, очень хорошо). Я рекомендую вам сделать то же самое, объясняя **, почему ** ожидание того, что вы принимаете оба списка строк и списки списков, является злым, абсурдным и бессмысленным. –