У меня есть обучающий текстовый файл в следующем формате (pos, word, tag):
1 i PRP
2 'd MD
3, как VB
4 до
5 - VB
6.,
1 i PRP
Я пытаюсь построить словарь, чтобы при вводе нового корпуса в следующем формате (pos, word):
1 who
2 знает
3, что произойдет
4
5
6.
Я смогу пометить их из словаря, который я построил, с данными обучения.
метод, который я использую, это счетчик в словаре по умолчанию, чтобы найти наиболее распространенный тег дляслово.Со своего счетчика я получаю результаты печати, например:
i PRP 7905
MD 1262
как VB 2706
как VBP 201
как UH 95
как IN 112
до 4822
до 922
Так что для слова "like",тег с наибольшим числом «VB» на 2706. Я хочу, чтобы мой словарь взял тег с наибольшим количеством и приложил его к моему слову, чтобы, если я добавлю тестовый набор данных только с (pos, word),он вернет этот тег.Вот мой код:
file=open("/Users/Desktop/training.txt").read().split('\n')
from collections import Counter, defaultdict
word_tag_counts = defaultdict(Counter)
for row in file:
if not row.strip():
continue
pos, word, tag = row.split()
word_tag_counts[word.lower()][tag] += 1
stats = word_tag_counts
max(stats, key=stats.get)
with open('/Users/Desktop/training.txt','r') as file:
for line in file.readlines():
column = line.split('\t')
with open('/Users/Desktop/output.txt','w') as file:
for tag, num in d.items():
file.write("\t".join([column[0], column[1], tag])+"\n")
Я получаю сообщение об ошибке: TypeError: '>' не поддерживается между экземплярами 'Counter' и 'Counter'
моя цель вывода находится втот же формат, что и в исходном обучающем файле (позиция извлечена из исходного текстового файла, слово из исходного текстового файла, тег из моего словаря):
Не уверен, что могу, я тоже пытался использовать лямбду, но она не работает,Все поможет.Благодарю.