0

バックグラウンド:

私は、コンピューターに保存されているすべての映画とテレビ シリーズのエピソードを繰り返し処理し、それらを (腐ったトマトを使用して) 評価し、評価順に並べ替えるプログラムを開発しています。

ファイル名から「.avi」や「720p」などの不要なテキストをすべて削除して、ムービー名を抽出します。

私はJavaを使用しています。

問題:

一部のフォルダには、次のようなムービー ファイルが含まれています。

しの301

しの302

「エピソード」という単語と数字は有効であり、映画でよく使用される単語であるため、単純に削除することはできません。ただし、「エピソード」と「3XX」を削除する必要があることは、名前の繰り返しの性質から明らかです。

別のフォルダーは次のようになります。

720p.S5.E1.不自由な戦い.avi

720p.S5.E2.towelie.avi

このような多くの 任意のパターンがさまざまなファイルのグループに存在します。キーワードを抽出できるように、これらの任意のパターンを再構成する何かが必要です。ケースごとに正規表現を書くのは現実的ではありません。

概要:

複雑な繰り返しパターンを見つけるために使用できるツールまたは API はありますか (数字のシーケンスを一致させる必要があります)? [最長共通配列ライブラリのようなもの]

4

3 に答える 3

2

まあ、ディレクトリ内のすべてのフィルタリングされた名前を単純に取得して、単純な単語数を数えることができます。毎回 (ほぼ) 同じ場所に出現する単語に特別な重みを付けることができます。

最終的に、カウントと重みが得られ、どの線を引くかを決定する必要があります。おそらく、ディレクトリ内のすべてのファイルではありません (おそらく画像やサンプルのため) が、ほとんどが特定の単語を持っている場合、それは「the」またはそのようなものではありません。スポット」で、それらをフィルタリングできます。

しかし、これはランダムな例であるフレンズのエピソードでは機能しません。それらはすべて「The one where ...」と呼ばれています。それは、求められているアルゴリズムのすべての正常なバージョンでフィルタリングされます

肝心なのは、友達のエピソードの問題のために、あなたができるとは思わないということです. 必要な繰り返しと不要な繰り返しの区別が十分ではありません。

あなたができる唯一のことは、フィルタリングしたいもののブラックリストを作成することです.avi / 720のことですでにやっているようです.

于 2012-04-14T07:25:28.653 に答える
1

あなたが求めていることは些細なことではないと思います。単なる認識とは対照的に、パターン抽出は、人工知能知識発見の分野に十分含まれています。私は Java に関連するいくつかのライブラリに遭遇しましたが、ほとんどの場合、最も単純なタスクを定義するために多くの追加コードが必要です。

これはかなり注目されている研究分野であるため、適切なキーワードを使用してGoogle Scholarでざっと検索することをお勧めします。

免責事項: インターネット経由で見つかったライブラリまたはアルゴリズムを使用する前に、その法的地位を調査する必要があります。残念ながら、活発な研究分野で開発されているアルゴリズムのかなりの数は、特許などによって妨げられていることがよくあります...

于 2012-04-14T07:25:01.053 に答える
0

ここに投稿された一種の回答があります
http://pastebin.com/Eb0cQyKd

「720dpi」、「Episode」、「xvid」、「ac3」などのファイル名の一意でない部分を、事前に指定せずに削除したかったのです。でもS01E01のような情報は残しておきたかった。膨大なブラックリストを作成したのですが、リストがコロコロ変わるので不便でした。

上記のリンクされたコードは、(Java ではなく) Python を使用して、ファイル名内のすべての一意でない単語を削除します。基本的に、ファイル名で使用されているすべての単語のリストを作成し、ほとんどのファイルに出てくる単語を辞書に入れます。次に、ファイルを反復処理し、これらの辞書の単語をすべてファイルから削除します。

このスクリプトはクリーニングも行います。一部のムービーでは、ファイル名の単語を区切るためにアンダースコア ('_') またはピリオド ('.') を使用しています。これらをすべてスペースに変換します。

私は最近それをたくさん使っており、うまく機能しています。

于 2013-09-15T09:38:36.533 に答える