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

ブログ    
ブログ    

推薦する

ストリームPETRを超えて! BEVNeXt: 高密度 BEV 認識のための新しいフレームワーク

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

顔認識メイク落としはアリペイを認識できない:馮潔は范冰冰に似せるために整形手術を受けたが、それでも認識できる

「バン」デザインに加えて、指紋認証の代わりに顔認証を使用していることも、iPhone Xの不満点の1...

人工知能における多様性と不確実性: 世界中の 2,778 人の AI 専門家を対象とした調査の解釈

人工知能は社会を変えようとしています。民間企業、学界、政府を問わず、国レベルおよび国際レベルを問わず...

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

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

世界初のグラフェン半導体がネイチャー誌に掲載され、中国チームがムーアの法則の寿命を10年延長しました!

シリコンはすべての電子機器の終焉をもたらすのか?この記録はグラフェンによって破られました!天津大学と...

女の子にとって恥ずかしいこと:将来、人間とロボットが赤ちゃんを産むようになる

将来、ロボットが世界を支配するのでしょうか?デイリー・メール紙によると、人工知能の専門家で『ロボット...

ディープラーニングに加えて、これらの開発の方向性も理解する必要があります

[[214266]] AI の究極の未来は人間の知能に到達し、それを上回ることであることに疑いの余地...

技術専門家によると、これらの15の仕事は決してAIに置き換えられないだろう

人工知能と機械学習の台頭により、企業はこれまでにない方法でプロセスを自動化し、生産性を向上させる機会...

自動運転が何千もの家庭に普及するまでにどれくらいの時間がかかるのでしょうか?

2019年9月に百度、海亮科技、センスタイムなどの企業が世界初の自動運転車の商用ライセンスを取得し...

準備はできたか? GNN グラフ ニューラル ネットワーク 2021 年の主要なアプリケーション ホットスポット 5 つ

[[378224]]今年から始めます。グラフニューラルネットワークは研究者の間で話題になっており、こ...

ジャック・マーがまた一人の世界クラスの科学者を採用しました。春節期間中に電車の切符を買うときにシステムクラッシュを心配する必要はもうありません!

アリババが中国だけでなく国際的にも素晴らしいインターネット企業であることは誰もが知っています。しかし...

製造業に人工知能を適用するにはどうすればよいでしょうか?

現在、製造企業で使用されている人工知能技術は、主にインテリジェント音声対話製品、顔認識、画像認識、画...

人工知能が気候変動対策に革命を起こす6つの方法

気候変動は現在人類が取り組むべき最も重要な課題の一つとなっています。この急速に拡大する危機には、その...

6つの新しいことに焦点を当て、新境地を開拓し、プロジェクトは変革を促進するための王様です。2020年中国(太原)人工知能会議が開催されました

2002年から2012年までの石炭の「黄金の10年」を経験した後、「古い工業基地」である山西省太原市...

...