teratail header banner
teratail header banner
質問するログイン新規登録
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

4回答

2963閲覧

Rubyで、ひらがな出来れば(アルファベット)から漢字を生成する方法

NishidaRyu416_

総合スコア113

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

1クリップ

投稿2017/08/03 13:59

編集2017/08/05 03:32

1

1

タイトルのようなことをする方法を教えてください。漢字については、候補がたくさんあるほうが良いです。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2017/08/04 01:56

辞書を書けばmecabでも当然できると思うけど。この質問文では「方法が知りたい」のか「実行できる環境が欲しい」のか区別がつかない。
guest

回答4

0

ある程度の文だとすると日本語変換してあげる必要があると思います。

簡単なのだとYahoo API を使って変換するのが楽なんじゃないでしょうか。ただ候補がたくさんあるなかから選ぶのは大変ですよ。

https://developer.yahoo.co.jp/webapi/jlp/jim/v1/conversion.html

投稿2017/08/03 14:34

kero1209

総合スコア431

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NishidaRyu416_

2017/08/03 14:50

ありがとうございます。候補は多いほうが良いので、、
guest

0

mecabで、アルファベットから、漢字を探して、漢字化

是非ともそのやり方が知りたいですね。教えていただけますか?

投稿2017/08/03 14:08

_Victorique__

総合スコア1392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NishidaRyu416_

2017/08/03 14:40

無理でしたね。調べたら
guest

0

ベストアンサー

Rubyで漢字をひらがなに変換する
このページに書いてあることの逆をする。

ウェブ漢字辞典を探し出して、そのページで
検索した結果を表示する。

という方法を思いつきました。
相手のサイト様は場合によってはとても困るかも。

作ってみました。
正規表現バージョン。

Ruby

1# encoding: utf-8 2 3require 'open-uri' 4require 'certified' 5require 'uri' 6require 'kconv' 7 8word = gets.chomp.encode('UTF-8') 9url = "XXXXXXXXXXXXXXXXXXXXXXXXX" 10puts open(url, &:read).toutf8.scan(%r|XXXXXXXXXXXXXXXXXXXXX|)

Ruby

1あめ 234567

xpathバージョン。

Ruby

1# encoding: utf-8 2 3require 'open-uri' 4require 'certified' 5require 'uri' 6require 'nokogiri' 7require 'kconv' 8 9word = ARGV[0].encode('UTF-8') # <= あめ 10url = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 11html = open(url, &:read) 12doc = Nokogiri::HTML.parse(html.toutf8) 13 14doc.xpath('//span[@class="searchyomitbspan1"]').each do |node| 15 puts node.xpath('a').text 16end
天 雨 飴 餃 糖 糛

Mechanizeバージョン。

Ruby

1# encoding: utf-8 2 3require 'mechanize' 4 5word = ARGV[0].encode('UTF-8') # <= あめ 6url = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 7agent = Mechanize.new 8 9agent.get(url).search('//span[@class="searchyomitbspan1"]').each do |node| 10 puts node.search('a').text 11end
天 雨 飴 餃 糖 糛

熟語には変換できません。

#補足
ローマ字から漢字に検索したい場合は
ローマ字とひらがなを変換する
こちらのページを参考に、一旦ひらがなに変換して
検索することで対応します。

投稿2017/08/03 14:08

編集2017/08/06 08:57
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NishidaRyu416_

2017/08/03 14:51

ですよね、ただ、mikkanも、勝手にweblio使ってるんで、、
suzukis

2017/08/03 23:57

サイトに機械的にアクセスすること、そのようにして取得したデータを利用すること、が認められているか確認しましたか?
NishidaRyu416_

2017/08/04 01:00

わざわざ作っていただきありがとうございます
退会済みユーザー

退会済みユーザー

2017/08/04 03:46 編集

suzukis様、ご指摘ありがとうございます。 機械的にアクセスすることの問題は 「大量」かつ「短い」間隔でアクセスすることに あるのだろうなと素人の私は予想しています。 例えば、Chromeでサイトを開いてソースコードを 取得するのと、PhantomJSでサイトを開いて ソースコードを取得するのには違いがあるのでしょうか。 またPhantomJSで開いてソースコードを取得するのと open-uriでサイトを開いてソースコードを取得するのには 違いはあるのでしょうか。(JSが動かないという違いがある。) 少なくとも私が書いたコードは[自動で]連続的に検索したりは できません。 「そのようにして取得したデータを利用すること」に関しては 私は、この回答以外に今のところは使う予定がありません。 「確認しましたか?」ということに関しては確認していません。 [私が書いたコードと私の使い方は]ブラウザでサイトを見るのと 同じでは?と思ったので。 私のコードは、あらかじめメモ帳にURLの変化しない部分を書いておき そこに変化する部分をくっつけてコピー、ブラウザの検索欄にペースト してページを開きソースコードを確認、そこから特定の箇所を検索して 表示という行為を高速化しているにすぎません。 私のコードが動いても私が手作業で行っても、サイトには1回アクセス されます。 こういった指摘があるたびに、この両者は異なっている のだろうかと疑問に思います。 コピー&ペーストの速度が上がっても何も変わらない気が 素人の私にはします。 「大量」かつ「短い」間隔で行われる 機械的なアクセスを戒めるために、本質的には 人間がブラウザでページを開いてソースコード取得 するのと同じ(「大量」に「短い」間隔でアクセス しないという点で人間的)行為を許さないということ なのかなぁと個人的には思っています。
退会済みユーザー

