Мне нужно определить, является ли автор определенного текста введенным пользователем melville, shakespeare или ни одним из них. Я начал с поиска 50 лучших слов и их отношения появления для трех из melvilles и текста shakespeares и превращения его в два отдельных списка. Затем я сделал то же самое с неизвестным текстом. Я хочу сравнить список неизвестного текста с melville и шекспировским списком из 50 слов и их соотношением. Если слово в неизвестном тексте есть как в мельвине, так и в шекспире, то я хочу сравнить соотношение слов между мельвиль и шекспиром. Который когда-либо имеет наивысшее значение, мы будем считать, что это из текста. Предпочтительно было бы хорошо пройти все 50 слов для более точного определения. Это мой код до сих пор:Определение автора определенного текста
def identifyAuthor(textFile):
counts = {}
A = []
B = []
C = []
B = melville()
C = shakespeare()
for words in [textFile]:
text = open(words, 'r').read()
test = text.lower()
for ch in '!"$%&()*+,-./:;<=>[email protected][\\]^_`{|}~':
text = text.replace(ch, ' ')
words = text.split()
for w in words:
counts[w] = counts.get(w, 0) + 1
items = list(counts.items())
items.sort()
items.sort(key=byFreq, reverse = True)
for i in range(50):
word, count = items[i]
count = count/float(len(counts))
A += [[word, count]]
for i in range(50):
part1 = filter(lambda x: i in x, A)
part2 = reduce(lambda x, y: x + y, part1)
return part2[1]
Проблемы я имею я получаю сообщение об ошибке:
TypeError: reduce() of empty sequence with no initial value
Я предполагаю, что это потому, что фильтр не может найти переменный и имею данные для поиска фактическая строка как 'the'? Поэтому мне было интересно, как я могу заставить его работать с переменной, или если я не могу тогда выбрать альтернативу? Любая помощь будет высоко ценится.
Можете ли вы показать нам представление переменной 'part1'? Кажется, это массив 'Bool', поэтому вы не сможете передать его функции' lambda' 'reduce'. –
'i' является целым числом от 0 до 49, а каждый' count' равен, насколько я вижу, отношение от 0 до 1. Итак, как будет «i in x» когда-либо быть истинным? –
@CarlesMitjans part1 должен возвращать, где я есть, однако я не думаю, что это возможно, потому что это переменная, а не слово, подобное «the». Когда я заменяю i на «the», он возвращает [['the', 0.6925910972039971]], что я и хочу. –