JavaScript中的自然语言处理(NLP)(系列2)
#javascript #ai #machinelearning #nlp

自然语言处理(NLP)是一个人工智能领域,重点是使计算机能够理解,解释和生成人类语言。

它在现代应用中起着至关重要的作用,从语言翻译和情感分析到聊天机器人和搜索引擎。

NLP技术使开发人员能够从大量文本数据中提取见解,使其成为数据分析和决策的强大工具。

在本文的第一部分中,我们学会了如何设置环境并收集数据,在准备用作样本的数据时将它们剥离了无关的单词。

在以下会话中,我们将看到如何使用数据。查找上一个会话here

javaScript中的语音(pos)标记

在自然语言处理(NLP)中,词性(POS)标记是一项至关重要的任务,涉及将语音的特定部分(例如名词,动词,形容词等)分配给句子中的每个单词。

理解词性标记

pos标记在NLP中起着至关重要的作用,因为它有助于理解句子的语法结构,这对于各种与语言相关的任务至关重要。

该过程涉及分析句子中的每个单词,并将它们分配给它们的相应语音部分。例如,在“快速棕狐跳过懒狗”的句子中,单词的标记如下:

  • “” - >确定器(dt)
  • “快速” - >形容词(JJ)
  • “棕色” - >形容词(JJ)
  • “ fox” - >名词(nn)
  • “跳跃” - >动词(vbz)
  • “ over” - >介词(in)
  • “” - >确定器(dt)
  • “懒惰” - >形容词(JJ)
  • “狗” - >名词(nn)

在JavaScript中使用POS标记

我们将使用“天然” NLP library;关注previous session了解如何设置您的环境。

在JavaScript中执行POS标记,该标记支持各种NLP任务,包括令牌化,POS标记等。

实施POS标记

要实现此步骤,您必须设置“自然”库,并且该步骤在此两部分系列的第一个会话中概述。让我们在JavaScript中实现POS标记。

// Import the "natural" library
const natural = require('natural');

// Create a tokenizer and POS tagger instance
const tokenizer = new natural.WordTokenizer();
const posTagger = new natural.BrillPOSTagger(
  natural.BrillPOSTagger.defaultRules,
  natural.BrillPOSTagger.defaultLexicon
);

// Sample sentence for POS tagging
const sentence = "The quick brown fox jumps over the lazy dog";

// Tokenize the sentence into words
const words = tokenizer.tokenize(sentence);

// Perform POS tagging
const taggedWords = posTagger.tag(words);

// Print the tagged words
taggedWords.forEach((word) => {
  console.log(`${word[0]} - ${word[1]}`);
});

解释

  • 我们会导入“自然”库,并使用 natural.wordtokenizer() natural.brillpostagger()。
  • 我们定义了要用语音的部分标记的样本句子。
  • 使用 tokenizer.tokenize()函数。
  • postagger.tag()函数在标记单词上执行POS标记。
  • 最后,我们遍历标记的单词,并将它们以及它们各自的语音部分印刷。

主题建模在JavaScript

主题建模是一种无监督的学习技术,用于在文本文档集合中发现基本主题或主题。我们将使用文件样本语料库来提取有意义的主题。

理解主题建模

主题建模是一种统计方法,目的是在大量文本文档中发现潜在主题。

它使我们能够在没有任何事先标签或人类监督的情况下识别主要主题或主题。

主题建模的流行算法之一是潜在的dirichlet分配(LDA)。

lda假定语料库中的每个文档都是各种主题的混合物,单词的分布代表每个主题。

然后,该算法迭代地将单词分配给不同的主题并确定每个主题在给定文档中的概率。

在过程结束时,我们得到了一个主题列表和对每个主题贡献最大的单词。

使用JavaScript中的主题建模

我们将利用“天然” NLP库在JavaScript中执行主题建模。我们将使用文档样本语料库来演示该过程。

实施主题建模

// Import the "natural" library
const natural = require('natural');

// Create a new LDA instance
const lda = new natural.LdaSandbox();

// Sample corpus of documents
const documents = [
  "Machine learning is an exciting field in computer science.",
  "JavaScript is a versatile programming language used for web development.",
  "Data science involves extracting insights from data using various techniques.",
  "Node.js is a popular runtime environment for server-side JavaScript applications.",
  "Topic modeling helps in discovering latent themes from text documents.",
];

// Tokenize the documents
const tokenizer = new natural.WordTokenizer();
const tokenizedDocs = documents.map((doc) => tokenizer.tokenize(doc));

// Perform topic modeling
const numTopics = 2; // Set the number of topics to discover
const numIterations = 1000; // Number of iterations for the algorithm
lda.train(tokenizedDocs, numTopics, numIterations);

// Print the extracted topics
const topics = lda.getTopics();
console.log("Extracted Topics:");
topics.forEach((topic, index) => {
  console.log(`Topic ${index + 1}: ${topic.words.join(", ")}`);
});

