perspective-api-client

Client library for the Perspective API

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
perspective-api-client
22203.1.04 years ago5 years agoMinified + gzip package size for perspective-api-client in KB

Readme

perspective-api-client
Current Version Build Status
Node.js client library for the Perspective API.

Install

$ npm install perspective-api-client

Usage

const Perspective = require('perspective-api-client');
const perspective = new Perspective({apiKey: process.env.PERSPECTIVE_API_KEY});

(async () => {
  const text = 'you empty-headed animal food trough wiper!';
  const result = await perspective.analyze(text);
  console.log(JSON.stringify(result, null, 2));
})();
// {
//   "attributeScores": {
//     "TOXICITY": {
//       "spanScores": [
//         {
//           "begin": 0,
//           "end": 42,
//           "score": {
//             "value": 0.77587414,
//             "type": "PROBABILITY"
//           }
//         }
//       ],
//       "summaryScore": {
//         "value": 0.77587414,
//         "type": "PROBABILITY"
//       }
//     }
//   },
//   "languages": [
//     "en"
//   ]
// }

Specifying models

The TOXICITY model is used by default. To specify additional models,
pass `options.attributes`.
(async () => {
  const text = 'fools!';
  const result = await perspective.analyze(text, {attributes: ['unsubstantial', 'spam']});
  console.log(JSON.stringify(result, null, 2));
})();
// {
//   "attributeScores": {
//     "UNSUBSTANTIAL": {
//       "spanScores": [
//         {
//           "begin": 0,
//           "end": 6,
//           "score": {
//             "value": 0.9592708,
//             "type": "PROBABILITY"
//           }
//         }
//       ],
//       "summaryScore": {
//         "value": 0.9592708,
//         "type": "PROBABILITY"
//       }
//     },
//     "SPAM": {
//       "spanScores": [
//         {
//           "begin": 0,
//           "end": 6,
//           "score": {
//             "value": 0.008744183,
//             "type": "PROBABILITY"
//           }
//         }
//       ],
//       "summaryScore": {
//         "value": 0.008744183,
//         "type": "PROBABILITY"
//       }
//     }
//   },
//   "languages": [
//     "en"
//   ]
// }

More options

You can also pass an AnalyzeComment object for more control over the request.
(async () => {
  const text = 'you empty-headed animal food trough wiper!';
  const result = await perspective.analyze({
    comment: {text},
    requestedAttributes: {TOXICITY: {scoreThreshold: 0.7}},
  });
  console.log(JSON.stringify(result, null, 2));
})();
// {
//   "attributeScores": {
//     "TOXICITY": {
//       "spanScores": [
//         {
//           "begin": 0,
//           "end": 42,
//           "score": {
//             "value": 0.77587414,
//             "type": "PROBABILITY"
//           }
//         }
//       ],
//       "summaryScore": {
//         "value": 0.77587414,
//         "type": "PROBABILITY"
//       }
//     }
//   },
//   "languages": [
//     "en"
//   ]
// }

API

perspective = new Perspective()

analyze(text, options)

text

Type: String or Object
Either the text to analyze or an AnalyzeComment object. HTML tags will be stripped by default.
options
attributes
Type: Array or Object
Model names to analyze. TOXICITY is analyzed by default. If passing an Array of names, the names may be lowercased. See https://github.com/conversationai/perspectiveapi/blob/master/apireference.md#models for a list of valid models.
doNotStore
Type: Boolean Default: true
If true, prevent API from storing comment and context from this request.
stripHTML
Type: Boolean Default: true
Whether to strip HTML tags from the text.
truncate
Type: Boolean Default: false
If true, truncate text to the first 20480 characters (max length
allowed by the Perspective API).

FAQ

How does this compare to @conversationai/perspectiveapi-js-client?

Similarities:
  • Exposes the AnalyzeComment endpoint of the Perspective API
  • Strips HTML tags by default

Differences:
  • Returns full responses (rather than only returning summary scores)
  • Exposes all AnalyzeComment options
  • Supports all Node.js LTS versions

License

MIT © Steven Loria