【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 (4)

  1. 匿名 より:

    さすが、安納さん。楽しく身につける努力を忘れていないところがすばらしい!

    typoは良くやることなので、気にしちゃいません。っと言っていられない人がここにいます。よく"l"と"r"を間違えたり、"n"と"m"を間違えたり、単語を使い間違えたり。

    メールを出す前にスペルチェックをかけるようにしていますが、候補が見つからないといわれ、結局自分で辞書をひきひき・・・

    身につける一番よい方法は、書くことでしょうか。

    昔は、一番でボールペンのインクを使いきれと言われたり、とにかく書け!といわれましたが、文明の利器のおかげで手が動きません。

    私は、冠詞より「(結果が)再現がきない」といった単語を目にすることが増えました。あと"Error", "Bug"が多い気がします。

  2. 匿名 より:

    正規表現を使えば、もっとコードは短くなりそうですね。

    こんな感じでしょうか。

    (前略)

    Set re = New RegExp

    re.Pattern = "[a-zA-Z]{2,}"

    re.Global = True

    Set Matches = re.Execute(r)

    (後略)

  3. 匿名 より:

    >sueda_xp@msn.com さん

    ありがとうございます!

    そういう突っ込みをお待ちしておりました。

    是非とも sueda_xp@msn.com さんのblogで改良版の公開を!

    >hirorin さん

    私は、今年は英語がんばります…というか、そもそも単語のオーダーが足りなすぎるので、意識して覚えていこうと思います。頻繁に目に単語なのに、文意で判断してしまって、単語そのものの意味を正確に理解していないのだ、ということが最近わかってきました..。いかんなぁ…。

    >奥主さん

    なるほど。ちょっと並べ替えてみます。

  4. 奥主 洋 より:

    ボキャブラリーを増やすなら単語の長いもの順にしたらどうでしょうか。普通長いもんほどよく知らないでしょ(●^o^●)

Skip to main content