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 つの記事でクラスタリング アルゴリズムを理解する

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

推薦する

若者は人工知能とうまく付き合うことを学ぶべきだ

人工知能技術と他の技術の最大の違いは、人間の頭脳労働の一部を代替できるだけでなく、一部の分野では人間...

2021年4月のドローン業界の重要な動向の概要

2021年3月に入り、ドローン業界では新製品の登場、用途の深化、大きな出来事の連続など、発展は活気に...

AIアルゴリズムエンジニアの涙の体験談

[[425033]]私たちはしばらくの間、展開モデルの最適化に取り組んできました。ここ数日でようやく...

エンジニアの職が危機に:ボストン・ダイナミクスのロボット犬がフォードにエンジニアとして入社!

[[335339]]ボストン・ダイナミクスのロボット犬に新たなアイデンティティが誕生。フォードのエ...

人工知能は「絶滅危惧」言語の保護に大きな役割を果たすかもしれません!

国連の統計によると、私たちが住む地球上には西暦8世紀以降、2万以上の人間の言語が出現しましたが、今日...

...

アルゴリズムによる管理下にある労働者:労働の退化と集団不安

[[426039]]かつて人々は、技術の進歩が労働者に大きな解放をもたらし、人類が牧歌的な生活を送れ...

顔認識技術はスマート建設現場やスマートコミュニティにどのようなメリットをもたらすのでしょうか?

スマートシティ、スマートコミュニティ、スマート交通は絶えず推進され、普及しており、ユーザーの使用習慣...

人工知能、モノのインターネット、新エネルギーなどへの投資ガイド。

12月21日、百度と華為は包括的な戦略提携を発表した。両者は中国市場とユーザーエクスペリエンスに重...

エッジコンピューティングが企業のコスト削減と効率向上にどのように役立つか

エッジ コンピューティングへの期待が高まる中、業界では「エッジがクラウドを飲み込む」や、医療、小売、...

...

ゲイリー・マーカスはヒントンとマスクを公然と非難した。「ディープラーニングは壁にぶつかった。10万ドル賭けるよ」

「もし誰かが(ディープラーニングが)壁にぶつかったと言うなら、ディープラーニングではできないことの...

...

...