Mathematica では英単語を使って数を表現できると聞きました。100を表すのに 100 を使うようなものです。どの関数がそれを行うことができますか?
4 に答える
ドリーブスのソリューションと基本的に同等のソリューション(ただし、彼の回答時には利用できませんWolframAlpha[]
)は、 Mathematica から直接呼び出すことです(これにはインターネット接続が必要です)。例えば、
WolframAlpha["6 million 2 hundred and 12 thousand and fifty two",
{{"Input", 1}, "Plaintext"}]
文字列を返します
"6212052"
したがって、実際の数値を返す次の関数を作成できます
textToNumber[num_String] :=
Module[{in = WolframAlpha[num, {{"Input", 1}, "Plaintext"}]},
If[StringMatchQ[in, NumberString], ToExpression[in], $Failed]]
また、10 進数や負の数 ( など) でも機能しtextToNumber["minus one point one"]
ます。
"Plaintext"
出力以外のものを要求できることに注意してください。利用可能なものを見つける最も簡単な方法は、いくつかの番号 (例: ) を入力WolframAlpha["twelve"]
し、各「ポッド」の右側にある ⨁ 記号を押して利用可能なオプションを調べることです。また、やなどの便利な出力「形式」が記載されているドキュメントを調べることも価値があります。"MathematicaParse"
"PodIDs"
別の方向に進むこともできます。
numberToText[num_Integer] := WolframAlpha[ToString[num],
{{"NumberName", 1}, "Plaintext"}]
非整数の発話形式を取得するための適切な呪文が見つかりませんでした。誰かが適切な呪文を知っている場合、またはW|Aがこの能力を獲得した場合は、お気軽にこの回答を更新してください。SpokenString
数字を音声フレーズとして読み取るオプションがないのは残念です。
Wolfram Alpha がそれを実行できることがわかったので、英語の文字列を Wolfram Alpha に送信し、結果を解析する厄介な小さな関数を次に示します。
w2n[s_String] := ToExpression[StringCases[
Import["http://www.wolframalpha.com/input/?i=" <> StringReplace[s, " "->"+"],
"String"],
RegularExpression["Hold\\[([^\\]]*)\\]"] -> "$1"][[1]]]
例:
w2n["two million six hundred sixty-six"]
> 2000666
Wolfram Alphaは実際のAPIを提供していますか? それは本当に素晴らしいことです!
PS: 彼らは今持っていますが、それは高価です: http://products.wolframalpha.com/api/
PPS: wolframalpha の結果ページが少し変更され、スクレイピングが機能しなくなったことに気付きました。ただし、その正規表現のいくつかのバリアントは機能するはずです。
これはコードです:
IntegerName[78372112345]
これは出力です:
780億 3億7200万 112千 345