【Script】英単語のボキャブラリーを増やすために考えてみました → 失敗
入社して1.5年、いつか体が勝手に覚えてくれると思ってノホホーンとしていた「英語」ですが、いやー全く覚えてくれませんね。
大誤算でした。外資だと思ってなめてました。
いまだに、Windwos とか書いといて気付かないという体たらくです。
そこで一念発起です。
MS 社内で流通している英単語に注力してみよう!プロジェクトの発足です。
社内のメーリングリストに流れているメールから英単語を抜き出して、頻出リストを作ることにしました。
どうやるか。
テキストマイニング?ピボットテーブル?そんなものは知りませんし、見たこともありません。必殺技の名前でしょうか?
私のツールは昔から vbscript だけって決まってるんです。
結果出来上がったのが、以下のスクリプトです。あまりのベタさに恥ずかしすぎてお見せしたくないのですが、何かのヒントになるかと思い、赤面しながらの放出です。
何をやっているかは一目瞭然です。
読みこんだテキストからいらない文字を片っ端から半角空白に置き換え、
半角空白でSplit し、
あとはひたすらループで数を計算
はずかしいです。
工夫した点は...あえて言えば、色分けした部分でしょうか。Dictionaryオブジェクトを使用して、同じ単語が出てきたらカウントアップしています。
3行目の「<テキストファイルを指定>」とあるところには、テキストファイルを指定してください。OUTLOOK を使っている方であれば、[ファイル]メニューの[インポートとエクスポート]から、フォルダ全体を一括でテキストファイルに保存できます。
ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile =objFSO.GetFile("<テキストファイルを指定>") Set objTS = objFile.OpenAsTextStream(ForReading, 0) r = objTS.ReadAll r = replace(r, "(", " ") r = replace(r, ")", " ") r = replace(r, "/", " ") r = replace(r, "=", " ") r = replace(r, ".", " ") r = Replace(r,chr(9)," ") r = Replace(r, "," ," ") r = Replace(r, ":", " ") r = Replace(r, ";", " ") r = Replace(r, """", " ") r = Replace(r, "“", " ") r = Replace(r, "”", " ") r = Replace(r, "’", " ") r = Replace(r, "?", " ") r = Replace(r, "!", " ") r = Replace(r, "$", " ") r = Replace(r, "\", " ") r = Replace(r, "%", " ") r = Replace(r, "*", " ") r = Replace(r, ",", " ") r = Replace(r, "[", " ") r = Replace(r, "]", " ") r = Replace(r, "{", " ") r = Replace(r, "}", " ") r = Replace(r, " ", " ") r = Replace(r, "|", " ") r = Replace(r, "~", " ") r = Replace(r, "‘", " ") r = Replace(r, "+", " ") r = Replace(r, "<", " ") r = Replace(r, ">", " ") r = Replace(r, "…", " ") r = Replace(r, "&", " ") r = Replace(r, "-", " ") r = Replace(r, "1", " ") r = Replace(r, "2", " ") r = Replace(r, "3", " ") r = Replace(r, "4", " ") r = Replace(r, "5", " ") r = Replace(r, "6", " ") r = Replace(r, "7", " ") r = Replace(r, "8", " ") r = Replace(r, "9", " ") r = Replace(r, "0", " ") r = Replace(r, "_", " ") r = Replace(r, "@", " ") r = Replace(r, " ", " ") r = Replace(r, vbCr, " ") r = Replace(r, vbLF, " ") r = Replace(r, vbCrLf, " ") arrR = split(r," ") wscript.echo UBound(arrR) Set objDic = CreateObject("Scripting.Dictionary") Set objDicCount = CreateObject("Scripting.Dictionary") For each n in arrR n = UCase(trim(n)) If len(n) >1 and IsNull(n) = False then If not objDic.Exists(n) then objDic.Add n,1 Else objDic.Item(n) = objDic.Item(n) + 1 End If End if Next Wscript.Echo objDic.Count objKeys = objDic.Keys objItems = objDic.Items For i = 0 To objDic.Count -1 Wscript.Echo objKeys(i) & "," & objDic.Item(objKeys(i)) Next |
このスクリプトを、拡張子 vbs で保存します。
結果を、Excelで読み込み、並べ替えたところ....出ました。
800通のメールを構成する、13000単語から、MS ワールドワイド エバンジェリズムグループ頻出単語一覧 トップ 140 の発表です。
順位 | 単語 | 出現回数 | 順位 | 単語 | 出現回数 | |
1 | THE | 20052 | 71 | MY | 1111 | |
2 | TO | 15570 | 72 | WOULD | 1086 | |
3 | MICROSOFT | 12226 | 73 | COMBS | 1076 | |
4 | CN | 11991 | 74 | USE | 1075 | |
5 | AND | 11229 | 75 | VIRTUALIZATION | 1066 | |
6 | IT | 9565 | 76 | LIKE | 1059 | |
7 | OF | 7349 | 77 | SO | 1052 | |
8 | COM | 7217 | 78 | AM | 1039 | |
9 | IS | 6473 | 79 | ME | 1033 | |
10 | IN | 6056 | 80 | ONE | 1009 | |
11 | OU | 6050 | 81 | EVENT | 1001 | |
12 | EX | 5975 | 82 | DPE | 999 | |
13 | HTTP | 5934 | 83 | THERE | 985 | |
14 | FOR | 5318 | 84 | RBUIKE | 984 | |
15 | WE | 4918 | 85 | TARPARA | 975 | |
16 | THAT | 4535 | 86 | HAS | 973 | |
17 | THIS | 4468 | 87 | UK | 972 | |
18 | NORTHAMERICA | 4455 | 88 | UP | 957 | |
19 | YOU | 4268 | 89 | MAILTO | 949 | |
20 | TECHNET | 4136 | 90 | PEOPLE | 946 | |
21 | RECIPIENTS | 4011 | 91 | EDGE | 913 | |
22 | ON | 3992 | 92 | WAS | 908 | |
23 | WITH | 3903 | 93 | THEM | 907 | |
24 | FROM | 3644 | 94 | SOME | 895 | |
25 | ARE | 3178 | 95 | PRODUCT | 894 | |
26 | BE | 2833 | 96 | JUST | 886 | |
27 | WW | 2689 | 97 | NEW | 877 | |
28 | HAVE | 2676 | 98 | ASPX | 857 | |
29 | EVANGELISTS | 2674 | 99 | OUT | 856 | |
30 | EXCHANGE | 2586 | 100 | ANY | 846 | |
31 | WINDOWS | 2439 | 101 | VIRAL | 844 | |
32 | AS | 2426 | 102 | GROUP | 834 | |
33 | WILL | 2306 | 103 | CUSTOMERS | 825 | |
34 | NOT | 2177 | 104 | TECHNICAL | 825 | |
35 | VISTA | 2113 | 105 | SUPPORT | 819 | |
36 | RE | 2095 | 106 | JUNE | 817 | |
37 | OUR | 2086 | 107 | PM | 817 | |
38 | PRO | 2083 | 108 | WANT | 814 | |
39 | IF | 2053 | 109 | ALSO | 813 | |
40 | DLS | 1986 | 110 | ORLANDO | 804 | |
41 | SUBJECT | 1946 | 111 | DC | 790 | |
42 | CAN | 1925 | 112 | WHO | 789 | |
43 | SENT | 1911 | 113 | APPLE | 777 | |
44 | BUT | 1903 | 114 | SP | 771 | |
45 | BLOGS | 1862 | 115 | EVANGELIST | 768 | |
46 | OR | 1862 | 116 | OTHER | 759 | |
47 | AT | 1834 | 117 | THAN | 754 | |
48 | YOUR | 1785 | 118 | WHICH | 751 | |
49 | THEY | 1724 | 119 | NEED | 743 | |
50 | US | 1626 | 120 | BEEN | 727 | |
51 | CONTENT | 1573 | 121 | MICHAEL | 719 | |
52 | AN | 1554 | 122 | IPHONE | 710 | |
53 | WHAT | 1505 | 123 | KNOW | 710 | |
54 | ABOUT | 1500 | 124 | THINK | 706 | |
55 | WWW | 1490 | 125 | EUROPE | 702 | |
56 | RODNEY | 1489 | 126 | TIME | 699 | |
57 | BUIKE | 1469 | 127 | PLEASE | 694 | |
58 | SERVER | 1451 | 128 | SHOULD | 694 | |
59 | SESSION | 1406 | 129 | AUDIENCE | 690 | |
60 | ALL | 1372 | 130 | ESCALANTE | 690 | |
61 | GET | 1367 | 131 | SEE | 689 | |
62 | BY | 1342 | 132 | MOBILE | 686 | |
63 | DO | 1290 | 133 | LOPEZ | 670 | |
64 | HOW | 1266 | 134 | ONLY | 660 | |
65 | TEAM | 1246 | 135 | ENTERPRISE | 659 | |
66 | LIVE | 1216 | 136 | WELL | 644 | |
67 | OFFICE | 1213 | 137 | DON | 638 | |
68 | KEITH | 1156 | 138 | WHEN | 634 | |
69 | THEIR | 1131 | 139 | HELP | 631 | |
70 | MORE | 1112 | 140 | EVANGELISM | 623 |
TO と MICROSOFT を抑えて、堂々の一位は THE に決まりました。
注目は、113 位の APPLE と 122 位の IPHONE ですかね。来週はどうなっているでしょう。
このリストを見て思うのは...
THE かよっ!
やる前からわかっちゃいたんですけどね。
人名とかURLなんかもごっちゃになったまま集計したので、ぜーんぜん...ではありませんが、大した意味はありませんでした。
ちなみに、アルファベット順にすると結構よさげなんですけどね。
Comments
Anonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
正規表現を使えば、もっとコードは短くなりそうですね。 こんな感じでしょうか。 (前略) Set re = New RegExp re.Pattern = "[a-zA-Z]{2,}" re.Global = True Set Matches = re.Execute(r) (後略)Anonymous
January 01, 2003
>sueda_xp@msn.com さん ありがとうございます! そういう突っ込みをお待ちしておりました。 是非とも sueda_xp@msn.com さんのblogで改良版の公開を! >hirorin さん 私は、今年は英語がんばります...というか、そもそも単語のオーダーが足りなすぎるので、意識して覚えていこうと思います。頻繁に目に単語なのに、文意で判断してしまって、単語そのものの意味を正確に理解していないのだ、ということが最近わかってきました..。いかんなぁ...。 >奥主さん なるほど。ちょっと並べ替えてみます。Anonymous
January 01, 2003
ボキャブラリーを増やすなら単語の長いもの順にしたらどうでしょうか。普通長いもんほどよく知らないでしょ(●^o^●)