Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sloria/perspective-api-client
Node.js client for the Perspective API
https://github.com/sloria/perspective-api-client
javascript nodejs perspective perspective-api
Last synced: 8 days ago
JSON representation
Node.js client for the Perspective API
- Host: GitHub
- URL: https://github.com/sloria/perspective-api-client
- Owner: sloria
- License: mit
- Created: 2017-12-01T02:45:59.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-30T03:55:38.000Z (almost 2 years ago)
- Last Synced: 2024-10-29T22:53:46.835Z (10 days ago)
- Topics: javascript, nodejs, perspective, perspective-api
- Language: JavaScript
- Homepage: https://www.perspectiveapi.com
- Size: 532 KB
- Stars: 28
- Watchers: 3
- Forks: 9
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# perspective-api-client
[![Current Version](https://img.shields.io/npm/v/perspective-api-client.svg)](https://www.npmjs.org/package/perspective-api-client)
[![Build Status](https://travis-ci.org/sloria/perspective-api-client.svg?branch=master)](https://travis-ci.org/sloria/perspective-api-client)Node.js client library for the [Perspective API](https://www.perspectiveapi.com/).
## Install
```
$ npm install perspective-api-client
```## Usage
```js
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`.```js
(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](https://github.com/conversationai/perspectiveapi/blob/master/api_reference.md#analyzecomment-request)
object for more control over the request.```js
(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](https://github.com/conversationai/perspectiveapi/blob/master/api_reference.md#analyzecomment-request) 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/api_reference.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 defaultDifferences:
- Returns full responses (rather than only returning summary scores)
- Exposes all [AnalyzeComment](https://github.com/conversationai/perspectiveapi/blob/master/api_reference.md#analyzecomment-request) options
- Supports all Node.js LTS versions## License
MIT © [Steven Loria](http://stevenloria.com)