『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

いつもご助言いただき、誠にありがとうございます。

文章Aと文章Bの類似度をチェックできるツールを探しています。

ご存じありませんか?


プログラミング等の知識がありませんので、出来ればフリーのツールなどを
ご紹介いただけると助かります。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

    • good
    • 0

ちょいちょい知恵袋やOKWAVEの質問から、ソフトをつくっている人もいるみたいですが、


調べると意外とありますね。
http://ofo.jp/similarity.php
http://app.f.m-cocolog.jp/t/typecast/484013/4703 …
しまいにはperlには類似度を表すライブラリーまであった

んたしも作ってもいいかなー、と思ったのですが、普通にあるのでは。
なにか、もっと特殊な事情があるのなら、最初のページから、依頼してみては?
    • good
    • 0

元文章がどういう形式化わかりませんが、こちらから適切と思われるものを試してみてくださ。


http://www.vector.co.jp/vpack/filearea/win/util/ …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QaccessかExcelで類似検索はできますか?

accessかExcelで類似検索はできますか?

accessで単語の類似検索はできますか?
たとえば、「パイナップル」と「ハイナップル」のように一文字だけ違う単語とか
「パイナップル!」のように特定の文字列が付加されている単語を検索したいのです。
VBAを使ったやり方でもよいので教えていただけないでしょうか。

Aベストアンサー

文字列の類似度を表すレーベンシュタイン距離というのをAccessのクエリで使ってみた事があります。
「パイナップル」と「ハイナップル」なら1になりますので、ユーザー定義式の結果が1になるレコードを抽出といった形で使えます。一文字だけの相違ならすっきりとした結果が出ますが、何文字か異なっていると、なかなか思った通りにはいかなかった記憶があります。
レーベンシュタイン距離 VBAで、下記がヒットしましたので、ご参考に載せておきます。
http://pub.ne.jp/arihagne/?entry_id=2781916

Q■近似している文字列を抽出したい

エクセル内に数万件のレコードが書き込まれています。
登録されているデータの品質をチェックしたいため、
特定の列を参照し、類似しているデータは一括で抽出したいと考えています。

エクセルの関数だけに限った際、
下記のようなやり方があるかと思いますが、
一括で抽出することができないためお知恵をいただきたい所存です。

現在のチェック方法
(1)B2のリンゴをA1にコピーし、C列はA1とB列の文字列の適合率を表示する。
(2)C列の適合率が高いもの(仮に90%以上適合した文字列)を目検でチェック
(3)B3以降をA1に順次コピーして(1)~(2)のチェックを行う
      |A列   |B列   |C列
1     |リンゴ |       |
2     |     |リンゴ   |100%
3     |     |すいか  |0%
4     |     |もも    |0%
5     |     |すもも   |0%
6     |     |メロン   |33%
7     |     |生ハム  |0%
8     |     |おリンゴ |100%


■ご質問させていただく内容
・近似した文字列の適合率を一括で調べるもしくは抽出するツールをご存知でしょうか?
・もしくは、上記に記載した内容をマクロで組むことができるでしょうか?
例えば以下のような流れです。
※上図を参考に説明
(1)Sheet1のB2の文字列の適合率をB2:B8まで順次計算してC列に代入
(2)Sheet1のC列を参照し、B2の行以外で適合率が90%以上の場合、Sheet2のA列に代入
(3)B3~B8まで(1)~(2)の処理を繰り替えす。
※参考になるサイトやプログラムなどをご教示いただければ幸いです。

よろしくお願い致します。

エクセル内に数万件のレコードが書き込まれています。
登録されているデータの品質をチェックしたいため、
特定の列を参照し、類似しているデータは一括で抽出したいと考えています。

エクセルの関数だけに限った際、
下記のようなやり方があるかと思いますが、
一括で抽出することができないためお知恵をいただきたい所存です。

現在のチェック方法
(1)B2のリンゴをA1にコピーし、C列はA1とB列の文字列の適合率を表示する。
(2)C列の適合率が高いもの(仮に90%以上適合した文字列)を目検でチェック
(3)B3以降...続きを読む

Aベストアンサー

こんばんは!
ExcelでVBAの一例です。