解释

  • 我们导入“自然”库,允许我们与主题建模一起工作。
  • 定义了文档样本语料库,代表我们要分析和提取主题的文本集合。
  • 使用 natural.wordtokenizer()
  • 我们将主题的数量( numtopics )设置为我们希望算法发现LDA算法的算法和迭代数( Numiterations )。
  • lda.train()函数在令牌文档上执行主题建模。
  • 最后,我们使用 lda.getTopics()函数检索并打印每个主题的提取主题和最具代表性的单词。

会话8:带有NLP

的文本分类

文本分类是一个重要的自然语言处理(NLP)任务,涉及将文本数据分类为预定义的类或类别。

了解文本分类

文本分类在各种现实世界应用中至关重要,包括情感分析,垃圾邮件检测,语言识别和内容分类。该目标是根据其内容自动将标签或类别分配给给定文本文档。

为了实现文本分类,我们可以利用机器学习算法来学习文本数据及其相应类之间的模式和关系。

一种常用的文本分类算法是幼稚的贝叶斯分类器,这对于许多NLP任务很简单却有效。

实施文本分类

// Import the "natural" library
const natural = require('natural');

// Create a new Naive Bayes classifier instance
const classifier = new natural.BayesClassifier();

// Training data for text classification
const trainingData = [
  { text: "I love this product! It's fantastic.", category: "positive" },
  { text: "This movie was boring and disappointing.", category: "negative" },
  { text: "The weather is lovely today.", category: "positive" },
  { text: "The service at this restaurant was terrible.", category: "negative" },
  { text: "The new software update works perfectly.", category: "positive" },
];

// Training the classifier with the data
trainingData.forEach((data) => {
  classifier.addDocument(data.text, data.category);
});
classifier.train();

// Test data for text classification
const testText = "The hotel stay was wonderful! I had a great time.";

// Classify the test data
const predictedCategory = classifier.classify(testText);

// Print the predicted category
console.log(`Predicted Category: ${predictedCategory}`);

解释

  • 我们导入“自然”库,它为文本分类提供了必要的工具。
  • 我们使用 natural.bayesclassifier()
  • 培训数据包含标有文本和相应类别的示例(在这种情况下为正或负面)。
  • 使用 classifier.adddocument() clastifier.train()函数对分类器进行培训。
  • 我们定义了要预测类别的测试文本。
  • classifier.classify()函数用于将测试文本分类为特定类别。
  • 预测类别印在控制台上。

用javascript中的NLP语言翻译

语言翻译是一个至关重要的NLP应用程序,可实现跨不同语言的交流和理解。本届会议侧重于语言翻译技术,并演示了如何使用NLP库中的JavaScript执行语言翻译。

语言翻译技术

可以使用不同的技术来实现语言翻译,包括基于规则的方法,统计机器翻译和神经机器翻译。在本届会议中,我们将利用NLP库的力量执行语言翻译。

在JavaScript中实现语言翻译

要在JavaScript中执行语言翻译,我们可以利用NLP库,例如“ Translate-Google”和“ Translate”访问翻译服务。

示例:使用“ translate-google”库
翻译文本

// Import the "translate-google" library
const translate = require('translate-google');

// Text to be translated
const text = "Hello, how are you?";

// Source and target languages
const sourceLanguage = 'en';
const targetLanguage = 'es';

// Translate the text
translate(text, { from: sourceLanguage, to: targetLanguage })
  .then((translation) => {
    console.log(`Translated Text: ${translation}`);
  })
  .catch((error) => {
    console.error('Translation Error:', error);
  });

示例:使用“翻译”库翻译文本

// Import the "translate" library
const translate = require('translate');

// Configure the library with the translation service
translate.engine = 'google';
translate.from = 'en';
translate.to = 'fr';

// Text to be translated
const text = "Good morning, how are you today?";

// Translate the text
translate(text)
  .then((translation) => {
    console.log(`Translated Text: ${translation}`);
  })
  .catch((error) => {
    console.error('Translation Error:', error);
  });

解释

  • 我们将所需的NLP库以语言翻译导入:“翻译 - google”或“ translate”。
  • 我们定义了需要翻译的文本。
  • 我们指定源语言( sourcelanguage )和目标语言( targetLanguage )。
  • 使用 translate()函数进行翻译。
  • 翻译后的文本被打印到控制台。

在本系列的最后会议中,我们将研究NLP的用例和未来趋势,以及它在JavaScript中的影响是否有可能改变学习。

关注我们,看看我们如何构建最终项目,因为这是三部分系列的第一节。如果您发现这篇文章令人兴奋,请在Learnhub Blog上找到更多令人兴奋的帖子;我们编写从Cloud computingFrontend DevCybersecurityAIBlockchain的所有技术。

资源