Maison  >  Article  >  interface Web  >  Explication détaillée de la façon d'utiliser Node.js pour segmenter le contenu du texte et extraire des mots-clés

Explication détaillée de la façon d'utiliser Node.js pour segmenter le contenu du texte et extraire des mots-clés

黄舟
黄舟original
2017-05-28 10:36:081927parcourir

Cet article présente principalement l'utilisation de Node.js pour segmenter le contenu du texte et extraire des mots-clés. Les amis dans le besoin peuvent se référer à

avant de discuter de technologie Soyons. mignon d'abord, vous ne comprenez pas le monde des gourmets~~

Les articles traduits par Zhongcheng ont des balises. Les utilisateurs peuvent filtrer rapidement les articles qui les intéressent en fonction des balises. Les articles sont également des recommandations pertinentes peuvent être formulées sur la base d'associations de balises. Mais maintenant, les balises de Zhongcheng Translation sont définies lors de la recommandation d'articles, et elles sont toutes en anglais, et les paramètres manuels ne sont inévitablement pas standardisés et complets. Bien que les articles puissent être modifiés manuellement après la publication, nous ne pouvons pas nous attendre à ce que les utilisateurs ou les administrateurs modifient les balises appropriées à tout moment. Nous devons donc utiliser des outils pour générer automatiquement des balises.

Parmi les outils de segmentation de mots open source actuels, jieba est un composant de segmentation de mots doté de fonctions puissantes et d'excellentes performances. Heureusement, il dispose d'une version nœud.

L'installation et l'utilisation de nodejieba sont très simples :

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); 
//[ '大圣',',','您','的','金箍棒','就','棒','在','特别','配','您','的','头型','!' ]

Nous pouvons charger notre propre dictionnaire et définir le poids et la partie du discours pour chaque mot du dictionnaire :

Modifier user.uft8
Patate douce 9999 n
Golden Hoop 9999 n
Super est génial à 9999
Chargez ensuite le dictionnaire via 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); 
//[ '大圣', ',', '您', '的', '金箍', '棒就棒在', '特别', '配', '您', '的', '头型', '!' ]

En plus de la segmentation de mots, nous pouvons utiliser nodejieba pour extraire des mots-clés :

const content = `

HTTP, HTTP/2 et Optimisation des performances

Le but de cet article est de vous expliquer par comparaison pourquoi vous devriez migrer de HTTP vers HTTPS, et pourquoi le support de HTTP/2 devrait être ajouté. Avant de comparer HTTP et HTTP/2, regardons d’abord ce qu’est HTTP.

Qu'est-ce que HTTP

HTTP est un ensemble de règles de communication sur le World Wide Web. HTTP est un protocole de couche application et s'exécute au-dessus de la couche TCP/IP. Lorsqu'un utilisateur demande une page Web via un navigateur, HTTP est responsable du traitement de la demande et de l'établissement d'une connexion entre le serveur Web et le client.

Avec HTTP/2, les performances peuvent être améliorées sans utiliser d'images de sprite, de compression ou d'épissage. Toutefois, cela ne signifie pas que ces techniques ne doivent pas être utilisées. Mais cela a clairement démontré la nécessité pour nous de passer de HTTP/1.1 à HTTP/2.
`;

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

Le résultat de sortie est similaire au suivant :

[ { 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 } ]

Nous ajoutons de nouveaux mots-clés au dictionnaire :

Performance
HTTP/2

Les résultats de sortie sont les suivants :

[ { 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 } ]

Sur cette base, nous utilisons une liste blanche pour filtrer certains mots pouvant être utilisés comme balises :

const content = `

HTTP, HTTP/2 et optimisation des performances

Le but de cet article est de vous expliquer par comparaison pourquoi vous devriez migrer du HTTP vers HTTPS , et pourquoi vous devriez l'ajouter au support HTTP/2. Avant de comparer HTTP et HTTP/2, regardons d’abord ce qu’est HTTP.

Qu'est-ce que HTTP

HTTP est un ensemble de règles de communication sur le World Wide Web. HTTP est un protocole de couche application et s'exécute au-dessus de la couche TCP/IP. Lorsqu'un utilisateur demande une page Web via un navigateur, HTTP est responsable du traitement de la demande et de l'établissement d'une connexion entre le serveur Web et le client.

Avec HTTP/2, les performances peuvent être améliorées sans utiliser d'images de sprite, de compression ou d'épissage. Toutefois, cela ne signifie pas que ces techniques ne doivent pas être utilisées. Mais cela a clairement démontré la nécessité pour nous de passer de 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));

Finalement on obtient :

[ { 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 } ]

C'est le résultat qu'on souhaite.

Ce qui précède est la méthode de base d'utilisation de la bibliothèque de segmentation de mots nodejieba. À l'avenir, nous pourrons l'utiliser pour analyser et ajouter automatiquement les balises correspondantes aux traductions publiées par Zhongcheng Translation, afin de fournir des traducteurs et des lecteurs. avec une meilleure expérience utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn