Node.jsを使用してテキストコンテンツをセグメント化し、キーワードを抽出する

Node.jsを使用してテキストコンテンツをセグメント化し、キーワードを抽出する

Zhongcheng が翻訳した記事にはタグが付けられています。ユーザーはタグに基づいて興味のある記事を素早くフィルタリングできるほか、タグの関連性に基づいて記事を推奨することもできます。しかし、現在、中城が翻訳したタグは記事を推薦する際に設定されており、すべて英語です。また、手動での設定は必然的に非標準的で不完全です。記事は公開後に手動で編集できますが、ユーザーや管理者が常に適切なタグを編集するとは期待できないため、タグを自動的に生成するツールを使用する必要があります。

現在利用可能なオープンソースの単語分割ツールの中で、jieba は強力で高性能な単語分割コンポーネントです。幸いなことに、ノード バージョンもあります。

nodejieba のインストールと使用は非常に簡単です。

  1. npm インストール node
  1. var nodejieba = require( "nodejieba" );
  2. var result = nodejieba.cut( "帝国主義は我々のサツマイモを分割したがっている" );
  3. console.log(結果);
  4. //[ '帝国主義'、'望む'、'する'、'分割'、'我々の'、'土地'、'奪う'、'奪い去る' ]  
  5.  
  6. result = nodejieba.cut( '家主さん、私の金の輪はどこですか?' );
  7. console.log(結果);
  8. //['土地', ',', '私', '古い', '太陽', 'の', '黄金の輪', 'どこ', '? ']  
  9.  
  10. result = nodejieba.cut( '偉大なる賢者よ、あなたの金の輪の棒はあなたの頭の形に合っていて素晴らしいです!' );
  11. console.log(結果);
  12. //['孫悟空',','あなたの','金の輪','は','素晴らしい','特に','あなたの','頭の形'に'合っています'! ']  

独自の辞書を読み込み、辞書内の各単語の重みと品詞を設定できます。

user.uft8 を編集

  1. サツマイモ 9999 n
  2. ゴールデンフープ 9999 n
  3. 一番いいのは9999

次に、nodejieba.load を通じて辞書をロードします。

  1. var nodejieba = require( "nodejieba" );
  2.  
  3. ノードをロードします({
  4. ユーザー辞書: './user.utf8' ,
  5. });
  6.  
  7. var result = nodejieba.cut( "帝国主義は我々のサツマイモを分割したがっている" );
  8. console.log(結果);
  9. //[ '帝国主義'、'望む'、'する'、'私たちの'、'サツマイモ'、'分割'、'ドロップ' ]  
  10.  
  11. result = nodejieba.cut( '家主さん、私の金の輪はどこですか?' );
  12. console.log(結果);
  13. //['家主', ',', '私', '古い', '太陽', 'どこ', 'は', 'その', '金の輪', '? ']  
  14.  
  15. result = nodejieba.cut( '偉大なる賢者よ、あなたの金の輪の棒はあなたの頭の形に合っていて素晴らしいです!' );
  16. console.log(結果);
  17. //['孫悟空', ',', 'あなた', 'あなたの', '金の輪', 'は'特別', 'マッチ', 'あなたの', '頭の形', 'なので素晴らしいです! ']  

単語の分割に加えて、nodejieba を使用してキーワードを抽出することもできます。

  1. 定数コンテンツ = `
  2. HTTP、HTTP/2、パフォーマンスの最適化
  3.  
  4. この記事の目的は、HTTP から HTTPS に移行する理由と、HTTP/2 のサポートを追加する理由を比較することです。 HTTP と HTTP/2 を比較する前に、まず HTTP とは何かを見てみましょう。
  5.  
  6. HTTPとは
  7. HTTP は、World Wide Web 上で通信するための一連のルールです。 HTTP は、TCP/IP 層上で実行されるアプリケーション層プロトコルです。ユーザーがブラウザを通じて Web ページを要求すると、HTTP は要求を処理し、Web サーバーとクライアント間の接続を確立する役割を担います。
  8.  
  9. HTTP/2 を使用すると、スプライト、圧縮、連結を使用せずにパフォーマンスを向上させることができます。しかし、これはこれらの技術を使用すべきではないという意味ではありません。しかし、これは HTTP/1.1 から HTTP/2 に移行する必要があることを明確に示しています。
  10. `;
  11.  
  12. 定数nodejieba = require( "nodejieba" );
  13.  
  14. 定数結果 = nodejieba.extract(コンテンツ、20);
  15.  
  16. console.log(結果);

