2

重複の可能性:
単語内の音節を検出する

キック(およびPythonをブラッシュアップするため)では、俳句(それぞれ5、7、および5音節の3行で構成される日本の詩)をランダムに生成するアルゴリズムを作成しようとしています。

私が遭遇した問題は、単語内の音節の数を見つけることです(私はUbuntuのen-US.dicを使用しています)。

現在、このWebサイトで報告された数を取得しようとするスクリプトを実行していますが、それは遅く、多くのヒットを生成していません。 これはより有望に思えますが、Pythonを使用してテキストボックスに単語を挿入する方法がわかりません。

私の質問は2つあります。

  • 単語内の音節の数を決定するアルゴリズム的な方法はありますか(したがって、何千ものWeb要求を行う必要はありません)?
  • Pythonを使用してWordCalcに単語を挿入できますか?
4

2 に答える 2

3

2番目の部分では、Chromeを使用している場合は、[単語数の計算]ボタンを右クリックして、[要素の検査]を選択します。あなたはそれがいくつかの関連する部分でPOST形作られているのを見るでしょう:/index.php

name="text"
name="optionSyllableCount"
name="optionWordCount"

(次の2つは入力チェックボックスであり、通常は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)
于 2012-05-02T14:20:42.283 に答える
3

Moby ハイフン付き単語リストをダウンロードします。ほとんどの英語の単語と名前は、音節でハイフンでつながれています。音節の数は、ハイフン マーカーの数 + スペースの数 + 実際のハイフンの数 + 1 になります。

于 2012-05-02T14:40:23.050 に答える