リポジトリ: https://github.com/ray-d-song/guesslang-js
デモ: https://ray-d-song.github.io/guesslang-js/
最近、私は EchoRSS と呼ばれるプロジェクトに取り組んでいます。これは、サブスクリプション内の外部リンク (全文の読み取り、引用など) をインターセプトし、現在のページに直接表示するという非常に必要な機能です。
返された HTML コード ブロックには言語の注釈が失われている (または、元のコード ブロックの pre タグと code タグに言語の注釈が付けられていない) という問題があり、shiki や prism.js などのツールを使用して強調表示することができません。 。
コード言語を検出するための 3 つの解決策を見つけました:
これはサーバー上にデプロイされた Ruby プロジェクトであり、Github はそれを使用してリポジトリの言語構成を検出します。非常に高い精度が必要で、サーバー上で計算できる場合、これが最適なソリューションです。
highlight.js は非常に有名な Web コード強調表示ライブラリであり、自動コード検出を提供する唯一のライブラリでもあります。
原理は非常に単純で、言語のキーワードを列挙し、それらを 1 つずつテキストと照合し、最終的にどれが最も一致度が高いかを確認することです。
hljs には 4 つの問題があります。
guesslang は、tensorflow.js に基づく機械学習プロジェクトです。
Microsoftは2021年にこのプロジェクトをnode.jsに移植し、自動言語検出機能をvscodeに追加しました。
3 年前にベトナム人の hieplpvip もこのプロジェクトをブラウザに移植しましたが、次の 3 つの問題もあります。