出力は次のようになります。

  1. [ { 単語: 'HTTP' , 重み: 140.8704516850025 },
  2. { 単語: 'リクエスト' 、重み: 14.23018001394 },
  3. { 単語: 'should' 、重み: 14.052171126120001 },
  4. { 単語: 'ワールド ワイド ウェブ' 、重み: 12.2912397395 },
  5. { 単語: 'TCP' 、重み: 11.739204307083542 },
  6. { 単語: '1.1' 、重み: 11.739204307083542 },
  7. { 単語: 'Web' 、重み: 11.739204307083542 },
  8. { 単語: 'スプライト' 、重み: 11.739204307083542 },
  9. { 単語: 'HTTPS' 、重み: 11.739204307083542 },
  10. { 単語: 'IP' 、重み: 11.739204307083542 },
  11. { 単語: 'アプリケーション層' 、重み: 11.2616203224 },
  12. { 単語: 'クライアント' 、重み: 11.1926274509 },
  13. { 単語: 'ブラウザ' 、重み: 10.8561552143 },
  14. { 単語: 'splice' 、重み: 9.85762638414 },
  15. { 単語: '比較' 、重み: 9.5435285574 },
  16. { 単語: 'ウェブページ' 、重み: 9.53122979951 },
  17. { 単語: 'サーバー' 、重み: 9.41204128224 },
  18. { 単語: 'use' 、重み: 9.03259988558 },
  19. { 単語: '必要性' 、重み: 8.81927328699 },
  20. { 単語: 'add' 、重み: 8.0484751722 } ]

辞書にいくつかの新しいキーワードを追加します:

  1. パフォーマンス
  2. HTTP/2

出力は次のようになります。

  1. [ { 単語: 'HTTP' , 重み: 105.65283876375187 },
  2. { 単語: 'HTTP/2' 、重み: 58.69602153541771 },
  3. { 単語: 'リクエスト' 、重み: 14.23018001394 },
  4. { 単語: 'should' 、重み: 14.052171126120001 },
  5. { 単語: 'パフォーマンス' 、重み: 12.61259281884 },
  6. { 単語: 'ワールド ワイド ウェブ' 、重み: 12.2912397395 },
  7. { 単語: 'IP' 、重み: 11.739204307083542 },
  8. { 単語: 'HTTPS' 、重み: 11.739204307083542 },
  9. { 単語: '1.1' 、重み: 11.739204307083542 },
  10. { 単語: 'TCP' 、重み: 11.739204307083542 },
  11. { 単語: 'Web' 、重み: 11.739204307083542 },
  12. { 単語: 'スプライト' 、重み: 11.739204307083542 },
  13. { 単語: 'アプリケーション層' 、重み: 11.2616203224 },
  14. { 単語: 'クライアント' 、重み: 11.1926274509 },
  15. { 単語: 'ブラウザ' 、重み: 10.8561552143 },
  16. { 単語: 'splice' 、重み: 9.85762638414 },
  17. { 単語: '比較' 、重み: 9.5435285574 },
  18. { 単語: 'ウェブページ' 、重み: 9.53122979951 },
  19. { 単語: 'サーバー' 、重み: 9.41204128224 },
  20. { 単語: 'use' 、重み: 9.03259988558 } ]

