Умова задачі: Напишіть програму, яка обробить Brown Corpus і допоможе відповісти на наступне запитання: які іменники частіше зустрічаються у множині ніж в однині (розглядати тільки регулярні форми множини). Аналіз задачі. Потрібно знайти слова, які промарковані "NN" або "NNS" і порівняти їх частоту. Якщо dog - NN - зустрічається 5 разів а dogs - NNS - зустрічається 7 разів то "dog" частіше зустрічається у множині ніж в однині.
Один з варіантів рішення.
Подаю без коментарів і сподіваюсь на обговорення.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Умова задачі: Write a program to find those verbs in the PP Attachment Corpus nltk.corpus.ppattach. Find any cases where the same verb exhibits two different attachments, but where the first noun, or second noun, or preposition stays unchanged (as we saw in our discussion of syntactic ambiguity in Section 8.2).
Аналіз задачі:
1. Переглядаємо формат корпуса PP Attachment Corpus.
The PP Attachment Corpus contains several files having the format:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Для зручності переписуємо програмку з використанням функцій:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Умова задачі: Гематрія – метод виявлення
прихованого змісту слів на основі порівняння чисел, які відповідають словам. Слова
з однаковими числами мають однаковий зміст. Число слова визначається сумуванням
чисел, як відповідають його літерам. Написати функціюdecode()для
обробки тексту, яка
випадковим чином замінює слова на їх Гематрія-еквіваленти. Чи вдалося виявити "прихований
зміст" тексту?
(Використовувати letter_vals з попередньої задачі). Аналіз задачі. Функція decode() повинна приймати один аргумент текст, який повинен бути списком слів або якщо текст стрічка то його потрібно буде перетворити у список. Слова з тексту повинні переглядатися одне за одним і для слова визначається його гематрія (число). Серед довільного списку слів вибираються слова які мають таке саме значення гематрії і серед них на екран виводиться випадково вибране слово.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Лист Доброго вечора) Маю до Вас запитання стосовно 19го завдання 9ї лабораторної. Напишіть програми для знаходження слів та словосполучень згідно відповідних їм тегів для відповіді на наступне питання: які послідовності слів маркуються як IN + DET + NN.
Добрий день! Питання таке: лр 9, завд 18. Потрібно знайти співвідношення між жін. і чол. займенниками. Таке розв'язання зараховується?)
from nltk import FreqDist, ConditionalFreqDist from nltk.corpus import brown fd = FreqDist() cfd = ConditionalFreqDist() for sentence in brown.tagged_sents():
for (token, tag) in sentence: fd.inc(tag) cfd[token].inc(tag)
male = ['he','his','him','himself'] # masculine pronouns female = ['she','hers','her','herself'] # feminine pronouns n_male, n_female = 0, 0 for m in male:
n_male += cfd[m].N()
n_male
16207
for f in female:
n_female += cfd[f].N()
n_female
4975
print float(n_male)/n_female
3.2576884422
Відповідь_______________
Зарахувати завдання звичайно можна, але Ваша програм це просто підрахунок 'he','his','him','himself' та 'she','hers','her','herself'. Я дев'ята лабораторна робота присвячена вивченню морфологічно розмічених корпусів. Тому я сподівався що при рішенні цієї задачі буде використовуватись інформація про теги якими маркуються займенники nltk.help.brown_tagset('P.*'). Наприклад Ваша програма не буде враховувати займенники записані наприклад так як he's she'd а використовуючи теги ви це врахуєте: PPS+HVZ: pronoun, personal, nominative, 3rd person singular + verb 'to have', present tense, 3rd person singular it's he's she's PPS+HVD: pronoun, personal, nominative, 3rd person singular + verb 'to have', past tense she'd he'd it'd
for i in range(len(state)): word=state gem=0 for i in word.lower(): gem+=letter_vals[i] word=gem return word
for w in state:
k=0 if ([letter_vals[w] for w in state if w.isalpha() and w.islower() and len(w)==3 and gematria(w)==555]): k+=1 print k
__________________________________-
Перше - у восьмій лаб. роботі Ви вивчаєте, як зневаджувати програми. Потрібно цими знаннями скористатися і тоді....
Друге - у сьомій лаб. роботі Ви знайомилися з елементами стилю програмування. Але у своїй програмі у Вас state то список слів з корпуса то аргумент функції. Те саме з word....
Третє - В останньому циклі Ви перебираєте слова корпуса і далі стрічка:
if ([letter_vals[w] for w in state if w.isalpha() and w.islower() and
len(w)==3 and gematria(w)==555]):
у якій перевіряєте все на купу, і довжину слова, і навіщось, чи є у letter_vals запис з ключем w(слово з корпуса) і так далі...
Порада - наведіть порядок зі змінними і тоді Вам буде простіше написати те що потрібно і зрозумієте де помилка
Підказка - помилки у letter_vals[w] for w in state