import tisaneLabs from "../../tisane_labs.app.mjs";
export default {
key: "tisane_labs-analyze-text",
name: "Analyze Text",
description: "Analyze text for language, entities, sentiment, and other insights. [See the documentation](https://docs.tisane.ai/#561264c5-6dbe-4bde-aba3-7defe837989f)",
version: "0.0.1",
type: "action",
props: {
tisaneLabs,
language: {
propDefinition: [
tisaneLabs,
"language",
],
},
content: {
type: "string",
label: "Content",
description: "The content to analyze",
},
format: {
propDefinition: [
tisaneLabs,
"format",
],
},
disableSpellcheck: {
type: "boolean",
label: "Disable Spellcheck",
description: "Determines whether the automatic spellchecking is to be disabled. Default: `false`",
default: false,
optional: true,
},
lowercaseSpellcheckOnly: {
type: "boolean",
label: "Lowercase Spellcheck Only",
description: "Determines whether the automatic spellchecking is only to be applied to words in lowercase. Default: `false`",
default: false,
optional: true,
},
minGenericFrequency: {
type: "integer",
label: "Minimum Generic Frequency",
description: "Allows excluding more esoteric terms; The valid values are 0 thru 10.",
min: 0,
max: 10,
optional: true,
},
subscope: {
type: "boolean",
label: "Subscope",
description: "Enables sub-scope parsing, for scenarios like hashtag, URL parsing, and obfuscated content (e.g. ihateyou). Default: `false`",
default: false,
optional: true,
},
abuse: {
type: "boolean",
label: "Abuse",
description: "Output instances of abusive conten. Default: `true`",
default: true,
optional: true,
},
sentiment: {
type: "boolean",
label: "Sentiment",
description: "Output sentiment-bearing snippets. Default: `true`",
default: true,
optional: true,
},
documentSentiment: {
type: "boolean",
label: "Document Sentiment",
description: "output document-level sentiment. Default: `false`",
default: false,
optional: true,
},
entities: {
type: "boolean",
label: "Entities",
description: "Output entities. Default: `true`",
default: true,
optional: true,
},
topics: {
type: "boolean",
label: "Topics",
description: "Output topics. Default: `true`",
default: true,
optional: true,
},
words: {
type: "boolean",
label: "Words",
description: "Output the lexical chunks / words for every sentence. Default: `false`",
default: false,
optional: true,
},
fetchDefinitions: {
type: "boolean",
label: "Fetch Definitions",
description: "Include definitions of the words in the output. Only relevant when the `words` setting is `true`. Default: `false",
default: false,
optional: true,
},
parses: {
type: "boolean",
label: "Parse",
description: "Output parse forests of phrases",
optional: true,
},
deterministic: {
type: "boolean",
label: "Deterministic",
description: "Whether the n-best senses and n-best parses are to be output in addition to the detected sense. If `true`, only the detected sense will be output. Default: `true`",
default: true,
optional: true,
},
snippets: {
type: "boolean",
label: "Snippets",
description: "Include the text snippets in the abuse, sentiment, and entities sections. Default: `false`",
default: false,
optional: true,
},
explain: {
type: "boolean",
label: "Explain",
description: "If `true`, a reasoning for the abuse and sentiment snippets is provided when possible",
optional: true,
},
featureStandard: {
propDefinition: [
tisaneLabs,
"featureStandard",
],
},
topicStandard: {
propDefinition: [
tisaneLabs,
"topicStandard",
],
},
sentimentAnalysisType: {
propDefinition: [
tisaneLabs,
"sentimentAnalysisType",
],
},
},
async run({ $ }) {
const response = await this.tisaneLabs.analyzeText({
data: {
language: this.language,
content: this.content,
settings: {
format: this.format,
disable_spellcheck: this.disableSpellcheck,
lowercase_spellcheck_only: this.lowercaseSpellcheckOnly,
min_generic_frequency: this.minGenericFrequency,
subscope: this.subscope,
abusse: this.abuse,
sentiment: this.sentiment,
document_sentiment: this.documentSentiment,
entities: this.entities,
topics: this.topics,
words: this.words,
fetch_definitions: this.fetchDefinitions,
parses: this.parses,
deterministic: this.deterministic,
snippets: this.snippets,
explain: this.explain,
feature_standard: this.featureStandard,
topic_standard: this.topicStandard,
sentiment_analysis_type: this.sentimentAnalysisType,
},
},
$,
});
if (response) {
$.export("$summary", "Successfully analyzed text.");
}
return response;
},
};