これを基に、ホワイトリスト方式を使用して、タグとして使用できる一部の単語を除外します。

  1. 定数コンテンツ = `
  2. HTTP、HTTP/2、パフォーマンスの最適化
  3.  
  4. この記事の目的は、HTTP から HTTPS に移行する理由と、HTTP/2 のサポートを追加する理由を比較することです。 HTTP と HTTP/2 を比較する前に、まず HTTP とは何かを見てみましょう。
  5.  
  6. HTTPとは
  7. HTTP は、World Wide Web 上で通信するための一連のルールです。 HTTP は、TCP/IP 層上で実行されるアプリケーション層プロトコルです。ユーザーがブラウザを通じて Web ページを要求すると、HTTP は要求を処理し、Web サーバーとクライアント間の接続を確立する役割を担います。
  8.  
  9. HTTP/2 を使用すると、スプライトシート、圧縮、連結を使用せずにパフォーマンスを向上させることができます。しかし、これはこれらの技術を使用すべきではないという意味ではありません。しかし、これは HTTP/1.1 から HTTP/2 に移行する必要があることを明確に示しています。
  10. `;
  11.  
  12. 定数nodejieba = require( "nodejieba" );
  13.  
  14. ノードをロードします({
  15. ユーザー辞書: './user.utf8' ,
  16. });
  17.  
  18. 定数結果 = nodejieba.extract(コンテンツ、20);
  19.  
  20. const tagList = [ 'HTTPS' , 'HTTP' , 'HTTP/2' , 'Web' , 'ブラウザ' , 'パフォーマンス' ];
  21.  
  22. console.log(result.filter(item => tagList.indexOf(item.word) >= 0));

***得る:

  1. [ { 単語: 'HTTP' , 重み: 105.65283876375187 },
  2. { 単語: 'HTTP/2' 、重み: 58.69602153541771 },
  3. { 単語: 'パフォーマンス' 、重み: 12.61259281884 },
  4. { 単語: 'HTTPS' 、重み: 11.739204307083542 },
  5. { 単語: 'Web' 、重み: 11.739204307083542 },
  6. { 単語: 'ブラウザ' 、重み: 10.8561552143 } ]

これが私たちが望んでいることです。

上記は、nodejieba単語分割ライブラリの基本的な使用方法です。将来的には、これを使用して、中城翻訳が公開した翻訳を自動的に分析し、対応するタグを追加し、翻訳者と読者に優れたユーザーエクスペリエンスを提供できるようになります。

<<:  ディープラーニングを使用して映画を推奨するにはどうすればよいでしょうか?独自の推奨システムを作成する方法を教えます!

>>:  1 つの記事でクラスタリング アルゴリズムを理解する

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

世界中のもう一人の自分と話すのはどんな感じでしょうか?世界初のAI人間観察者が誕生

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

オープンソース!香港中文大学、MIT、復旦大学が初のRNA基礎モデルを提案

タンパク質分野とは異なり、RNA 分野の研究では十分な注釈付きデータが不足していることがよくあります...

...

OpenAI が静かに「価値観」を変更: AGI に全力で取り組んでいないなら関与しないでください

OpenAI はひっそりとその中核となる価値観を変えました。公式ウェブサイトに掲載されている6つのコ...

タイミング解析の一般的なアルゴリズムはすべてここにあります

時系列分析とは、過去の出来事の時間特性を利用して、将来の出来事の特性を予測することです。これは比較的...

...

機械学習における再現率、精度、正確さの指標は何ですか?

以前の記事では、Naive Bayes、KNN、KMeans、EM、線形回帰、ロジスティック回帰など...

人工知能を初めて適用するときに尋ねるべき5つの質問

企業が社内でソリューションを構築する必要は必ずしもありませんが、これが失敗の一般的な原因となります。...

...

自由に歩き回るロボット掃除機は密かにあなたを監視しているかもしれない

一日中懸命に働いた労働者たちは、疲れた体を引きずりながら家に戻り、ついに「解放された農奴が歌う」生活...

WSLはAIトレーニングタスクとLinux GUIアプリケーションの実行をサポートします

WSL は Windows 上で GPU を使用してアプリケーションを実行することをサポートするよう...

...

GenAI Security: Microsoft Copilot でデータ侵害を防ぐ方法

Microsoft の Copilot は、世界で最も強力な生産性向上ツールの 1 つと言われていま...