TASE (テレグラム音声検索エンジン)
Telegram 上の超高速オーディオ全文検索エンジン
これにより、ユーザーは無関係な多数のチャネルをさまよう必要がなく、本当に興味のある情報や価値のある情報を迅速かつ簡単に見つけることができます。高品質のオーディオ ファイルに関する関連情報につながる検索結果をユーザーに提供します。
TASE の特徴は何ですか?
TASE は、ユーザーからの大量のリクエストに対応する、成長を続けるオープンソースの全文音声検索エンジン プラットフォームです。 Python と Telegram をベースにした最新のメジャー アップデートでは、多くの新機能が導入されています。その中には、Elasticsearch と ArangoDB を活用した高度に抽象化されたモジュール型の設計パターンが含まれており、世界のさまざまな場所にあるさまざまなサーバー上の並列クラスターがサポートされています。
TASEの概要
- 音声ファイル用の高度な全文検索エンジン
- 非常に高速なオーディオ ファイル インデクサー (ベンチマーク: クライアントごとに 1 日あたり最低 400 万曲)
- インデクサーとしての複数の並列クライアントのサポート
- 複数のサーバー上の分散並列クラスターのサポート (検索とインデックス作成) (すべてのオーディオ ファイル、グラフ、ドキュメント モデル)
- ユーザーとアイテムのグラフ
- 動的URL
- 非同期
- 管理ツールにアクセスする
- 多言語対応
- オーディオファイルのキャッシュ
- 簡単な設定とカスタマイズ
- フレンドリーな見た目と感触
TASE は無料であり、今後も無料です。助けてください…無料のものや優れたソフトウェアが好きなら、私たちに星を付けてください! :スター::スター2:
インストールして実行する方法
* 注: プロジェクトを実行する前に、構成とカスタマイズのセクションを必ずお読みください。 TASE を使用するには 2 つの異なる方法があります
(*注意: プロジェクトを実行する前に、必ず tase.json ファイルと .env ファイルを構成してください) リポジトリのクローンを作成する
サービスのセットアップ:
依存関係を手動でインストールする
- Elasticsearch (v8.3) のインストール (手順)
- ArangoDB (v3.9.1) のインストール (手順)
- RabbitMQ のインストール (手順)
- Redis のインストール (手順)
docker compose を使用して実行する
より簡単な方法 (推奨) (*注意: プロジェクトを実行する前に、必ず tase.json ファイルを構成してください)ドッカー構成 -d
* docker compose をまだインストールしていない場合はインストールします(手順)
- * まだ詩をインストールしていない場合はインストールします(手順)
- tase パッケージにある tase_client.py ファイルを実行します。
構成とカスタマイズ
プロジェクトを実行する前に、TASE によって構成ファイルとして使用されるルート ディレクトリ内のtase.jsonファイルをカスタマイズする必要があります。
プロジェクトを実行するには、ボットが使用する基本情報を提供する必要があります。たとえば、独自のクライアントを実行するには、Telegram ボット トークンと Telegram クライアント認証情報を提供する必要があります。
特徴
開発者向けの機能
- ロケールに新しい言語を追加します (Poedit の使用をお勧めします)
- 基本ボタン クラスに抽象メソッドを実装することで、新しいボタンと機能 (クエリとインライン) を簡単に追加できます。
- グラフモデルとオーディオファイルのリアルタイム視覚化 (Kibana、ArangoDB)
- 抽象化とファサードのデザインパターン
幅広い機能
検索エンジン
- ボットの直接検索で音声ファイルを検索
- @bot_name メンションを使用してグループやプライベート チャットから音声ファイルを検索し、チャットに直接送信します
- @bot_name のメンションを使用した、結果のインライン リストの表示によるリアルタイム検索
- プライベートチャットやグループチャットで直接リアルタイム検索
- ファイル名、演奏者名、音声名で検索
- メッセージ内には関連する上位 10 件の結果が表示され、その他の結果は無制限に表示されます。インラインリストとして返される
- インライン リスト内の曲をダウンロードする前に再生します。
- 検索されたオーディオファイルをキャッシュして、不必要な冗長な DB リクエストを回避します。
- 結果の動的 URL
- 所有者がダウンロードした音声ファイルを追跡できるようにします
- 高い精度と関連性
- さまざまな言語で検索
- ソースチャンネル名とファイルへのリンクを表示します
- 結果を逆順モードで並べ替えます (より関連性の高い結果を下部に表示するため)
検索例のスクリーンショット
結果音声の例のスクリーンショット
インデックス機能
- 楽観的な方法で新しいチャネルを自動的に検索します (最初にそれが有効なチャネルであると想定し、後でインデックス付けを開始する前に検証します)。
- テキストとキャプションからの抜粋
- 「転送された言及」からの抜粋
- リンクから抜粋
- 新しいチャンネルのインデックスを自動的に作成します
- 以前のチャネルを反復処理し、前のチェックポイントからインデックス作成を再開します。
- 非常に高速なインデックス作成 (クライアントごとに 1 日あたり最低 400 万曲)
- チャンネルを分析し、それに基づいてスコア (0 ~ 5) を計算します。
- 音声ファイルの密度(音声ファイルの割合)
- チャネルのアクティビティ (新しいファイルを共有する頻度)
- 会員数
- Telegram サーバーによる禁止を回避します
- 複数の Telegram クライアントを使用した並列インデックス作成のサポート
- 競合を高度に回避しながら、ファイル ID を 8 文字に抑える特定の方法でファイル ID をハッシュします。
- ユーザーとチャンネル所有者は、「/index channel_name」を使用して特定のチャンネルにインデックスを付けるリクエストを送信できます。
- ユーザーと音声ファイルのグラフをリアルタイムで構築し、推奨システムやリンク予測タスクに使用できます。
ユーザー制限/制御機能
- チャンネルのユーザー メンバーシップをほぼリアルタイムで処理します
- メンバーシップステータスに基づいてユーザーに制限を設定する
- 非会員ユーザーは 5 つのオーディオ ファイルを自由に検索できます。その後、検索されたオーディオ ファイルを受け取るまで 1 分間待つ必要があります。
- 非メンバーにはチャット内での直接検索に制限がある
ユーザーインターフェース
- ユーザーガイド
- 複数のメニュー (ホーム、ヘルプ、プレイリストなど)
- ユーザーのプロセスを容易にする各部分のキーボード
- 多言語ボット - 現在サポートされているもの:
- ??英語
- ??スペイン語
- ??ロシア
- ??アラビア語
- ??ポルトガル語
- ??ヒンディー語
- ??ドイツ語
- ??クルド語 (ソラニ)
- ??クルド語 (クルマンジ)
- ??オランダ語
- ??イタリア語
- ??ペルシア語
- ユーザーが 1 週間以上または 2 週間以上アクティブでない場合、アクティビティに基づいてユーザーに挨拶メッセージを送信する
- ホームキーボードの履歴ボタンを押すと、スクロール可能なインラインリストを通じて各ユーザーの検索履歴を表示します
- 美しく鮮やかなユーザー インターフェイス (メッセージと絵文字)
プレイリスト
- ユーザーは無制限のプレイリストを作成し、それぞれのプレイリストに無制限のオーディオ ファイルを保存できます。
- ユーザーはプレイリストのメタデータを編集できます
- ユーザーは保存された音声ファイルを編集できます
メインメニューのスクリーンショット
管理機能
- リアルタイムのグラフ視覚化 (ArangoDB ダッシュボードをサポート)
- リアルタイムのインデックス付きオーディオ ファイルの視覚化 (Kibana ダッシュボードをサポート)
* Kibana は、ログおよび時系列分析、アプリケーション監視、およびオペレーショナル インテリジェンスのユースケースに使用されるデータ視覚化および探索ツールです。ヒストグラム、折れ線グラフ、円グラフ、ヒート マップ、組み込みの地理空間サポートなどの強力で使いやすい機能を提供します。
他の
- 非常に速い
- ドキュメントはコード (docstring) で提供されます。
- データベース関連の例外を処理します。
- マルチスレッド検索 (複数のリクエストを非同期に検索します)
- RTL テキストを完璧に処理します
技術スタック
TASE の開発に使用される主なツールとテクノロジーは次のとおりです。
- エラスティックサーチ
- アランゴDB
- パイログラム
- Python の get_text
- セロリ
- ラビットMQ
- レディス
- ピダンティック
- 神社
寄付の募集
あなたの専門知識と熱意を歓迎します!
Telegram オーディオ検索エンジンに貢献する方法:
- コードを書く
- プルリクエストを確認する
- チュートリアル、プレゼンテーション、ドキュメント、その他の教育資料を開発する
- ドキュメントとReadmeの内容を翻訳する
私たちは皆さんの貢献を心から歓迎しており、指導とサポートを提供できるよう最善を尽くしています。取り組むべき問題を探している場合は、問題を参照してください。
問題
コード内で問題が発生した場合は、ここで報告してください。より良い方法は、 Githubでリポジトリをフォークするか、プル リクエストを作成することです。
今後の取り組み
役に立ったと思われましたら、ぜひお聞かせください
ライセンス
TASE は、Apache License バージョン 2.0 に基づいてライセンスされています。ライセンスの全文については、「LICENSE」を参照してください。