ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js を使用してテキスト コンテンツを分割し、キーワードを抽出する方法の詳細な説明

Node.js を使用してテキスト コンテンツを分割し、キーワードを抽出する方法の詳細な説明

黄舟
黄舟オリジナル
2017-05-28 10:36:081922ブラウズ

この記事では、テキストコンテンツの分割とキーワード抽出のための Node.js の使用法を主に紹介します。必要な友達はそれを参照してください

テクノロジーについて議論する前に、あなたはグルメの世界を理解していません。 ~

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

現在オープンソースの単語分割ツールの中で、jieba は強力な機能と優れたパフォーマンスを備えた単語分割コンポーネントです。幸いなことに、ノード バージョンがあります。

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

npm install nodejieba
var nodejieba = require("nodejieba");
var result = nodejieba.cut("帝国主义要把我们的地瓜分掉");
console.log(result);
//[ '帝国主义', '要', '把', '我们', '的', '地', '瓜分', '掉' ]
result = nodejieba.cut('土地,俺老孙的金箍棒在哪里?');
console.log(result);
//[ '土地', ',', '俺', '老', '孙', '的', '金箍棒', '在', '哪里', '?' ]
result = nodejieba.cut('大圣,您的金箍棒就棒在特别配您的头型!');
console.log(result); 
//[ '大圣',',','您','的','金箍棒','就','棒','在','特别','配','您','的','头型','!' ]

独自の辞書をロードし、辞書内の各単語の重みと品詞を設定できます:

user.uft8 を編集
sweet Potato 9999 n
Golden Hoop 9999 n
9999 は素晴らしいです
次に、nodejieba.load を通じて辞書をロードします。

var nodejieba = require("nodejieba");
nodejieba.load({
 userDict: './user.utf8',
});
var result = nodejieba.cut("帝国主义要把我们的地瓜分掉");
console.log(result);
//[ '帝国主义', '要', '把', '我们', '的', '地瓜', '分', '掉' ]
result = nodejieba.cut('土地,俺老孙的金箍棒在哪里?');
console.log(result);
//[ '土地', ',', '俺', '老', '孙', '的', '金箍棒', '在', '哪里', '?' ]
result = nodejieba.cut('大圣,您的金箍棒就棒在特别配您的头型!');
console.log(result); 
//[ '大圣', ',', '您', '的', '金箍', '棒就棒在', '特别', '配', '您', '的', '头型', '!' ]

単語の分割に加えて、nodejieba を使用して次のキーワードを抽出できます:

const content = `

HTTP、HTTP/2、パフォーマンスの最適化

この記事の目的は、HTTP から HTTP/2 に移行する必要がある理由を比較を通じて説明することです。 HTTPS、および HTTP/2 のサポートを追加する必要がある理由。 HTTP と HTTP/2 を比較する前に、まず HTTP とは何かを見てみましょう。

HTTP とは

HTTP は、World Wide Web 上の通信のための一連のルールです。 HTTP はアプリケーション層プロトコルであり、TCP/IP 層の最上位で実行されます。ユーザーがブラウザーを通じて Web ページをリクエストすると、HTTP はリクエストを処理し、Web サーバーとクライアント間の接続を確立します。

HTTP/2 を使用すると、スプライト画像、圧縮、またはスプライシングを使用せずにパフォーマンスを向上させることができます。ただし、これらのテクニックを使用すべきではないという意味ではありません。しかし、これは HTTP/1.1 から HTTP/2 に移行する必要があることを明確に示しています。
`;

const nodejieba = require("nodejieba");
const result = nodejieba.extract(content, 20);
console.log(result);

出力結果は次のようになります:

[ { word: 'HTTP', weight: 140.8704516850025 },
 { word: '请求', weight: 14.23018001394 },
 { word: '应该', weight: 14.052171126120001 },
 { word: '万维网', weight: 12.2912397395 },
 { word: 'TCP', weight: 11.739204307083542 },
 { word: '1.1', weight: 11.739204307083542 },
 { word: 'Web', weight: 11.739204307083542 },
 { word: '雪碧图', weight: 11.739204307083542 },
 { word: 'HTTPS', weight: 11.739204307083542 },
 { word: 'IP', weight: 11.739204307083542 },
 { word: '应用层', weight: 11.2616203224 },
 { word: '客户端', weight: 11.1926274509 },
 { word: '浏览器', weight: 10.8561552143 },
 { word: '拼接', weight: 9.85762638414 },
 { word: '比较', weight: 9.5435285574 },
 { word: '网页', weight: 9.53122979951 },
 { word: '服务器', weight: 9.41204128224 },
 { word: '使用', weight: 9.03259988558 },
 { word: '必要性', weight: 8.81927328699 },
 { word: '添加', weight: 8.0484751722 } ]

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

パフォーマンス
HTTP/2

出力結果は次のようになります:

[ { word: 'HTTP', weight: 105.65283876375187 },
 { word: 'HTTP/2', weight: 58.69602153541771 },
 { word: '请求', weight: 14.23018001394 },
 { word: '应该', weight: 14.052171126120001 },
 { word: '性能', weight: 12.61259281884 },
 { word: '万维网', weight: 12.2912397395 },
 { word: 'IP', weight: 11.739204307083542 },
 { word: 'HTTPS', weight: 11.739204307083542 },
 { word: '1.1', weight: 11.739204307083542 },
 { word: 'TCP', weight: 11.739204307083542 },
 { word: 'Web', weight: 11.739204307083542 },
 { word: '雪碧图', weight: 11.739204307083542 },
 { word: '应用层', weight: 11.2616203224 },
 { word: '客户端', weight: 11.1926274509 },
 { word: '浏览器', weight: 10.8561552143 },
 { word: '拼接', weight: 9.85762638414 },
 { word: '比较', weight: 9.5435285574 },
 { word: '网页', weight: 9.53122979951 },
 { word: '服务器', weight: 9.41204128224 },
 { word: '使用', weight: 9.03259988558 } ]

これに基づいて、ホワイトリスト方式では、タグとして使用できるいくつかの単語が除外されます:

const content = `

HTTP、HTTP/2、パフォーマンスの最適化

この記事の目的は、HTTP から移行する必要がある理由を比較を通じて説明することです。 HTTPS への追加と、HTTP/2 のサポートを追加する必要がある理由。 HTTP と HTTP/2 を比較する前に、まず HTTP とは何かを見てみましょう。

HTTP とは

HTTP は、World Wide Web 上の通信のための一連のルールです。 HTTP は、TCP/IP 層の最上位で実行されるアプリケーション層プロトコルです。ユーザーがブラウザーを通じて Web ページをリクエストすると、HTTP はリクエストを処理し、Web サーバーとクライアント間の接続を確立します。

HTTP/2 を使用すると、スプライト画像、圧縮、またはスプライシングを使用せずにパフォーマンスを向上させることができます。ただし、これらのテクニックを使用すべきではないという意味ではありません。しかし、これは HTTP/1.1 から HTTP/2 に移行する必要があることを明確に示しています。
`;

const nodejieba = require("nodejieba");
nodejieba.load({
 userDict: './user.utf8',
});
const result = nodejieba.extract(content, 20);
const tagList = ['HTTPS', 'HTTP', 'HTTP/2', 'Web', '浏览器', '性能'];
console.log(result.filter(item => tagList.indexOf(item.word) >= 0));

最後に、次の結果が得られます:

[ { word: 'HTTP', weight: 105.65283876375187 },
 { word: 'HTTP/2', weight: 58.69602153541771 },
 { word: '性能', weight: 12.61259281884 },
 { word: 'HTTPS', weight: 11.739204307083542 },
 { word: 'Web', weight: 11.739204307083542 },
 { word: '浏览器', weight: 10.8561552143 } ]

これが私たちが望む結果です。

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

以上がNode.js を使用してテキスト コンテンツを分割し、キーワードを抽出する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。