退会済みユーザー

2017/08/05 04:09 編集

低評価を押された方へ。 安心してください。私は怖くない人ですよ。 ですから、もし可能であれば Chrome等でサイトにアクセスするのと open-uriでサイトにアクセスするのとに 違いがあるのかお答えください。 そうなさることで、私という一人の 人間が、あなたが望まないであろう [機械を使っているという点で]機械的な アクセスを将来行う可能性が なくなるかもしれません。 世界はあなたのおかげで今日よりも 1歩よくなるわけです。 その機会を逃してよいのですか? 私の回答に低評価を押したあなたの正義感は それを許さないはずです。 是非、私の疑問に対するあなたのお考えを お聞かせください。
退会済みユーザー

退会済みユーザー

2017/08/05 04:08 編集

例えば、私がteratailに日に100回アクセスしたとして それがとがめられることは恐らくないでしょう。 その私が現実の体を持つロボットだった場合 これも、とがめられないと思います。 仮にそのロボットがコンピュータだけの存在だったら とがめられるのでしょうか。 結局、アクセスする頻度と間隔の問題にしなければ 苦しい気がします。 これを前提に私のコードを考えれば 頻度的にも間隔的にも問題はないように 見えます。 「影鷹」がOKなら表示するときに若干 加工する私のコードも大丈夫なの ではないかと私は考えています。
suzukis

2017/08/05 06:08

サイトによっては利用条件上明示的に機械的なアクセスや情報の二次利用を禁止または制限している事があるので、「確認しましたか?」と確認しているだけです。
退会済みユーザー

退会済みユーザー

2017/08/05 07:28 編集

回答 確認していない。 その理由 ブラウザで当該ページを 表示するのと同じと考えたから。 疑問 私のコードは機械的なアクセスや情報の二次利用に あたるのでしょうか。 仮にそうであるとするならば、ブラウザで当該サイトに アクセスしてページを表示するのと私のコードには どういったちがいがあるのでしょうか? また、どうしてsuzukis様が私に確認するのでしょうか? そのように独立した回答をsuzukis様がなさって 質問者様に注意を促されたらよいだけでは。 少なくとも、私はこのコードを使って何かしらの サービス等を行う気はありません。
NishidaRyu416_

2017/08/06 07:01

なんか、すみません。せっかく回答して下さったのに、 しかしながら、私も回答者さんの意見に同意です。サーバーを落とすほどの頻度でやらなければ、法的にも問題はないと思うし、二次利用禁止とは書かれていませんでした。
NishidaRyu416_

2017/08/06 07:05

suzukis さん回答者を、注意する必要はありません。
退会済みユーザー

退会済みユーザー

2017/08/06 08:45 編集

NishidaRyu416_様 擁護してくださってすみません。 teratailではスクレイピングに関する話題は すべてではありませんが、suzukis様が おっしゃっているのと同じ指摘をされることが あります。 私はこれまでにも、こういった指摘を見てきたので 私の回答に対してコメントがつけられたこの機会に こういった指摘をする人の真意を聞いてみようと 思い、反論してみました。 その結果、「確認しただけ」という非常に 純粋かつ、特に意味のない回答を得ることになりました。 確認したからと言って、suzukis様に どういったメリットがあるのか不明瞭かつ 回答をしただけの私に何を期待しているのか いまいちよく分かりませんでした。 そもそも、私はコードを書いただけです。 私のコードをどのように利用するかは利用する人の 自由です。 teratailの低評価は技術的な間違いを指摘する意図を 持たない場合もあるということは勉強になりました。
suzukis

2017/08/06 08:45

サービスの利用条件を確認するのは最低限のリテラシーです。自分だけでやっていることまでとやかく言うつもりはないですが、このような場で他人に利用方法を提示するのであれば、確認した上で回答しましょう。
退会済みユーザー

退会済みユーザー

2017/08/06 08:55

なるほど、理解しました。 ご返答ありがとうございました。 私のコードのURLの部分を削除しておきます。 この度は、低評価を押してコメントをして下さる人が 少ない中、継続的にコメントをしてくださり 誠にありがとうございました。 お礼に、suzukis様のこれまでの ベストアンサーの回答に高評価を させていただきますね。
guest

0

Google CGI API for Japanese Inputはどうですか?

https://www.google.co.jp/ime/cgiapi.html

Google CGI API for Japanese Inputをラッピングし、平仮名を日本語変換するRubyライブラリ。

https://github.com/hitode909/glitch-ime

投稿2017/08/04 00:36

satena

総合スコア109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NishidaRyu416_

2017/08/04 01:01

回答ありがとうございます。日本語がわからない人に使わせたいので、難しいかと、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問