Использование Python для поиска Syllables
Возможный дубликат:
Обнаружение слогов словом
Для пинков (и для улучшения моего Python) я пытаюсь создать алгоритм, который будет произвольно генерировать Haiku (японское стихотворение, состоящее из трех строк с 5, 7 и 5 слогов каждый).
Проблема, с которой я столкнулся, – найти количество слогов в слове (я использую en-US.dic от Ubuntu).
В настоящее время у меня есть скрипт, который пытается захватить число, указанное этим веб-сайтом, но это медленное и не создает много обращений. Это кажется более перспективным, но я не знаю, как использовать Python для ввода слова в текстовое поле.
Мой вопрос двоякий:
- Существует ли алгоритмический способ определения количества слогов в слове (и, следовательно, не нужно делать тысячи веб-запросов)?
- Могу ли я использовать Python для ввода слов в WordCalc?
- Перечислить все полное (помеченное) двоичное дерево
- Как быстро вычислить порядок локализации всех пересечений набора множеств
- Попытка напечатать одну строку на нескольких строках фиксированной длины и минимизировать стоимость
- Значение хеша для направленного ациклического графа
- Обзор кода головоломки Python (спойлер)
Загрузите Moby Hyphenated Word List . У него есть большинство английских слов и имен, дефисных по слогу. Количество слогов будет числом дефисных маркеров + количество пробелов + количество фактических дефисов + 1.
Во второй части, если вы используете Chrome, щелкните правой кнопкой мыши по кнопке «Calculate Word Count» и выберите «Inspect Element». Вы увидите, что это POST
sa form /index.php
с некоторыми соответствующими частями:
name="text" name="optionSyllableCount" name="optionWordCount"
(второй – входные флажки, для которых обычно требуется значение POST).
import urllib url = 'http://www.wordcalc.com/index.php' post_data = urllib.urlencode( {'text': 'virgina'}) post_data = '%s&optionSyllableCount&optionWordCount' % post_data cnxn = urllib.urlopen(url, post_data) response = cnxn.read() cnxn.close()
Если вы хотите разобрать ответ, который вы получите:
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(response) h3_matches = [h3 for h3 in soup.findAll('h3') if h3.text == 'Statistics'] if len(h3_matches) != 1: raise Exception('Wrong number of <h3>Statistics</h3>') h3_match = h3_matches[0] table = h3_match.findNextSibling('table') td_matches = [td for td in table.findAll('td') if td.text == 'Syllable Count'] if len(td_matches) != 1: raise Exception('Wrong number of <td>Syllable Count</td>') td_match = td_matches[0] td_value = td_match.findNextSibling('td') syllable_count = int(td_value.text)
- Сравнение значений списка по индексу в Python
- Как отлаживать программы Python MapReduce, написанные в mrjob от eclipse
- Найти глобальный минимум, используя scipy.optimize.minimize
- Как избежать зависимости от перекрестного языка при сериализации / десериализации с использованием TCP?
- Нечеткая группа, группировка похожих слов
- Найдите слова и комбинации слов, которые можно произнести быстрее всего
- Алгоритм определения того, какое число в списке суммируется до определенного числа
- алгоритм декодирования строки для рекомендаций
- Есть ли дружественное имя для этой структуры данных?
- Ошибка с быстрым выбором на месте (aka linear time selection) в Python
- Эффективная функция равенства на деревьях