↓の画像で左側がSheet1・右側がSheet2とします。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, j As Long, k As Long, cnt As Long, str As String, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
i = wS2.Cells(Rows.Count, "A").End(xlUp).Row
If i > 1 Then
Range(wS2.Cells(2, "A"), wS2.Cells(i, "C")).ClearContents
End If
wS2.Range("B:B").Style = "Percent" '←Sheet2のB列を%表示にしている場合は不要
With wS1
For i = 2 To .Cells(Rows.Count, "B").End(xlUp).Row
.Range("A1") = .Cells(i, "B")
For j = 2 To .Cells(Rows.Count, "B").End(xlUp).Row
If InStr(.Cells(j, "B"), .Range("A1")) > 0 Then
.Cells(j, "C") = 1
Else
For k = 1 To Len(.Range("A1"))
str = Mid(.Range("A1"), k, 1)
If InStr(.Cells(j, "B"), str) > 0 Then
cnt = cnt + 1
End If
Next k
.Cells(j, "C") = cnt / Len(.Range("A1"))
cnt = 0
End If
If .Range("A1") <> .Cells(j, "B") And .Cells(j, "C") >= 0.9 Then
With wS2.Cells(Rows.Count, "A").End(xlUp).Offset(1)
.Value = wS1.Cells(j, "B")
.Offset(, 1) = wS1.Cells(j, "C")
.Offset(, 2) = wS1.Range("A1")
End With
End If
Next j
Next i
.Range("C:C").ClearContents
End With
End Sub 'この行まで

※ 余計なお世話かもしれませんが、Sheet2のC列にはSheet1のA1セルのデータの場合で
B列にはそれに対する割合を表示させています。
Sheet2の2行目を説明すると
A1セルが「リンゴ」の時に「おリンゴ」が100%になります

同様に3行目はSheet1のA1セルが「もも」の時に「すもも」が100%
というコトになります。
(Sheet1のC列データは最終的には消しています)

外していたらごめんなさいね。m(_ _)m

こんばんは!
ExcelでVBAの一例です。

↓の画像で左側がSheet1・右側がSheet2とします。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, j As Long, k As Long, cnt As Long, str As String, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
i = wS2.Ce...続きを読む

Q文書間の類似度を調べるのにコサイン類似度を用いない理由 ( コサイン類似度の欠点 ) があったら教えてください

ここのカテゴリでいいかわからないのですが質問させてください。

今ある事情である文書とべつの文書が類似してるかどうか調べています。
この時オーソドックスなのがコサイン類似度を用いるのが普通だと思います。
しかし事情があり、別の方法を取りたいと考えています。
そこで他人に説明するときにコサイン類似度を用いない理由を説明する必要があるので、考えられるコサイン類似度を用いない理由 ( コサイン類似度の欠点 ) があったら教えてください。

また、他に適切なカテゴリがあったら教えてください。

よろしくお願いします。

Aベストアンサー

コサイン類似度の定義が明確でないので答えられません。
常識的に考えると、二つのベクトル a, b があるとき、その類似度は
(a, b) /(||a||・||b||)
で定義されます。分子はベクトルの内積で、分母はそれぞれのノルムです。これはベクトル空間における二つのベクトルのコサインになります。
このように定義された類似度 s は
-1 ≦ s ≦ 1
になり、右側の等号が成立するのは a=Kb (K>0) のときだけです。
このような性質があるので類似度は良く用いられますが、これおを用いなければならない必然性があるわけではありません。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QExcel 文字列 一致

2つの文字を比較して一致した文字の数を数える関数があれば教えてください。

例えばExcelでA1セルに「海山商事」A2セルに「海猫商事」を入れて比較し、一致している文字数(この場合は「3」)をA3に出力したいのですがどうしたらよいですか?大変恐縮ですがアドバイスください。よろしくお願いします。

Aベストアンサー

=SUMPRODUCT(ISNUMBER(FIND(MID(B1,ROW(INDIRECT("1:"&LEN(B1))),1),A1))*1)

※注意
「海山商事」と「山海商事」だと4が結果になります。

Q25分13秒05 を 1513秒 と表示させたい

数百件分を秒換算しなくてはなりません。
良い方法はありますか?

Aベストアンサー

#3です。
解決、おめでとうございます。

ええと、FIND("分",A1) は
「"分"という文字はA1のセルの文字列の何文字目にあるか」
ということを意味します。

VALUEは、文字列を数値に変換するための処理で、全角で入力していた場合に、数値として計算可能にするための変換です。実際には、Excelでは全角の数値でも普通に計算してくれるので、あまり意味はないのですが、つい、いつもの癖で入れてしまいました。

