Хорошо, я работаю над заданием для курса в моей лингвистической БА, где мы работаем с python для обработки текстов.Вот что мне нужно было сделать:
Создать скрипт, который подсчитывает частоты триграмм
- Не добавлять фиктивные токены
- Строчные буквы каждого токена и триграммы сцепленияединицы с подчеркиванием
- Каковы пропущенные значения в поле вывода?
- Бонус: попробуйте решить задачу, сохранив триграммы кортежей в словаре
Вот как я решил большинство, если это так:
lyrics = "Do you remember 21st night of September ? Love was changing the mind of pretenders While chasing the clouds away Our hearts were ringing In the key that our souls were singing As we danced in the night Remember how the stars stole the night away yeah yeah yeah Hey hey hey Ba de ya say do you remember ? Ba de ya dancing in September Ba de ya never was a cloudy day Ba duda ba duda ba duda badu Ba duda badu ba duda badu Ba duda badu ba duda yeah My thoughts are with you Holding hands with your heart to see you Only blue talk and love Remember how we knew love was here to stay Now December Found the love we shared in September Only blue talk and love Remember the true love we share today Hey hey hey Ba de ya say do you remember ? Ba de ya dancing in September Ba de ya never was a cloudy day There was a Ba de ya say do you remember ? Ba de ya dancing in September Ba de ya golden dreams were shiny days Now our bell was ringing aha Our souls was singing Do you remember every cloudy day yau There was a Ba de ya say do you remember ? Ba de ya dancing in September Ba de ya never was a cloudy day There was a Ba de ya say do you remember ? Ba de ya dancing in September Ba de ya golden dreams were shiny days Ba de ya de ya de ya Ba de ya de ya de ya Ba de ya de ya de ya de ya Ba de ya de ya de ya Ba de ya de ya de ya Ba de ya de ya de ya de ya"
lyric = lyrics.lower()
listText = lyric.split(" ")
freq = {}
while len(listText) > 2:
trigram = (listText[0], listText[1], listText[2])
if trigram in freq.keys():
freq[trigram] += 1
else:
freq[trigram] = 1
listText.pop(0)
sorted_data = sorted(freq.items() , key=lambda x: x[1], reverse = True)
for entry in sorted_data:
print(str(entry[0])+"\t"+str(entry[1]))
Единственная часть, которую я пропускаю, - это объединить триграммы с подчеркиванием.Это должно быть так просто, но я не могу понять, как это сделать.Предполагается, что выходными данными являются каскадные триграммы, за которыми следует частота упомянутой триграммы.Учитель сказал, что это можно решить так легко, но я не могу понять это.Что забавно, потому что все остальное, что я сделал здесь, было очень быстро и легко (относительно).
Я пробовал много вещей, но по какой-то причине не могу заставить его работать.