8

ウィクショナリーのすべてのタイトルを含むダンプを簡単に取得できますが、このダンプには、英語以外の単語も含め、すべての単語が含まれています。

たとえば、次のようになりますsourismouseフランス語):https ://en.wiktionary.org/wiki/souris

1つの特定の言語のタイトルのみを取得する簡単な方法または既存のスクリプトはありますか?この言語に存在しないものを除いて、ウィクショナリーからすべての英語の単語を取得したいと思います。

これまでのところ、私の唯一のアイデアは、テキストを解析して==English==行があるかどうかを確認することですが、遅すぎて使用できません。

4

3 に答える 3

5

私はあなたがどちらかをする必要があると思います:

  • データベースダンプから抽出された、ウィクショナリー内の既存の英語の単語のリストを解析します。
  • データベースダンプ(タイトルだけでなく)をダウンロードして、自分で用語を抽出します。

オプションa)を試したのは、オプションb)が数GBのダウンロードを意味するからです。非常に簡単です。実際、好みの言語で独自のスクリプトを作成するためのベースとして使用できる簡単なJS実装が含まれています。

var baseURL="http://en.wiktionary.org/wiki/Index:English/"
var letters=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

for(i=0;i<letters.length;i++) {
    var letter = letters[i];
    console.log(letter);
    $.get(baseURL+letter, function(response) { 
        $(response).find('ol li a').each( function (k,v) { console.log(v.text) })    
    })
}

編集 私はこのテーマに非常に興味があったので、Pythonスクリプトを作成しました。誰かがそれが役に立つと思った場合に備えて:

from lxml.cssselect import CSSSelector
from lxml.html import fromstring
import urllib2

url = 'http://en.wiktionary.org/wiki/Index:English/'
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
for l in letters:
    req = urllib2.Request(url+l, headers={'User-Agent' : "Magic Browser"}) 
    con = urllib2.urlopen( req )
    response = con.read()
    h = fromstring(response)
    sel = CSSSelector("ol li a")

    for x in sel(h):
        print x.text.encode('utf-8')

結果を自分でペーストビンに貼り付けますが、500kbの制限では許可されません

于 2013-03-18T13:42:25.543 に答える
0

seransが投稿したソリューションとコードサンプルは素晴らしかったが、彼のpythonコードを実行するのに苦労した。

私は彼の例に従い、ルビーバージョンを書きました:

#!/usr/bin/env ruby

require 'net/http'
require "rexml/document"

url = 'http://en.wiktionary.org/wiki/Index:English/'

('a'..'z').to_a.each do |letter|
  response = Net::HTTP.get(URI(url + letter))
  doc = REXML::Document.new(response)
  REXML::XPath.each(doc, "//ol/li/a") do |element|
    puts element.text
  end
end
于 2013-11-20T05:14:28.877 に答える
0

@seransの回答に続いて、Swiftで同じことを行うためのGitHubGistを作成しました

https://gist.github.com/ashleymills/549ab8aff05ec90f4350#file-wiktionaryfetcher-swift

于 2015-02-03T14:38:42.110 に答える