「LEFT(A1,B1-1)」はA1のセルの文字列の左から(B1-1)文字分を取り出すという意味で、
「MID(A1,B1+1,C1-B1-1)」はA1のセルの文字列の左から(B1+1)文字目から、(C1-B1-1)文字分だけ取り出すという意味です。

Q統計学的に信頼できるサンプル数って?

統計の「と」の字も理解していない者ですが、
よく「統計学的に信頼できるサンプル数」っていいますよね。

あれって「この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる」という決まりがあるものなのでしょうか?
また、その標本数はどのように算定され、どのような評価基準をもって客観的に信頼できると判断できるのでしょうか?
たとえば、99人の専門家が信頼できると言い、1人がまだこの数では信頼できないと言った場合は信頼できるサンプル数と言えるのでしょうか?

わかりやすく教えていただけると幸いです。

Aベストアンサー

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要なサンプル数は、比べる検定手法により計算できるものもあります。
 最低限必要なサンプル数ということでは、例えば、ある集団から、ある条件で抽出したサンプルと、条件付けをしないで抽出したサンプル(比べるための基準となるサンプル)を比較するときに、そのサンプルの分布が正規分布(正規分布解説:身長を5cmきざみでグループ分けし、低いグループから順に並べたときに、日本人男子の身長なら170cm前後のグループの人数が最も多く、それよりも高い人のグループと低い人のグループの人数は、170cmのグループから離れるほど人数が減ってくるような集団の分布様式)でない分布形態で、しかし分布の形は双方とも同じような場合「Wilcoxon符号順位検定」という検定手法で検定することができますが、この検定手法は、サンプルデータに同じ値を含まずに最低6つのサンプル数が必要になります。それ以下では、いくらデータに差があるように見えても検定で差を検出できません。
 また、統計上差を出すのに必要なサンプル数の例では、A国とB国のそれぞれの成人男子の身長サンプルがともに正規分布、または正規分布と仮定した場合に「t検定」という検定手法で検定することができますが、このときにはその分布を差がないのにあると間違える確率と、差があるのにないと間違える確率の許容値を自分で決めた上で、そのサンプルの分布の値のばらつき具合から、計算して求めることができます。ただし、その計算は、現実に集めたそれぞれのサンプル間で生じた平均値の差や分布のばらつき具合(分散値)、どのくらいの程度で判定を間違える可能性がどこまで許されるかなどの条件から、サンプル間で差があると認められるために必要なサンプル数ですから、まったく同じデータを集めた場合でない限り、計算上算出された(差を出すために)必要なサンプル数だけサンプルデータを集めれば、差があると判定されます(すなわち、サンプルを無制限に集めることができれば、だいたい差が出るという判定となる)。よって、集めるサンプルの種類により、計算上出された(差を出すために)必要なサンプル数が現実的に妥当なものか、そうでないのかを、最終的には人間が判断することになります。

 具体的に例示してみましょう。
 ある集団からランダムに集めたデータが15,12,18,12,22,13,21,12,17,15,19、もう一方のデータが22,21,25,24,24,18,18,26,21,27,25としましょう。一見すると後者のほうが値が大きく、前者と差があるように見えます。そこで、差を検定するために、t検定を行います。結果として計算上差があり、前者と後者は計算上差がないのにあると間違えて判断する可能性の許容値(有意確率)何%の確率で差があるといえます。常識的に考えても、これだけのサンプル数で差があると計算されたのだから、差があると判断しても差し支えないだろうと判断できます。
 ちなみにこの場合の差が出るための必要サンプル数は、有意確率5%、検出力0.8とした場合に5.7299、つまりそれぞれの集団で6つ以上サンプルを集めれば、差を出せるのです。一方、サンプルが、15,12,18,12,21,20,21,25,24,19の集団と、22,21125,24,24,15,12,18,12,22の集団ではどうでしょう。有意確率5%で差があるとはいえない結果になります。この場合に、このサンプルの分布様式で拾い出して差を出すために必要なサンプル数は551.33となり、552個もサンプルを抽出しないと差が出ないことになります。この計算上の必要サンプル数がこのくらい調査しないといけないものならば、必要サンプル数以上のサンプルを集めて調べなければなりませんし、これだけの数を集める必要がない、もしくは集めることが困難な場合は差があるとはいえないという判断をすることになるかと思います。

 一方、支持率調査や視聴率調査などの場合、比べるべき基準の対象がありません。その場合は、サンプル数が少ないレベルで予備調査を行い、さらにもう少しサンプル数を増やして予備調査を行いを何回か繰り返し、それぞれの調査でサンプルの分布形やその他検討するべき指数を計算し、これ以上集計をとってもデータのばらつきや変化が許容範囲(小数点何桁レベルの誤差)に納まるようなサンプル数を算出していると考えます。テレビ視聴率調査は関東では300件のサンプル数程度と聞いていますが、調査会社ではサンプルのとり方がなるべく関東在住の家庭構成と年齢層、性別などの割合が同じになるように、また、サンプルをとる地域の人口分布が同じ割合になるようにサンプル抽出条件を整えた上で、ランダムに抽出しているため、数千万人いる関東の本当の視聴率を割合反映して出しているそうです。これはすでに必要サンプル数の割り出し方がノウハウとして知られていますが、未知の調査項目では必要サンプル数を導き出すためには試行錯誤で適切と判断できる数をひたすら調査するしかないかと思います。

> どのような評価基準をもって客観的に信頼できると判断・・・
 例えば、工場で作られるネジの直径などは、まったくばらつきなくぴったり想定した直径のネジを作ることはきわめて困難です。多少の大きさのばらつきが生じてしまいます。1mm違っても規格外品となります。工場では企画外品をなるべく出さないように、統計を取って、ネジの直径のばらつき具合を調べ、製造工程をチェックして、不良品の出る確率を下げようとします。しかし、製品をすべて調べるわけにはいきません。そこで、調べるのに最低限必要なサンプル数を調査と計算を重ねてチェックしていきます。
 一方、農場で生産されたネギの直径は、1mmくらいの差ならほぼ同じロットとして扱われます。また、農産物は年や品種の違いにより生育に差が出やすく、そもそも規格はネジに比べて相当ばらつき具合の許容範囲が広くなっています。ネジに対してネギのような検査を行っていたのでは信頼性が損なわれます。
 そもそも、統計学的検定は客観的判断基準の一指針ではあっても絶対的な評価になりません。あくまでも最終的に判断するのは人間であって、それも、サンプルの質や検証する精度によって、必要サンプルは変わるのです。

 あと、お礼の欄にあった専門家:統計学者とありましたが、統計学者が指摘できるのはあくまでもそのサンプルに対して適切な検定を使って正しい計算を行ったかだけで、たとえ適切な検定手法で導き出された結果であっても、それが妥当か否か判断することは難しいと思います。そのサンプルが、何を示し、何を解き明かし、何に利用されるかで信頼度は変化するからです。
 ただ、経験則上指標的なものはあります。正規分布を示すサンプルなら、20~30のサンプル数があれば検定上差し支えない(それ以下でも問題ない場合もある)とか、正規分布でないサンプルは最低6~8のサンプル数が必要とか、厳密さを要求される調査であれば50くらいのサンプル数が必要であろうとかです。でも、あくまでも指標です。

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要な...続きを読む

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

Qエクセルで最後の行までを選択

エクセルで1万行位あるものの1行目から最後の行までを一気に選択する方法はあるでしょうか?また、同じようにA列とB列のみを最後の行まで選択する方法もあるでしょうか?よろしくお願いします。

Aベストアンサー

こんにちは。

マクロなどが設定されていなければ、

シフトキーを押しながら、A1 の、セルの四角の底辺の枠線をダブルクリックすれば、その列が最後まで選択されます。A列B列のみなら、A列で、シフトキーを押しながら、B列のB1 のセルの四角の枠線をダブルクリックすれば選択されます。(ただし、空白セルが途中にあったら、そこでとまります。)

シフトキーを押しながら
+-------------+
|            |
|            |
+-------------+
   ↑
   ここをダブルクリック

QExcelで2つのファイルの違い(Diff)をとりたい

Excelでファイル名が同じで更新日付の異なる2つのファイルがあります。
この2つのファイルで内容が変わっている部分を知りたいのですが、良い方法はあるでしょうか?
(もしくは内容が変わっているかどうかだけでも知りたい)

比較が必要なファイルが大量にあるため、一つずつ見比べる時間が無く、困っています。

Aベストアンサー

使ってないのでお勧めはわかりませんが、こちらのフリーソフトを試してみては?
http://search.vector.co.jp/search?query=excel+%94%E4%8Ar


人気Q&Aランキング