axyseo 2.0.0-alpha.0.0.9 → 2.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/languageProcessing/helpers/highlighting/getMarkingsInSentence.js +1 -1
- package/build/languageProcessing/helpers/highlighting/getMarkingsInSentence.js.map +1 -1
- package/build/languageProcessing/helpers/morphology/buildTopicStems.js +1 -1
- package/build/languageProcessing/helpers/morphology/buildTopicStems.js.map +1 -1
- package/build/languageProcessing/helpers/morphology/getAllWordsFromPaper.js +1 -1
- package/build/languageProcessing/helpers/morphology/getAllWordsFromPaper.js.map +1 -1
- package/build/languageProcessing/languages/_default/Researcher.js +1 -1
- package/build/languageProcessing/languages/_default/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/_default/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/_default/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/ar/Researcher.js +1 -1
- package/build/languageProcessing/languages/ar/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/ar/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/ar/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/ar/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/ar/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/ca/Researcher.js +1 -1
- package/build/languageProcessing/languages/ca/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/ca/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/ca/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/cs/Researcher.js +1 -1
- package/build/languageProcessing/languages/cs/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/cs/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/cs/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/cs/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/cs/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/cs/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/cs/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/cs/values/Clause.js +1 -1
- package/build/languageProcessing/languages/cs/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/de/Researcher.js +1 -1
- package/build/languageProcessing/languages/de/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/de/helpers/calculateFleschReadingScore.js +1 -1
- package/build/languageProcessing/languages/de/helpers/calculateFleschReadingScore.js.map +1 -1
- package/build/languageProcessing/languages/de/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/de/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/de/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/de/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/de/helpers/internal/determineStem.js +1 -1
- package/build/languageProcessing/languages/de/helpers/internal/determineStem.js.map +1 -1
- package/build/languageProcessing/languages/de/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/de/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/de/values/Clause.js +1 -1
- package/build/languageProcessing/languages/de/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/el/Researcher.js +1 -1
- package/build/languageProcessing/languages/el/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/el/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/el/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/el/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/el/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/el/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/el/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/el/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/el/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/el/values/Clause.js +1 -1
- package/build/languageProcessing/languages/el/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/en/Researcher.js +1 -1
- package/build/languageProcessing/languages/en/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/calculateFleschReadingScore.js +1 -1
- package/build/languageProcessing/languages/en/helpers/calculateFleschReadingScore.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/en/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/en/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/determineStem.js +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/determineStem.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/getAdjectiveStem.js +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/getAdjectiveStem.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/getVerbStem.js +1 -1
- package/build/languageProcessing/languages/en/helpers/internal/getVerbStem.js.map +1 -1
- package/build/languageProcessing/languages/en/values/Clause.js +1 -1
- package/build/languageProcessing/languages/en/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/es/Researcher.js +1 -1
- package/build/languageProcessing/languages/es/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js +1 -1
- package/build/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js.map +1 -1
- package/build/languageProcessing/languages/es/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/es/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/es/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/es/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js +3 -3
- package/build/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js.map +1 -1
- package/build/languageProcessing/languages/es/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/es/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/es/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/es/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/es/values/Clause.js +1 -1
- package/build/languageProcessing/languages/es/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/fa/Researcher.js +1 -1
- package/build/languageProcessing/languages/fa/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/fa/helpers/createBasicWordForms.js +1 -1
- package/build/languageProcessing/languages/fa/helpers/createBasicWordForms.js.map +1 -1
- package/build/languageProcessing/languages/fa/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/fa/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/fa/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/fa/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/fr/Researcher.js +1 -1
- package/build/languageProcessing/languages/fr/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/fr/helpers/calculateFleschReadingScore.js +1 -1
- package/build/languageProcessing/languages/fr/helpers/calculateFleschReadingScore.js.map +1 -1
- package/build/languageProcessing/languages/fr/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/fr/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/fr/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/fr/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/fr/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/fr/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/fr/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/fr/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/fr/values/Clause.js +1 -1
- package/build/languageProcessing/languages/fr/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/he/Researcher.js +1 -1
- package/build/languageProcessing/languages/he/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/he/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/he/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/he/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/he/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/hu/Researcher.js +1 -1
- package/build/languageProcessing/languages/hu/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/hu/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/hu/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/hu/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/hu/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/hu/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/hu/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/hu/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/hu/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/hu/values/Clause.js +1 -1
- package/build/languageProcessing/languages/hu/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/id/Researcher.js +1 -1
- package/build/languageProcessing/languages/id/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/id/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/id/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/id/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/id/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/id/helpers/internal/stemHelpers.js +1 -1
- package/build/languageProcessing/languages/id/helpers/internal/stemHelpers.js.map +1 -1
- package/build/languageProcessing/languages/id/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/id/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/it/Researcher.js +1 -1
- package/build/languageProcessing/languages/it/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/it/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/it/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/it/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/it/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/it/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/it/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/it/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/it/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/it/values/Clause.js +1 -1
- package/build/languageProcessing/languages/it/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/ja/Researcher.js +1 -1
- package/build/languageProcessing/languages/ja/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/ja/helpers/countCharacters.js +1 -1
- package/build/languageProcessing/languages/ja/helpers/countCharacters.js.map +1 -1
- package/build/languageProcessing/languages/ja/helpers/customGetStemmer.js +1 -1
- package/build/languageProcessing/languages/ja/helpers/customGetStemmer.js.map +1 -1
- package/build/languageProcessing/languages/ja/helpers/getWords.js +1 -1
- package/build/languageProcessing/languages/ja/helpers/getWords.js.map +1 -1
- package/build/languageProcessing/languages/nb/Researcher.js +1 -1
- package/build/languageProcessing/languages/nb/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/nb/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/nb/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/nb/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/nb/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/nb/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/nb/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/nb/values/Clause.js +1 -1
- package/build/languageProcessing/languages/nb/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/nl/Researcher.js +1 -1
- package/build/languageProcessing/languages/nl/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/checkExceptionsWithFullForms.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/checkExceptionsWithFullForms.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/detectAndStemRegularParticiple.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/detectAndStemRegularParticiple.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/determineStem.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/determineStem.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/getStemWordsWithTAndDEnding.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/getStemWordsWithTAndDEnding.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/stemModificationHelpers.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/stemModificationHelpers.js.map +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/stemTOrDFromEndOfWord.js +1 -1
- package/build/languageProcessing/languages/nl/helpers/internal/stemTOrDFromEndOfWord.js.map +1 -1
- package/build/languageProcessing/languages/nl/values/Clause.js +1 -1
- package/build/languageProcessing/languages/nl/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/pl/Researcher.js +1 -1
- package/build/languageProcessing/languages/pl/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/pl/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/pl/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/pl/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/pl/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/pl/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/pl/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/pl/values/Clause.js +1 -1
- package/build/languageProcessing/languages/pl/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/pt/Researcher.js +1 -1
- package/build/languageProcessing/languages/pt/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/pt/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/pt/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/pt/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/pt/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/pt/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/pt/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/pt/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/pt/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/pt/values/Clause.js +1 -1
- package/build/languageProcessing/languages/pt/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/ru/Researcher.js +1 -1
- package/build/languageProcessing/languages/ru/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/ru/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/ru/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/ru/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/ru/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/sk/Researcher.js +1 -1
- package/build/languageProcessing/languages/sk/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/sk/helpers/getClauses.js +1 -1
- package/build/languageProcessing/languages/sk/helpers/getClauses.js.map +1 -1
- package/build/languageProcessing/languages/sk/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/sk/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/sk/helpers/internal/getParticiples.js +1 -1
- package/build/languageProcessing/languages/sk/helpers/internal/getParticiples.js.map +1 -1
- package/build/languageProcessing/languages/sk/values/Clause.js +1 -1
- package/build/languageProcessing/languages/sk/values/Clause.js.map +1 -1
- package/build/languageProcessing/languages/sv/Researcher.js +1 -1
- package/build/languageProcessing/languages/sv/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/sv/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/sv/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/sv/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/sv/helpers/isPassiveSentence.js.map +1 -1
- package/build/languageProcessing/languages/tr/Researcher.js +1 -1
- package/build/languageProcessing/languages/tr/Researcher.js.map +1 -1
- package/build/languageProcessing/languages/tr/helpers/getStemmer.js +1 -1
- package/build/languageProcessing/languages/tr/helpers/getStemmer.js.map +1 -1
- package/build/languageProcessing/languages/tr/helpers/internal/stem.js +1 -1
- package/build/languageProcessing/languages/tr/helpers/internal/stem.js.map +1 -1
- package/build/languageProcessing/languages/tr/helpers/isPassiveSentence.js +1 -1
- package/build/languageProcessing/languages/tr/helpers/isPassiveSentence.js.map +1 -1
- package/build/parsedPaper/build/linguisticParsing/SentenceTokenizer.js +1 -1
- package/build/parsedPaper/build/linguisticParsing/SentenceTokenizer.js.map +1 -1
- package/build/parsedPaper/build/tree/metadata/buildTree.js +1 -1
- package/build/parsedPaper/build/tree/metadata/buildTree.js.map +1 -1
- package/build/scoring/assessments/assessment.js +1 -1
- package/build/scoring/assessments/assessment.js.map +1 -1
- package/build/scoring/assessments/index.js +5 -5
- package/build/scoring/assessments/index.js.map +1 -1
- package/build/scoring/assessments/readability/TransitionWordsAssessment.js +3 -3
- package/build/scoring/assessments/readability/TransitionWordsAssessment.js.map +1 -1
- package/build/scoring/assessments/seo/MetaDescriptionKeywordAssessment.js +1 -1
- package/build/scoring/assessments/seo/MetaDescriptionKeywordAssessment.js.map +1 -1
- package/build/scoring/assessments/seo/MetaTitleKeywordAssessment.js +1 -1
- package/build/scoring/assessments/seo/MetaTitleKeywordAssessment.js.map +1 -1
- package/build/scoring/assessors/avadaAssessor.js +2 -2
- package/build/scoring/assessors/avadaAssessor.js.map +1 -1
- package/build/scoring/assessors/seoAssessor.js +6 -6
- package/build/scoring/assessors/seoAssessor.js.map +1 -1
- package/build/scoring/helpers/assessments/recommendedKeywordCount.js +1 -1
- package/build/scoring/helpers/assessments/recommendedKeywordCount.js.map +1 -1
- package/build/scoring/helpers/index.js +1 -1
- package/build/scoring/helpers/index.js.map +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVerbStem.js","names":["_lodash","require","_index","buildFormRule","createRulesFromArrays","languageProcessing","vowelRegex","normalizePrefixed","word","verbPrefixes","property","hasOwnProperty","RegExp","sevenLetterHyphenPrefixes","test","normalizedWord","replace","prefix","substring","sevenLetterPrefixes","fiveLetterHyphenPrefixes","fiveLetterPrefixes","fourLetterHyphenPrefixes","fourLetterPrefixes","threeLetterHyphenPrefixes","threeLetterPrefixes","twoLetterHyphenPrefixes","twoLetterPrefixes","oneLetterPrefixes","exports","checkIrregulars","irregularVerbs","irregulars","forEach","paradigm","wordInParadigm","isUndefined","normalizedIrregular","map","verb","concat","endsWithS","wordLength","length","endsWithIng","vowelCount","match","endsWithEd","getInfinitive","regexVerb","sFormToInfinitiveRegex","sFormToInfinitive","ingFormToInfinitiveRegex","ingFormToInfinitive","edFormToInfinitiveRegex","edFormToInfinitive","infinitive","guessedForm"],"sources":["../../../../../../src/languageProcessing/languages/en/helpers/internal/getVerbStem.js"],"sourcesContent":["// \"use strict\";\nimport {isUndefined} from 'lodash';\nimport {languageProcessing} from '@axyseo/index';\nconst {buildFormRule, createRulesFromArrays} = languageProcessing;\n\nconst vowelRegex = /([aeiouy])/g;\n\n/**\n * Checks if the input word has one of the standard verb prefixes and if so returns a prefix and a de-prefixed verb to be\n * further used to compare with the list of irregular verbs.\n *\n * @param {string} word The word for which to determine if it has one of the standard verb prefixes.\n * @param {Object} verbPrefixes The collection of verb prefixes to be used for normalization\n *\n * @returns {Array} Array of word forms from the exception list.\n */\nconst normalizePrefixed = function(word, verbPrefixes) {\n for (const property in verbPrefixes) {\n if (verbPrefixes.hasOwnProperty) {\n verbPrefixes[property] = new RegExp(verbPrefixes[property], 'i');\n }\n }\n\n if (verbPrefixes.sevenLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.sevenLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 8)\n };\n }\n\n if (verbPrefixes.sevenLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.sevenLetterPrefixes, ''),\n prefix: word.substring(0, 7)\n };\n }\n\n if (verbPrefixes.fiveLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fiveLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 6)\n };\n }\n\n if (verbPrefixes.fiveLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fiveLetterPrefixes, ''),\n prefix: word.substring(0, 5)\n };\n }\n\n if (verbPrefixes.fourLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fourLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 5)\n };\n }\n\n if (verbPrefixes.fourLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fourLetterPrefixes, ''),\n prefix: word.substring(0, 4)\n };\n }\n\n if (verbPrefixes.threeLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.threeLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 4)\n };\n }\n\n if (verbPrefixes.threeLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.threeLetterPrefixes, ''),\n prefix: word.substring(0, 3)\n };\n }\n\n if (verbPrefixes.twoLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.twoLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 3)\n };\n }\n\n if (verbPrefixes.twoLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.twoLetterPrefixes, ''),\n prefix: word.substring(0, 2)\n };\n }\n\n if (verbPrefixes.oneLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.oneLetterPrefixes, ''),\n prefix: word.substring(0, 1)\n };\n }\n};\n\n/**\n * Checks if the input word occurs in the list of exception verbs and if so returns all its irregular forms.\n * If not checks if it is an irregular verb with one of the standard verb prefixes, if so returns all irregular prefixed forms.\n *\n * @param {string} word The word for which to determine its irregular forms.\n * @param {Array} irregularVerbs The array of irregular verbs available for this language.\n * @param {Object} verbPrefixes The collection of verb prefixes to be used for normalization of irregular verbs.\n *\n * @returns {Array} Array of word forms from the exception list.\n */\nconst checkIrregulars = function(word, irregularVerbs, verbPrefixes) {\n let irregulars;\n\n irregularVerbs.forEach(function(paradigm) {\n paradigm.forEach(function(wordInParadigm) {\n if (wordInParadigm === word) {\n irregulars = paradigm;\n }\n });\n });\n\n if (isUndefined(irregulars)) {\n const normalizedIrregular = normalizePrefixed(word, verbPrefixes);\n\n if (!isUndefined(normalizedIrregular)) {\n irregularVerbs.forEach(function(paradigm) {\n paradigm.forEach(function(wordInParadigm) {\n if (wordInParadigm === normalizedIrregular.normalizedWord) {\n irregulars = paradigm.map(function(verb) {\n return normalizedIrregular.prefix.concat(verb);\n });\n }\n });\n });\n }\n }\n\n return irregulars;\n};\n\n/**\n * Checks if the input word ends with \"s\".\n *\n * @param {string} word The word to check.\n *\n * @returns {boolean} True if the word ends with \"s\".\n */\nconst endsWithS = function(word) {\n const wordLength = word.length;\n // Consider only words of four letters or more to be s-forms (otherwise, words like \"its\" are being treated as verb forms).\n if (wordLength > 3) {\n return word[word.length - 1] === 's';\n }\n return false;\n};\n\n/**\n * Checks if the input word ends with \"ing\".\n *\n * @param {string} word The word to check.\n *\n * @returns {boolean} True if the word ends with \"ing\".\n */\nconst endsWithIng = function(word) {\n const vowelCount = (word.match(vowelRegex) || []).length;\n\n // Consider only words that have at least one more vowel besides \"i\" in \"ing\" (otherwise, words like \"ping\" are being treated as verb forms).\n if (vowelCount > 1 && word.length > 4) {\n return word.substring(word.length - 3, word.length) === 'ing';\n }\n return false;\n};\n\n/**\n * Checks if the input word ends with \"ed\".\n *\n * @param {string} word The word to check.\n *\n * @returns {boolean} True if the word ends with \"ed\".\n */\nconst endsWithEd = function(word) {\n const vowelCount = (word.match(vowelRegex) || []).length;\n\n // Consider only words that have at least one more vowel besides \"e\" in \"ed\" (otherwise, words like \"red\" are being treated as verb forms).\n if (\n vowelCount > 1 ||\n (vowelCount === 1 && word.substring(word.length - 3, word.length - 2) !== 'e')\n ) {\n return word.substring(word.length - 2, word.length) === 'ed';\n }\n return false;\n};\n\n/**\n * Forms the infinitive from an input word.\n *\n * @param {string} word The word to build the infinitive for.\n * @param {Object} regexVerb The list of regex rules used to bring verb forms to infinitive.\n * @param {Array} regexVerb.sFormToInfinitiveRegex The array of regex-based rules used to bring -s forms to infinitive.\n * @param {Array} regexVerb.ingFormToInfinitiveRegex The array of regex-based rules used to bring -ing forms to infinitive.\n * @param {Array} regexVerb.edFormToInfinitiveRegex The array of regex-based rules used to bring -ed forms to infinitive.\n *\n * @returns {Object} The infinitive of the input word.\n */\nconst getInfinitive = function(word, regexVerb) {\n const sFormToInfinitiveRegex = createRulesFromArrays(regexVerb.sFormToInfinitive);\n const ingFormToInfinitiveRegex = createRulesFromArrays(regexVerb.ingFormToInfinitive);\n const edFormToInfinitiveRegex = createRulesFromArrays(regexVerb.edFormToInfinitive);\n\n if (endsWithS(word)) {\n return {\n infinitive: buildFormRule(word, sFormToInfinitiveRegex),\n guessedForm: 's'\n };\n }\n\n if (endsWithIng(word)) {\n return {\n infinitive: buildFormRule(word, ingFormToInfinitiveRegex),\n guessedForm: 'ing'\n };\n }\n\n if (endsWithEd(word)) {\n return {\n infinitive: buildFormRule(word, edFormToInfinitiveRegex) || word,\n guessedForm: 'ed'\n };\n }\n return {\n infinitive: word,\n guessedForm: 'inf'\n };\n};\n\nexport {getInfinitive, checkIrregulars, endsWithIng, normalizePrefixed};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"getVerbStem.js","names":["_lodash","require","_index","buildFormRule","createRulesFromArrays","languageProcessing","vowelRegex","normalizePrefixed","word","verbPrefixes","property","hasOwnProperty","RegExp","sevenLetterHyphenPrefixes","test","normalizedWord","replace","prefix","substring","sevenLetterPrefixes","fiveLetterHyphenPrefixes","fiveLetterPrefixes","fourLetterHyphenPrefixes","fourLetterPrefixes","threeLetterHyphenPrefixes","threeLetterPrefixes","twoLetterHyphenPrefixes","twoLetterPrefixes","oneLetterPrefixes","exports","checkIrregulars","irregularVerbs","irregulars","forEach","paradigm","wordInParadigm","isUndefined","normalizedIrregular","map","verb","concat","endsWithS","wordLength","length","endsWithIng","vowelCount","match","endsWithEd","getInfinitive","regexVerb","sFormToInfinitiveRegex","sFormToInfinitive","ingFormToInfinitiveRegex","ingFormToInfinitive","edFormToInfinitiveRegex","edFormToInfinitive","infinitive","guessedForm"],"sources":["../../../../../../src/languageProcessing/languages/en/helpers/internal/getVerbStem.js"],"sourcesContent":["// \"use strict\";\nimport {isUndefined} from 'lodash';\nimport {languageProcessing} from '../../../index';\nconst {buildFormRule, createRulesFromArrays} = languageProcessing;\n\nconst vowelRegex = /([aeiouy])/g;\n\n/**\n * Checks if the input word has one of the standard verb prefixes and if so returns a prefix and a de-prefixed verb to be\n * further used to compare with the list of irregular verbs.\n *\n * @param {string} word The word for which to determine if it has one of the standard verb prefixes.\n * @param {Object} verbPrefixes The collection of verb prefixes to be used for normalization\n *\n * @returns {Array} Array of word forms from the exception list.\n */\nconst normalizePrefixed = function(word, verbPrefixes) {\n for (const property in verbPrefixes) {\n if (verbPrefixes.hasOwnProperty) {\n verbPrefixes[property] = new RegExp(verbPrefixes[property], 'i');\n }\n }\n\n if (verbPrefixes.sevenLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.sevenLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 8)\n };\n }\n\n if (verbPrefixes.sevenLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.sevenLetterPrefixes, ''),\n prefix: word.substring(0, 7)\n };\n }\n\n if (verbPrefixes.fiveLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fiveLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 6)\n };\n }\n\n if (verbPrefixes.fiveLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fiveLetterPrefixes, ''),\n prefix: word.substring(0, 5)\n };\n }\n\n if (verbPrefixes.fourLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fourLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 5)\n };\n }\n\n if (verbPrefixes.fourLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.fourLetterPrefixes, ''),\n prefix: word.substring(0, 4)\n };\n }\n\n if (verbPrefixes.threeLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.threeLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 4)\n };\n }\n\n if (verbPrefixes.threeLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.threeLetterPrefixes, ''),\n prefix: word.substring(0, 3)\n };\n }\n\n if (verbPrefixes.twoLetterHyphenPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.twoLetterHyphenPrefixes, ''),\n prefix: word.substring(0, 3)\n };\n }\n\n if (verbPrefixes.twoLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.twoLetterPrefixes, ''),\n prefix: word.substring(0, 2)\n };\n }\n\n if (verbPrefixes.oneLetterPrefixes.test(word) === true) {\n return {\n normalizedWord: word.replace(verbPrefixes.oneLetterPrefixes, ''),\n prefix: word.substring(0, 1)\n };\n }\n};\n\n/**\n * Checks if the input word occurs in the list of exception verbs and if so returns all its irregular forms.\n * If not checks if it is an irregular verb with one of the standard verb prefixes, if so returns all irregular prefixed forms.\n *\n * @param {string} word The word for which to determine its irregular forms.\n * @param {Array} irregularVerbs The array of irregular verbs available for this language.\n * @param {Object} verbPrefixes The collection of verb prefixes to be used for normalization of irregular verbs.\n *\n * @returns {Array} Array of word forms from the exception list.\n */\nconst checkIrregulars = function(word, irregularVerbs, verbPrefixes) {\n let irregulars;\n\n irregularVerbs.forEach(function(paradigm) {\n paradigm.forEach(function(wordInParadigm) {\n if (wordInParadigm === word) {\n irregulars = paradigm;\n }\n });\n });\n\n if (isUndefined(irregulars)) {\n const normalizedIrregular = normalizePrefixed(word, verbPrefixes);\n\n if (!isUndefined(normalizedIrregular)) {\n irregularVerbs.forEach(function(paradigm) {\n paradigm.forEach(function(wordInParadigm) {\n if (wordInParadigm === normalizedIrregular.normalizedWord) {\n irregulars = paradigm.map(function(verb) {\n return normalizedIrregular.prefix.concat(verb);\n });\n }\n });\n });\n }\n }\n\n return irregulars;\n};\n\n/**\n * Checks if the input word ends with \"s\".\n *\n * @param {string} word The word to check.\n *\n * @returns {boolean} True if the word ends with \"s\".\n */\nconst endsWithS = function(word) {\n const wordLength = word.length;\n // Consider only words of four letters or more to be s-forms (otherwise, words like \"its\" are being treated as verb forms).\n if (wordLength > 3) {\n return word[word.length - 1] === 's';\n }\n return false;\n};\n\n/**\n * Checks if the input word ends with \"ing\".\n *\n * @param {string} word The word to check.\n *\n * @returns {boolean} True if the word ends with \"ing\".\n */\nconst endsWithIng = function(word) {\n const vowelCount = (word.match(vowelRegex) || []).length;\n\n // Consider only words that have at least one more vowel besides \"i\" in \"ing\" (otherwise, words like \"ping\" are being treated as verb forms).\n if (vowelCount > 1 && word.length > 4) {\n return word.substring(word.length - 3, word.length) === 'ing';\n }\n return false;\n};\n\n/**\n * Checks if the input word ends with \"ed\".\n *\n * @param {string} word The word to check.\n *\n * @returns {boolean} True if the word ends with \"ed\".\n */\nconst endsWithEd = function(word) {\n const vowelCount = (word.match(vowelRegex) || []).length;\n\n // Consider only words that have at least one more vowel besides \"e\" in \"ed\" (otherwise, words like \"red\" are being treated as verb forms).\n if (\n vowelCount > 1 ||\n (vowelCount === 1 && word.substring(word.length - 3, word.length - 2) !== 'e')\n ) {\n return word.substring(word.length - 2, word.length) === 'ed';\n }\n return false;\n};\n\n/**\n * Forms the infinitive from an input word.\n *\n * @param {string} word The word to build the infinitive for.\n * @param {Object} regexVerb The list of regex rules used to bring verb forms to infinitive.\n * @param {Array} regexVerb.sFormToInfinitiveRegex The array of regex-based rules used to bring -s forms to infinitive.\n * @param {Array} regexVerb.ingFormToInfinitiveRegex The array of regex-based rules used to bring -ing forms to infinitive.\n * @param {Array} regexVerb.edFormToInfinitiveRegex The array of regex-based rules used to bring -ed forms to infinitive.\n *\n * @returns {Object} The infinitive of the input word.\n */\nconst getInfinitive = function(word, regexVerb) {\n const sFormToInfinitiveRegex = createRulesFromArrays(regexVerb.sFormToInfinitive);\n const ingFormToInfinitiveRegex = createRulesFromArrays(regexVerb.ingFormToInfinitive);\n const edFormToInfinitiveRegex = createRulesFromArrays(regexVerb.edFormToInfinitive);\n\n if (endsWithS(word)) {\n return {\n infinitive: buildFormRule(word, sFormToInfinitiveRegex),\n guessedForm: 's'\n };\n }\n\n if (endsWithIng(word)) {\n return {\n infinitive: buildFormRule(word, ingFormToInfinitiveRegex),\n guessedForm: 'ing'\n };\n }\n\n if (endsWithEd(word)) {\n return {\n infinitive: buildFormRule(word, edFormToInfinitiveRegex) || word,\n guessedForm: 'ed'\n };\n }\n return {\n infinitive: word,\n guessedForm: 'inf'\n };\n};\n\nexport {getInfinitive, checkIrregulars, endsWithIng, normalizePrefixed};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ var _lodash = require("lodash");
|
|
|
8
8
|
var _functionWords = require("../config/functionWords");
|
|
9
9
|
var _passiveVoiceNonVerbEndingEd = _interopRequireDefault(require("../config/internal/passiveVoiceNonVerbEndingEd"));
|
|
10
10
|
var _getParticiples = _interopRequireDefault(require("../helpers/internal/getParticiples"));
|
|
11
|
-
var _index = require("
|
|
11
|
+
var _index = require("../../../index");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
13
|
const {
|
|
14
14
|
precedenceException,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clause.js","names":["_lodash","require","_functionWords","_passiveVoiceNonVerbEndingEd","_interopRequireDefault","_getParticiples","_index","e","__esModule","default","precedenceException","directPrecedenceException","values","languageProcessing","Clause","EnglishClause","constructor","clauseText","auxiliaries","_participles","getParticiples","getClauseText","checkParticiples","clause","passiveParticiples","filter","participle","includes","nonVerbsEndingEd","hasRidException","cannotDirectlyPrecedePassiveParticiple","cannotBeBetweenPassiveAuxiliaryAndParticiple","setPassive","length","irregularExclusionArray","isEmpty","intersection","getAuxiliaries","_default","exports"],"sources":["../../../../../src/languageProcessing/languages/en/values/Clause.js"],"sourcesContent":["import {includes, intersection, isEmpty} from 'lodash';\nimport {\n cannotBeBetweenPassiveAuxiliaryAndParticiple,\n cannotDirectlyPrecedePassiveParticiple\n} from '../config/functionWords';\nimport nonVerbsEndingEd from '../config/internal/passiveVoiceNonVerbEndingEd';\nimport getParticiples from '../helpers/internal/getParticiples';\nimport {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"Clause.js","names":["_lodash","require","_functionWords","_passiveVoiceNonVerbEndingEd","_interopRequireDefault","_getParticiples","_index","e","__esModule","default","precedenceException","directPrecedenceException","values","languageProcessing","Clause","EnglishClause","constructor","clauseText","auxiliaries","_participles","getParticiples","getClauseText","checkParticiples","clause","passiveParticiples","filter","participle","includes","nonVerbsEndingEd","hasRidException","cannotDirectlyPrecedePassiveParticiple","cannotBeBetweenPassiveAuxiliaryAndParticiple","setPassive","length","irregularExclusionArray","isEmpty","intersection","getAuxiliaries","_default","exports"],"sources":["../../../../../src/languageProcessing/languages/en/values/Clause.js"],"sourcesContent":["import {includes, intersection, isEmpty} from 'lodash';\nimport {\n cannotBeBetweenPassiveAuxiliaryAndParticiple,\n cannotDirectlyPrecedePassiveParticiple\n} from '../config/functionWords';\nimport nonVerbsEndingEd from '../config/internal/passiveVoiceNonVerbEndingEd';\nimport getParticiples from '../helpers/internal/getParticiples';\nimport {languageProcessing} from '../../../index';\nconst {precedenceException, directPrecedenceException, values} = languageProcessing;\nconst Clause = values.Clause;\n\n/**\n * Creates a Clause object for the English language.\n */\nclass EnglishClause extends Clause {\n /**\n * Constructor.\n *\n * @param {string} clauseText The text of the clause.\n * @param {Array} auxiliaries The auxiliaries.\n *\n * @constructor\n */\n constructor(clauseText, auxiliaries) {\n super(clauseText, auxiliaries);\n this._participles = getParticiples(this.getClauseText());\n this.checkParticiples();\n }\n\n /**\n * Checks if any exceptions are applicable to this participle that would result in the clause not being passive.\n * If no exceptions are found, the clause is passive.\n *\n * @returns {boolean} Returns true if no exception is found.\n */\n checkParticiples() {\n const clause = this.getClauseText();\n\n const passiveParticiples = this.getParticiples().filter(\n participle =>\n !includes(nonVerbsEndingEd, participle) &&\n !this.hasRidException(participle) &&\n !directPrecedenceException(clause, participle, cannotDirectlyPrecedePassiveParticiple) &&\n !precedenceException(clause, participle, cannotBeBetweenPassiveAuxiliaryAndParticiple)\n );\n\n this.setPassive(passiveParticiples.length > 0);\n }\n\n /**\n * Checks whether the participle is 'rid' in combination with 'get', 'gets', 'getting', 'got' or 'gotten'.\n * If this is true, the participle is not passive.\n *\n * @param {string} participle The participle\n *\n * @returns {boolean} Returns true if 'rid' is found in combination with a form of 'get'\n * otherwise returns false.\n */\n hasRidException(participle) {\n if (participle === 'rid') {\n const irregularExclusionArray = ['get', 'gets', 'getting', 'got', 'gotten'];\n return !isEmpty(intersection(irregularExclusionArray, this.getAuxiliaries()));\n }\n return false;\n }\n}\n\nexport default EnglishClause;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAIA,IAAAE,4BAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,eAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAAkD,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAClD,MAAM;EAACG,mBAAmB;EAAEC,yBAAyB;EAAEC;AAAM,CAAC,GAAGC,yBAAkB;AACnF,MAAMC,MAAM,GAAGF,MAAM,CAACE,MAAM;;AAE5B;AACA;AACA;AACA,MAAMC,aAAa,SAASD,MAAM,CAAC;EACjC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,WAAWA,CAACC,UAAU,EAAEC,WAAW,EAAE;IACnC,KAAK,CAACD,UAAU,EAAEC,WAAW,CAAC;IAC9B,IAAI,CAACC,YAAY,GAAG,IAAAC,uBAAc,EAAC,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC;IACxD,IAAI,CAACC,gBAAgB,CAAC,CAAC;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEA,gBAAgBA,CAAA,EAAG;IACjB,MAAMC,MAAM,GAAG,IAAI,CAACF,aAAa,CAAC,CAAC;IAEnC,MAAMG,kBAAkB,GAAG,IAAI,CAACJ,cAAc,CAAC,CAAC,CAACK,MAAM,CACrDC,UAAU,IACR,CAAC,IAAAC,gBAAQ,EAACC,oCAAgB,EAAEF,UAAU,CAAC,IACvC,CAAC,IAAI,CAACG,eAAe,CAACH,UAAU,CAAC,IACjC,CAACf,yBAAyB,CAACY,MAAM,EAAEG,UAAU,EAAEI,qDAAsC,CAAC,IACtF,CAACpB,mBAAmB,CAACa,MAAM,EAAEG,UAAU,EAAEK,2DAA4C,CACzF,CAAC;IAED,IAAI,CAACC,UAAU,CAACR,kBAAkB,CAACS,MAAM,GAAG,CAAC,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEJ,eAAeA,CAACH,UAAU,EAAE;IAC1B,IAAIA,UAAU,KAAK,KAAK,EAAE;MACxB,MAAMQ,uBAAuB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC;MAC3E,OAAO,CAAC,IAAAC,eAAO,EAAC,IAAAC,oBAAY,EAACF,uBAAuB,EAAE,IAAI,CAACG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC/E;IACA,OAAO,KAAK;EACd;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA9B,OAAA,GAEcM,aAAa","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _index = require("
|
|
7
|
+
var _index = require("../../../index");
|
|
8
8
|
var _firstWordExceptions = _interopRequireDefault(require("./config/firstWordExceptions"));
|
|
9
9
|
var _functionWords = require("./config/functionWords");
|
|
10
10
|
var _stopWords = _interopRequireDefault(require("./config/stopWords"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Researcher.js","names":["_index","require","_firstWordExceptions","_interopRequireDefault","_functionWords","_stopWords","_transitionWords","_twoPartTransitionWords","_syllables","_sentenceLength","_getClauses","_getStemmer","_calculateFleschReadingScore","e","__esModule","default","AbstractResearcher","languageProcessing","Researcher","constructor","paper","Object","assign","config","language","passiveConstructionType","firstWordExceptions","functionWords","stopWords","transitionWords","twoPartTransitionWords","syllables","sentenceLength","helpers","getClauses","getStemmer","fleschReadingScore","exports"],"sources":["../../../../src/languageProcessing/languages/es/Researcher.js"],"sourcesContent":["import {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"Researcher.js","names":["_index","require","_firstWordExceptions","_interopRequireDefault","_functionWords","_stopWords","_transitionWords","_twoPartTransitionWords","_syllables","_sentenceLength","_getClauses","_getStemmer","_calculateFleschReadingScore","e","__esModule","default","AbstractResearcher","languageProcessing","Researcher","constructor","paper","Object","assign","config","language","passiveConstructionType","firstWordExceptions","functionWords","stopWords","transitionWords","twoPartTransitionWords","syllables","sentenceLength","helpers","getClauses","getStemmer","fleschReadingScore","exports"],"sources":["../../../../src/languageProcessing/languages/es/Researcher.js"],"sourcesContent":["import {languageProcessing} from '../../../index';\nconst {AbstractResearcher} = languageProcessing;\n\n// All config\nimport firstWordExceptions from './config/firstWordExceptions';\nimport {all as functionWords} from './config/functionWords';\nimport stopWords from './config/stopWords';\nimport transitionWords from './config/transitionWords';\nimport twoPartTransitionWords from './config/twoPartTransitionWords';\nimport syllables from './config/syllables.json';\nimport sentenceLength from './config/sentenceLength';\n\n// All helpers\nimport getClauses from './helpers/getClauses';\nimport getStemmer from './helpers/getStemmer';\nimport fleschReadingScore from './helpers/calculateFleschReadingScore';\n\n/**\n * The researcher contains all the researches, helpers, data, and config.\n */\nexport default class Researcher extends AbstractResearcher {\n /**\n * Constructor\n * @param {Paper} paper The Paper object that is needed within the researches.\n * @constructor\n */\n constructor(paper) {\n super(paper);\n\n Object.assign(this.config, {\n language: 'es',\n passiveConstructionType: 'periphrastic',\n firstWordExceptions,\n functionWords,\n stopWords,\n transitionWords,\n twoPartTransitionWords,\n syllables,\n sentenceLength\n });\n\n Object.assign(this.helpers, {\n getClauses,\n getStemmer,\n fleschReadingScore\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,oBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,gBAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,uBAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,UAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,eAAA,GAAAN,sBAAA,CAAAF,OAAA;AAGA,IAAAS,WAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,WAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,4BAAA,GAAAT,sBAAA,CAAAF,OAAA;AAAuE,SAAAE,uBAAAU,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAdvE,MAAM;EAACG;AAAkB,CAAC,GAAGC,yBAAkB;;AAE/C;;AASA;;AAKA;AACA;AACA;AACe,MAAMC,UAAU,SAASF,kBAAkB,CAAC;EACzD;AACF;AACA;AACA;AACA;EACEG,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAEZC,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,MAAM,EAAE;MACzBC,QAAQ,EAAE,IAAI;MACdC,uBAAuB,EAAE,cAAc;MACvCC,mBAAmB,EAAnBA,4BAAmB;MACnBC,aAAa,EAAbA,kBAAa;MACbC,SAAS,EAATA,kBAAS;MACTC,eAAe,EAAfA,wBAAe;MACfC,sBAAsB,EAAtBA,+BAAsB;MACtBC,SAAS,EAATA,kBAAS;MACTC,cAAc,EAAdA;IACF,CAAC,CAAC;IAEFX,MAAM,CAACC,MAAM,CAAC,IAAI,CAACW,OAAO,EAAE;MAC1BC,UAAU,EAAVA,mBAAU;MACVC,UAAU,EAAVA,mBAAU;MACVC,kBAAkB,EAAlBA;IACF,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAAtB,OAAA,GAAAG,UAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateFleschReadingScore.js","names":["_index","require","formatNumber","helpers","calculateScore","statistics","score","numberOfWords","numberOfSentences","syllablesPer100Words"],"sources":["../../../../../src/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js"],"sourcesContent":["import {helpers} from '
|
|
1
|
+
{"version":3,"file":"calculateFleschReadingScore.js","names":["_index","require","formatNumber","helpers","calculateScore","statistics","score","numberOfWords","numberOfSentences","syllablesPer100Words"],"sources":["../../../../../src/languageProcessing/languages/es/helpers/calculateFleschReadingScore.js"],"sourcesContent":["import {helpers} from '../../../index';\nconst {formatNumber} = helpers;\n\n/**\n * Returns the Flesch reading score for Spanish.\n *\n * @param {Object} statistics The Flesch reading statistics.\n *\n * @returns {number} The Flesch reading score for Spanish.\n */\nexport default function calculateScore(statistics) {\n const score =\n 206.84 -\n (1.02 * statistics.numberOfWords) / statistics.numberOfSentences -\n 0.6 * statistics.syllablesPer100Words;\n\n return formatNumber(score);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,MAAM;EAACC;AAAY,CAAC,GAAGC,cAAO;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,cAAcA,CAACC,UAAU,EAAE;EACjD,MAAMC,KAAK,GACT,MAAM,GACL,IAAI,GAAGD,UAAU,CAACE,aAAa,GAAIF,UAAU,CAACG,iBAAiB,GAChE,GAAG,GAAGH,UAAU,CAACI,oBAAoB;EAEvC,OAAOP,YAAY,CAACI,KAAK,CAAC;AAC5B","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = getSpanishClauses;
|
|
7
|
-
var _index = require("
|
|
7
|
+
var _index = require("../../../index");
|
|
8
8
|
var _Clause = _interopRequireDefault(require("../values/Clause"));
|
|
9
9
|
var _passiveVoiceAuxiliaries = _interopRequireDefault(require("../config/internal/passiveVoiceAuxiliaries.js"));
|
|
10
10
|
var _stopWords = _interopRequireDefault(require("../config/stopWords.js"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClauses.js","names":["_index","require","_Clause","_interopRequireDefault","_passiveVoiceAuxiliaries","_stopWords","e","__esModule","default","createRegexFromArray","getClauses","languageProcessing","followingAuxiliaryExceptionWords","options","Clause","stopwords","auxiliaries","regexes","auxiliaryRegex","stopCharacterRegex","followingAuxiliaryExceptionRegex","getSpanishClauses","sentence"],"sources":["../../../../../src/languageProcessing/languages/es/helpers/getClauses.js"],"sourcesContent":["import {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"getClauses.js","names":["_index","require","_Clause","_interopRequireDefault","_passiveVoiceAuxiliaries","_stopWords","e","__esModule","default","createRegexFromArray","getClauses","languageProcessing","followingAuxiliaryExceptionWords","options","Clause","stopwords","auxiliaries","regexes","auxiliaryRegex","stopCharacterRegex","followingAuxiliaryExceptionRegex","getSpanishClauses","sentence"],"sources":["../../../../../src/languageProcessing/languages/es/helpers/getClauses.js"],"sourcesContent":["import {languageProcessing} from '../../../index';\nconst {createRegexFromArray, getClauses} = languageProcessing;\n\nimport Clause from '../values/Clause';\nimport auxiliaries from '../config/internal/passiveVoiceAuxiliaries.js';\nimport stopwords from '../config/stopWords.js';\nconst followingAuxiliaryExceptionWords = ['el', 'la', 'los', 'las', 'una'];\n\nconst options = {\n Clause,\n stopwords,\n auxiliaries: auxiliaries,\n regexes: {\n auxiliaryRegex: createRegexFromArray(auxiliaries),\n stopCharacterRegex: /([:,])(?=[ \\n\\r\\t'\"+\\-»«‹›<>])/gi,\n followingAuxiliaryExceptionRegex: createRegexFromArray(followingAuxiliaryExceptionWords)\n }\n};\n\n/**\n * Gets the clauses from a sentence by determining sentence breakers.\n *\n * @param {string} sentence The sentence to split up in clauses.\n *\n * @returns {Array} The array with all clauses that have an auxiliary.\n */\nexport default function getSpanishClauses(sentence) {\n return getClauses(sentence, options);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,wBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA+C,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAJ/C,MAAM;EAACG,oBAAoB;EAAEC;AAAU,CAAC,GAAGC,yBAAkB;AAK7D,MAAMC,gCAAgC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAE1E,MAAMC,OAAO,GAAG;EACdC,MAAM,EAANA,eAAM;EACNC,SAAS,EAATA,kBAAS;EACTC,WAAW,EAAEA,gCAAW;EACxBC,OAAO,EAAE;IACPC,cAAc,EAAET,oBAAoB,CAACO,gCAAW,CAAC;IACjDG,kBAAkB,EAAE,kCAAkC;IACtDC,gCAAgC,EAAEX,oBAAoB,CAACG,gCAAgC;EACzF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASS,iBAAiBA,CAACC,QAAQ,EAAE;EAClD,OAAOZ,UAAU,CAACY,QAAQ,EAAET,OAAO,CAAC;AACtC","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = getStemmer;
|
|
7
7
|
var _lodash = require("lodash");
|
|
8
|
-
var _index = require("
|
|
8
|
+
var _index = require("../../../index");
|
|
9
9
|
var _stem = _interopRequireDefault(require("./internal/stem"));
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStemmer.js","names":["_lodash","require","_index","_stem","_interopRequireDefault","e","__esModule","default","baseStemmer","languageProcessing","getStemmer","researcher","morphologyData","get","getData","word","stem"],"sources":["../../../../../src/languageProcessing/languages/es/helpers/getStemmer.js"],"sourcesContent":["import {get} from 'lodash';\nimport {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"getStemmer.js","names":["_lodash","require","_index","_stem","_interopRequireDefault","e","__esModule","default","baseStemmer","languageProcessing","getStemmer","researcher","morphologyData","get","getData","word","stem"],"sources":["../../../../../src/languageProcessing/languages/es/helpers/getStemmer.js"],"sourcesContent":["import {get} from 'lodash';\nimport {languageProcessing} from '../../../index';\nconst {baseStemmer} = languageProcessing;\n\nimport stem from './internal/stem';\n\n/**\n * Returns the stemmer for a researcher.\n *\n * @param {Researcher} researcher The researcher.\n *\n * @returns {Function} The stemmer.\n */\nexport default function getStemmer(researcher) {\n const morphologyData = get(researcher.getData('morphology'), 'es', false);\n\n if (morphologyData) {\n return word => stem(word, morphologyData);\n }\n\n return baseStemmer;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAmC,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAFnC,MAAM;EAACG;AAAW,CAAC,GAAGC,yBAAkB;AAIxC;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,UAAUA,CAACC,UAAU,EAAE;EAC7C,MAAMC,cAAc,GAAG,IAAAC,WAAG,EAACF,UAAU,CAACG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;EAEzE,IAAIF,cAAc,EAAE;IAClB,OAAOG,IAAI,IAAI,IAAAC,aAAI,EAACD,IAAI,EAAEH,cAAc,CAAC;EAC3C;EAEA,OAAOJ,WAAW;AACpB","ignoreList":[]}
|
package/build/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js
CHANGED
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = checkVerbStemModifications;
|
|
7
|
-
var _buildFormRule = _interopRequireDefault(require("
|
|
8
|
-
var _createRulesFromArrays = _interopRequireDefault(require("
|
|
9
|
-
var _searchAndReplaceWithOneRegex = _interopRequireDefault(require("
|
|
7
|
+
var _buildFormRule = _interopRequireDefault(require("../../../../../languageProcessing/helpers/morphology/buildFormRule.js"));
|
|
8
|
+
var _createRulesFromArrays = _interopRequireDefault(require("../../../../../languageProcessing/helpers/morphology/createRulesFromArrays.js"));
|
|
9
|
+
var _searchAndReplaceWithOneRegex = _interopRequireDefault(require("../../../../../languageProcessing/helpers/regex/searchAndReplaceWithOneRegex"));
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Checks whether a given word is a verb to which certain stem modifications need to be applied.
|
package/build/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkVerbStemModifications.js","names":["_buildFormRule","_interopRequireDefault","require","_createRulesFromArrays","_searchAndReplaceWithOneRegex","e","__esModule","default","checkVerbStemModifications","word","morphologyDataES","verbStemModifications","quToCReplacement","searchAndReplaceWithOneRegex","quToC","ueToOReplacement","ueToOSimple","verbWithStemReplacement","buildFormRule","createRulesFromArrays","stemModifications","ueToO"],"sources":["../../../../../../src/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js"],"sourcesContent":["import buildFormRule from \"
|
|
1
|
+
{"version":3,"file":"checkVerbStemModifications.js","names":["_buildFormRule","_interopRequireDefault","require","_createRulesFromArrays","_searchAndReplaceWithOneRegex","e","__esModule","default","checkVerbStemModifications","word","morphologyDataES","verbStemModifications","quToCReplacement","searchAndReplaceWithOneRegex","quToC","ueToOReplacement","ueToOSimple","verbWithStemReplacement","buildFormRule","createRulesFromArrays","stemModifications","ueToO"],"sources":["../../../../../../src/languageProcessing/languages/es/helpers/internal/checkVerbStemModifications.js"],"sourcesContent":["import buildFormRule from \"../../../../../languageProcessing/helpers/morphology/buildFormRule.js\";\nimport createRulesFromArrays from \"../../../../../languageProcessing/helpers/morphology/createRulesFromArrays.js\";\nimport searchAndReplaceWithOneRegex from \"../../../../../languageProcessing/helpers/regex/searchAndReplaceWithOneRegex\";\n\n/**\n * Checks whether a given word is a verb to which certain stem modifications need to be applied.\n *\n * @param {string} word The word to check.\n * @param {Object} morphologyDataES The Spanish morphology data.\n *\n * @returns {string|null} The modified stem if any modifications apply or null.\n */\nexport default function checkVerbStemModifications( word, morphologyDataES ) {\n\tconst verbStemModifications = morphologyDataES.verbStemModifications;\n\n\tconst quToCReplacement = searchAndReplaceWithOneRegex( word, verbStemModifications.quToC );\n\n\t// This modification is checked separately because it's sometimes combined wit the dipththong modification.\n\tif ( quToCReplacement ) {\n\t\t// Check diphthong replacement.\n\t\tconst ueToOReplacement = searchAndReplaceWithOneRegex( quToCReplacement, verbStemModifications.ueToOSimple );\n\n\t\tif ( ueToOReplacement ) {\n\t\t\treturn ueToOReplacement;\n\t\t}\n\n\t\treturn quToCReplacement;\n\t}\n\n\t// All of the modifications checked in this step are mutually exclusive.\n\tconst verbWithStemReplacement = buildFormRule(\n\t\tword,\n\t\tcreateRulesFromArrays( [ ...verbStemModifications.stemModifications, verbStemModifications.ueToO ] )\n\t);\n\n\tif ( verbWithStemReplacement ) {\n\t\treturn verbWithStemReplacement;\n\t}\n\n\treturn null;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,6BAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAwH,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,0BAA0BA,CAAEC,IAAI,EAAEC,gBAAgB,EAAG;EAC5E,MAAMC,qBAAqB,GAAGD,gBAAgB,CAACC,qBAAqB;EAEpE,MAAMC,gBAAgB,GAAG,IAAAC,qCAA4B,EAAEJ,IAAI,EAAEE,qBAAqB,CAACG,KAAM,CAAC;;EAE1F;EACA,IAAKF,gBAAgB,EAAG;IACvB;IACA,MAAMG,gBAAgB,GAAG,IAAAF,qCAA4B,EAAED,gBAAgB,EAAED,qBAAqB,CAACK,WAAY,CAAC;IAE5G,IAAKD,gBAAgB,EAAG;MACvB,OAAOA,gBAAgB;IACxB;IAEA,OAAOH,gBAAgB;EACxB;;EAEA;EACA,MAAMK,uBAAuB,GAAG,IAAAC,sBAAa,EAC5CT,IAAI,EACJ,IAAAU,8BAAqB,EAAE,CAAE,GAAGR,qBAAqB,CAACS,iBAAiB,EAAET,qBAAqB,CAACU,KAAK,CAAG,CACpG,CAAC;EAED,IAAKJ,uBAAuB,EAAG;IAC9B,OAAOA,uBAAuB;EAC/B;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = getParticiples;
|
|
7
|
-
var _index = require("
|
|
7
|
+
var _index = require("../../../index");
|
|
8
8
|
var _passiveVoiceParticiples = _interopRequireDefault(require("../../config/internal/passiveVoiceParticiples"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getParticiples.js","names":["_index","require","_passiveVoiceParticiples","_interopRequireDefault","e","__esModule","default","getWords","languageProcessing","isParticiple","word","participleSuffixes","some","suffix","length","endsWith","stem","slice","participleStems","includes","getParticiples","clauseText","words","filter"],"sources":["../../../../../../src/languageProcessing/languages/es/helpers/internal/getParticiples.js"],"sourcesContent":["import {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"getParticiples.js","names":["_index","require","_passiveVoiceParticiples","_interopRequireDefault","e","__esModule","default","getWords","languageProcessing","isParticiple","word","participleSuffixes","some","suffix","length","endsWith","stem","slice","participleStems","includes","getParticiples","clauseText","words","filter"],"sources":["../../../../../../src/languageProcessing/languages/es/helpers/internal/getParticiples.js"],"sourcesContent":["import {languageProcessing} from '../../../index';\nconst {getWords} = languageProcessing;\n\nimport participleStems from '../../config/internal/passiveVoiceParticiples';\n\n/**\n * Checks if a Spanish word is a participle.\n * @param {string} word A Spanish word.\n * @returns {boolean} Returns true if word is a Spanish participle, and false otherwise.\n */\nfunction isParticiple(word) {\n const participleSuffixes = ['a', 'o', 'as', 'os'];\n // For each participle suffixes, check if the word ends in one of them.\n return participleSuffixes.some(suffix => {\n // Make sure only possible participles are targeted (minimum length being \"> 3\")\n if (word.length > 3 && word.endsWith(suffix)) {\n // If the word ends with one of the suffixes, retrieve the stem.\n const stem = word.slice(0, -suffix.length);\n // Check if the stem is in the list of participle stems: return true if it is, otherwise return false.\n return participleStems.includes(stem);\n }\n });\n}\n\n/**\n * Creates an array of participles for the participles found in a clause.\n *\n * @param {string} clauseText The clause to find participles in.\n *\n * @returns {Array} The list with participles.\n */\nexport default function getParticiples(clauseText) {\n const words = getWords(clauseText);\n return words.filter(word => isParticiple(word));\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,wBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA4E,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAF5E,MAAM;EAACG;AAAQ,CAAC,GAAGC,yBAAkB;AAIrC;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACC,IAAI,EAAE;EAC1B,MAAMC,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;EACjD;EACA,OAAOA,kBAAkB,CAACC,IAAI,CAACC,MAAM,IAAI;IACvC;IACA,IAAIH,IAAI,CAACI,MAAM,GAAG,CAAC,IAAIJ,IAAI,CAACK,QAAQ,CAACF,MAAM,CAAC,EAAE;MAC5C;MACA,MAAMG,IAAI,GAAGN,IAAI,CAACO,KAAK,CAAC,CAAC,EAAE,CAACJ,MAAM,CAACC,MAAM,CAAC;MAC1C;MACA,OAAOI,gCAAe,CAACC,QAAQ,CAACH,IAAI,CAAC;IACvC;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASI,cAAcA,CAACC,UAAU,EAAE;EACjD,MAAMC,KAAK,GAAGf,QAAQ,CAACc,UAAU,CAAC;EAClC,OAAOC,KAAK,CAACC,MAAM,CAACb,IAAI,IAAID,YAAY,CAACC,IAAI,CAAC,CAAC;AACjD","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = stem;
|
|
7
|
-
var _index = require("
|
|
7
|
+
var _index = require("../../../index");
|
|
8
8
|
var _checkVerbStemModifications = _interopRequireDefault(require("./checkVerbStemModifications"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/* eslint-disable max-statements, complexity */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stem.js","names":["_index","require","_checkVerbStemModifications","_interopRequireDefault","e","__esModule","default","buildFormRule","createRulesFromArrays","findMatchingEndingInArray","languageProcessing","isVowel","letter","regex","test","nextVowelPosition","word","start","length","position","nextConsonantPosition","removeAccent","accentedVowels","vowels","i","replace","endsIn","suffix","slice","endsInArr","suffixes","matches","push","longest","sort","a","b","checkWordInFullFormExceptions","exceptions","paradigm","includes","stemAdjectivesOnAn","r1Text","adjectiveSuffix","endsWith","tryStemAsMente","menteStemming","notMenteAdverbs","menteToStem","tryStemAsSuperlative","superlativesStemming","superlativeSuffix","superlativeSuffixes","notSuperlatives","superlativeToStem","tryStemAsDiminutive","diminutivesStemming","diminutiveSuffix","notDiminutives","wordWithoutEnding","irregularDiminutives","diminutiveToStem","canonicalizeStem","stemmedWord","stemsThatBelongToOneWord","nouns","adjectives","verbs","stemVerbSuffixes","wordAfter1","rvText","rv","suf","suf11","suf12","determineWordRegion","r1","r2","stemEncliticPronouns","morphologyData","pronounSuffix","pronounSuffixPre1","pronounSuffixPre2","wordsThatLookLikeButAreNot","notVerbsEndingInPersonalPronouns","preSuffix","stemDerivationalForms","r2Text","suf1","suf2","suf3","suf4","suf5","suf9","suf10","stemGenericSuffix","suf13","stem","toLowerCase","ifException","exceptionStemsWithFullForms","nonPluralsOnS","originalWord","wordAfterAdjectiveOnAnCheck","wordAfter0","ifMente","ifSuperlative","ifDiminutive","isNonVerb","notVerbForms","wordWithoutS","canonicalStem","modifiedVerbStem","checkVerbStemModifications"],"sources":["../../../../../../src/languageProcessing/languages/es/helpers/internal/stem.js"],"sourcesContent":["/* eslint-disable max-statements, complexity */\n// The original stemmer is available at https://github.com/dmarman/lorca/blob/master/src/stemmer.js.\nimport {languageProcessing} from '@axyseo/index';\nimport checkVerbStemModifications from './checkVerbStemModifications';\n\nconst {buildFormRule, createRulesFromArrays, findMatchingEndingInArray} = languageProcessing;\n\n/**\n * Copyright (C) 2018 Domingo Martín Mancera\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n */\n\n/**\n * Checks if the input character is a Spanish vowel.\n *\n * @param {string} letter The character to be checked.\n *\n * @returns {boolean} Whether the input character is a Spanish vowel.\n */\nconst isVowel = function(letter) {\n const regex = /[aeiouáéíóú]/gi;\n\n return regex.test(letter);\n};\n\n/**\n * Checks what the position number of the next vowel is. The function starts searching starting from a position specified\n * in the start parameter.\n *\n * @param {string} word The word to be analyzed.\n * @param {int} [start=0] The first position in the word to start checking from.\n *\n * @returns {int} The position at which the next vowel occurs.\n */\nconst nextVowelPosition = function(word, start) {\n const length = word.length;\n\n for (let position = start; position < length; position++) {\n if (isVowel(word[position])) {\n return position;\n }\n }\n\n return length;\n};\n\n/**\n * Checks what the position number of the next consonant is. The function starts searching starting from a position specified\n * in the start parameter.\n *\n * @param {string} word The word to be analyzed.\n * @param {int} [start=0] The first position in the word to start checking from.\n *\n * @returns {int} The position at which the next consonant occurs.\n */\nconst nextConsonantPosition = function(word, start) {\n const length = word.length;\n\n for (let position = start; position < length; position++) {\n if (!isVowel(word[position])) {\n return position;\n }\n }\n\n return length;\n};\n\n/**\n * Replaces accented vowels with non-accented vowels in the input string.\n *\n * @param {string} word The word to be de-accentified.\n *\n * @returns {string} The de-accentified input word.\n */\nconst removeAccent = function(word) {\n const accentedVowels = ['á', 'é', 'í', 'ó', 'ú'];\n const vowels = ['a', 'e', 'i', 'o', 'u'];\n\n for (let i = 0; i < accentedVowels.length; i++) {\n word = word.replace(accentedVowels[i], vowels[i]);\n }\n\n return word;\n};\n\n/**\n * Checks whether the input word ends with the input suffix.\n *\n * @param {string} word The word to be analyzed.\n * @param {string} suffix The suffix to check for.\n *\n * @returns {boolean} Whether the word ends with the suffix provided.\n */\nconst endsIn = function(word, suffix) {\n if (word.length < suffix.length) {\n return false;\n }\n\n return word.slice(-suffix.length) === suffix;\n};\n\n/**\n * Checks whether the input word ends with one of the input suffixes and returns the longest suffix matched.\n *\n * @param {string} word The word to be analyzed.\n * @param {string[]} suffixes The suffix to check for.\n *\n * @returns {string} The longest suffix matched in the word from the input list of suffixes.\n */\nconst endsInArr = function(word, suffixes) {\n const matches = [];\n for (const i in suffixes) {\n if (endsIn(word, suffixes[i])) {\n matches.push(suffixes[i]);\n }\n }\n const longest = matches.sort(function(a, b) {\n return b.length - a.length;\n })[0];\n if (longest) {\n return longest;\n }\n return '';\n};\n\n/**\n * Checks whether a word is in the full-form exception list and if so returns the canonical stem.\n *\n * @param {string} word\t The word to be checked.\n * @param {Object} exceptions The list of full-form exceptions to be checked in.\n *\n * @returns {null|string} The canonical stem or null if nothing was found.\n */\nconst checkWordInFullFormExceptions = function(word, exceptions) {\n for (const paradigm of exceptions) {\n if (paradigm[1].includes(word)) {\n return paradigm[0];\n }\n }\n return null;\n};\n\n/**\n * The function considers if the input word can be an adjective in -ano/anos/ana/anas and if so stems it.\n *\n * @param {string} word The word to stem.\n * @param {string} r1Text The R1 region of the word to stem.\n *\n * @returns {string} A stemmed adjective or the input word, if it is not an adjective on -ano/os/a/as.\n */\nconst stemAdjectivesOnAn = function(word, r1Text) {\n const adjectiveSuffix = findMatchingEndingInArray(r1Text, ['ano', 'anos', 'ana', 'anas']);\n\n // Remove o/a/os/as\n if (adjectiveSuffix !== '') {\n if (word.endsWith('s')) {\n return word.slice(0, word.length - 2);\n }\n return word.slice(0, word.length - 1);\n }\n return word;\n};\n\n/**\n * The function considers if the input word can be an adverb in -mente and if so stems it.\n *\n * @param {string} word The word to stem.\n * @param {string} r1Text The R1 region of the word to stem.\n * @param {Object} menteStemming An object containing information about how to stem mente-adverbs.\n * @param {string[]} menteStemming.notMenteAdverbs An array of words that look like mente-adverbs but are not.\n * @param {Array} menteStemming.menteToStem An array of pairs of regexes to match.\n *\n * @returns {string} A stemmed adverb or the input word, if it is not an adverb.\n */\nconst tryStemAsMente = function(word, r1Text, menteStemming) {\n const suffix = endsIn(r1Text, 'mente');\n\n // Immediately return the input word if no mente suffix is found or the word is in the stopList.\n if (!suffix || menteStemming.notMenteAdverbs.includes(word)) {\n return word;\n }\n\n return buildFormRule(word, createRulesFromArrays(menteStemming.menteToStem)) || word;\n};\n\n/**\n * The function considers if the input word can be a superlative and if so stems it.\n *\n * @param {string} word The word to stem.\n * @param {string} r1Text The R1 region of the word to stem.\n * @param {Object} superlativesStemming An object containing information about how to stem superlatives.\n * @param {string[]} superlativesStemming.superlativeSuffixes An array of suffixes possible in superlatives.\n * @param {string[]} superlativesStemming.notSuperlatives An array of words that look like superlatives but are not.\n * @param {Array} superlativesStemming.superlativeToStem An array of pairs of regexes to match.\n *\n * @returns {string} A stemmed superlative or the input word, if it is not a superlative.\n */\nconst tryStemAsSuperlative = function(word, r1Text, superlativesStemming) {\n const superlativeSuffix = findMatchingEndingInArray(\n r1Text,\n superlativesStemming.superlativeSuffixes\n );\n\n // Immediately return the input word if no superlative suffix is found or the word is in the stopList.\n if (superlativeSuffix === '' || superlativesStemming.notSuperlatives.includes(word)) {\n return word;\n }\n\n return buildFormRule(word, createRulesFromArrays(superlativesStemming.superlativeToStem));\n};\n\n/**\n * The function considers if the input word can be a diminutive and if so stems it.\n * @param {string} word The word to stem.\n * @param {Object} diminutivesStemming An object containing information about how to stem diminutives.\n * @param {string[]} diminutivesStemming.notDiminutives An array of words that look like diminutives but are not.\n * @param {Array} diminutivesStemming.diminutiveToStem An array of pairs of regexes to match.\n * @param {Array} diminutivesStemming.irregularDiminutives An array containing data for irregular diminutives.\n *\n * @returns {string} A stemmed diminutive or the input word, if it is not a diminutive.\n */\nconst tryStemAsDiminutive = function(word, diminutivesStemming) {\n const diminutiveSuffix = findMatchingEndingInArray(word, [\n 'ito',\n 'ita',\n 'itos',\n 'itas',\n 'íto',\n 'íta',\n 'ítos',\n 'ítas'\n ]);\n\n // Immediately return the input word if no diminutive suffix is found or the word is in the stopList.\n if (diminutiveSuffix === '' || diminutivesStemming.notDiminutives.includes(word)) {\n return word;\n }\n\n // Remove o/a/os/as and check irregular diminutives ending in -it-/-ít-\n const wordWithoutEnding = word.endsWith('s')\n ? word.slice(0, word.length - 2)\n : word.slice(0, word.length - 1);\n\n for (const paradigm of diminutivesStemming.irregularDiminutives) {\n if (paradigm[1].includes(wordWithoutEnding)) {\n return paradigm[0];\n }\n }\n\n return buildFormRule(word, createRulesFromArrays(diminutivesStemming.diminutiveToStem)) || word;\n};\n\n/**\n * Checks whether a stem is in an exception list of verbs, nouns or adjectives with multiple stems and if so returns\n * the canonical stem.\n *\n * @param {string} stemmedWord\t The stemmed word to be checked.\n * @param {Object} stemsThatBelongToOneWord The POS-specific data that shows how non-canonical stems should be canonicalized.\n *\n * @returns {null|string} The canonical stem or null if nothing was found.\n */\nconst canonicalizeStem = function(stemmedWord, stemsThatBelongToOneWord) {\n // First check for nouns with multiple stems, which are only diminutives.\n for (const paradigm of stemsThatBelongToOneWord.nouns) {\n if (paradigm.includes(stemmedWord)) {\n return paradigm[0];\n }\n }\n\n // Second check for adjectives with multiple stems, which are only adjectives ending in -bl/-bil.\n for (const paradigm of stemsThatBelongToOneWord.adjectives) {\n if (paradigm.includes(stemmedWord)) {\n return paradigm[0];\n }\n }\n\n // Last check for verbs that have irregular forms.\n for (const paradigm of stemsThatBelongToOneWord.verbs) {\n if (paradigm.includes(stemmedWord)) {\n return paradigm[0];\n }\n }\n return null;\n};\n\n/**\n * Stems verb suffixes.\n *\n * @param {string} word The original word.\n * @param {string} wordAfter1 The word after step 1.\n * @param {string} rvText The text of the RV.\n * @param {number} rv The start position of the RV.\n *\n * @returns {string} The word with the verb suffixes removed (if applicable).\n */\nconst stemVerbSuffixes = function(word, wordAfter1, rvText, rv) {\n // Do step 2a if no ending was removed by step 1.\n const suf = findMatchingEndingInArray(rvText, [\n 'ya',\n 'ye',\n 'yan',\n 'yen',\n 'yeron',\n 'yendo',\n 'yo',\n 'yó',\n 'yas',\n 'yes',\n 'yais',\n 'yamos'\n ]);\n\n if (suf !== '' && word.slice(-suf.length - 1, -suf.length) === 'u') {\n word = word.slice(0, -suf.length);\n }\n\n if (word !== wordAfter1) {\n rvText = word.slice(rv);\n }\n\n // Do Step 2b if step 2a was done, but failed to remove a suffix.\n if (word === wordAfter1) {\n const suf11 = findMatchingEndingInArray(rvText, [\n 'arían',\n 'arías',\n 'arán',\n 'arás',\n 'aríais',\n 'aría',\n 'aréis',\n 'aríamos',\n 'aremos',\n 'ará',\n 'aré',\n 'erían',\n 'erías',\n 'erán',\n 'erás',\n 'eríais',\n 'ería',\n 'eréis',\n 'eríamos',\n 'eremos',\n 'erá',\n 'eré',\n 'irían',\n 'irías',\n 'irán',\n 'irás',\n 'iríais',\n 'iría',\n 'iréis',\n 'iríamos',\n 'iremos',\n 'irá',\n 'iré',\n 'aba',\n 'ada',\n 'ida',\n 'ía',\n 'ara',\n 'iera',\n 'ad',\n 'ed',\n 'id',\n 'ase',\n 'iese',\n 'aste',\n 'iste',\n 'an',\n 'aban',\n 'ían',\n 'aran',\n 'ieran',\n 'asen',\n 'iesen',\n 'aron',\n 'ieron',\n 'ado',\n 'ido',\n 'ando',\n 'iendo',\n 'ió',\n 'ar',\n 'er',\n 'ir',\n 'as',\n 'abas',\n 'adas',\n 'idas',\n 'ías',\n 'aras',\n 'ieras',\n 'ases',\n 'ieses',\n 'ís',\n 'áis',\n 'abais',\n 'íais',\n 'arais',\n 'ierais',\n ' aseis',\n 'ieseis',\n 'asteis',\n 'isteis',\n 'ados',\n 'idos',\n 'amos',\n 'ábamos',\n 'íamos',\n 'imos',\n 'áramos',\n 'iéramos',\n 'iésemos',\n 'ásemos'\n ]);\n const suf12 = findMatchingEndingInArray(rvText, ['en', 'es', 'éis', 'emos']);\n if (suf11 !== '') {\n word = word.slice(0, -suf11.length);\n } else if (suf12 !== '') {\n word = word.slice(0, -suf12.length);\n if (endsIn(word, 'gu')) {\n word = word.slice(0, -1);\n }\n }\n }\n\n return word;\n};\n\n/**\n * Determines the R1, R2 and RV of the word.\n *\n * @param {string} word\t\tThe word checked.\n *\n * @returns {number[]} The array of R1, R2, and RV.\n */\nconst determineWordRegion = function(word) {\n let r1 = word.length;\n let r2 = word.length;\n let rv = word.length;\n\n /**\n * R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if\n * there is no such non-vowel.\n */\n for (let i = 0; i < word.length - 1 && r1 === word.length; i++) {\n if (isVowel(word[i]) && !isVowel(word[i + 1])) {\n r1 = i + 2;\n }\n }\n\n /**\n * R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the\n * word if there is no such non-vowel.\n */\n for (let i = r1; i < word.length - 1 && r2 === word.length; i++) {\n if (isVowel(word[i]) && !isVowel(word[i + 1])) {\n r2 = i + 2;\n }\n }\n\n if (word.length > 3) {\n if (!isVowel(word[1])) {\n rv = nextVowelPosition(word, 2) + 1;\n } else if (isVowel(word[0]) && isVowel(word[1])) {\n rv = nextConsonantPosition(word, 2) + 1;\n } else {\n rv = 3;\n }\n }\n return [r1, r2, rv];\n};\n\n/**\n * Stems enclitic pronouns.\n *\n * @param {string} word The word checked.\n * @param {string} rvText\t The text of RV.\n * @param {Object} morphologyData The Spanish morphology data.\n *\n * @returns {string} The word without the enclitic pronoun (if applicable).\n */\nconst stemEncliticPronouns = function(word, rvText, morphologyData) {\n const pronounSuffix = [\n 'me',\n 'se',\n 'sela',\n 'selo',\n 'selas',\n 'selos',\n 'la',\n 'le',\n 'lo',\n 'las',\n 'les',\n 'los',\n 'nos'\n ];\n const pronounSuffixPre1 = ['iéndo', 'ándo', 'ár', 'ér', 'ír'];\n const pronounSuffixPre2 = ['iendo', 'ando', 'ar', 'er', 'ir'];\n\n const suffix = findMatchingEndingInArray(word, pronounSuffix);\n\n if (\n suffix !== '' &&\n !morphologyData.wordsThatLookLikeButAreNot.notVerbsEndingInPersonalPronouns.includes(word)\n ) {\n let preSuffix = findMatchingEndingInArray(rvText.slice(0, -suffix.length), pronounSuffixPre1);\n\n if (preSuffix === '') {\n preSuffix = findMatchingEndingInArray(rvText.slice(0, -suffix.length), pronounSuffixPre2);\n\n if (preSuffix !== '' || endsIn(word.slice(0, -suffix.length), 'uyendo')) {\n word = word.slice(0, -suffix.length);\n }\n } else {\n word = removeAccent(word.slice(0, -suffix.length));\n }\n }\n return word;\n};\n\n/**\n * Stems derivational suffixes such as \"anza\", \"anzas\", \"ico\", \"ica\", \"icos\", \"icas\" etc. E.g. esperanza -> esper\n *\n * @param {string} word\t\tThe word checked.\n * @param {string} r2Text\tThe text of the R2.\n *\n * @returns {string} The word with removed derivational suffix.\n */\nconst stemDerivationalForms = function(word, r2Text) {\n const suf1 = findMatchingEndingInArray(r2Text, [\n 'anza',\n 'anzas',\n 'ico',\n 'ica',\n 'icos',\n 'icas',\n 'ismo',\n 'ismos',\n 'able',\n 'ables',\n 'ible',\n 'ibles',\n 'ista',\n 'istas',\n 'oso',\n 'osa',\n 'osos',\n 'osas',\n 'amiento',\n 'amientos',\n 'imiento',\n 'imientos'\n ]);\n const suf2 = findMatchingEndingInArray(r2Text, [\n 'icadora',\n 'icador',\n 'icación',\n 'icadoras',\n 'icadores',\n 'icaciones',\n 'icante',\n 'icantes',\n 'icancia',\n 'icancias',\n 'adora',\n 'ador',\n 'ación',\n 'adoras',\n 'adores',\n 'aciones',\n 'ante',\n 'antes',\n 'ancia',\n 'ancias'\n ]);\n const suf3 = findMatchingEndingInArray(r2Text, ['logía', 'logías']);\n const suf4 = findMatchingEndingInArray(r2Text, ['ución', 'uciones']);\n const suf5 = findMatchingEndingInArray(r2Text, ['encia', 'encias']);\n const suf9 = findMatchingEndingInArray(r2Text, [\n 'abilidad',\n 'abilidades',\n 'icidad',\n 'icidades',\n 'ividad',\n 'ividades',\n 'idad',\n 'idades'\n ]);\n const suf10 = findMatchingEndingInArray(r2Text, [\n 'ativa',\n 'ativo',\n 'ativas',\n 'ativos',\n 'iva',\n 'ivo',\n 'ivas',\n 'ivos'\n ]);\n\n if (suf1 !== '') {\n word = word.slice(0, -suf1.length);\n } else if (suf2 !== '') {\n word = word.slice(0, -suf2.length);\n } else if (suf3 !== '') {\n word = word.slice(0, -suf3.length) + 'log';\n } else if (suf4 !== '') {\n word = word.slice(0, -suf4.length) + 'u';\n } else if (suf5 !== '') {\n word = word.slice(0, -suf5.length) + 'ente';\n } else if (suf9 !== '') {\n word = word.slice(0, -suf9.length);\n } else if (suf10 !== '') {\n word = word.slice(0, -suf10.length);\n }\n return word;\n};\n\n/**\n * Stems suffixes \"os\", \"a\", \"o\", \"á\", \"í\", \"ó\", \"e\", and \"é\" in RV. e.g. regla -> regl\n *\n * @param {string} word\t\t\t\t\tThe word checked.\n * @param {string} rvText\t\t\t\tThe text of RV.\n * @param {number} rv \tThe start position of the RV.\n * @returns {string} The word with removed suffix.\n */\nconst stemGenericSuffix = function(word, rvText, rv) {\n const suf13 = endsInArr(rvText, ['os', 'a', 'o', 'á', 'í', 'ó']);\n if (suf13 !== '') {\n word = word.slice(0, -suf13.length);\n } else if (endsInArr(rvText, ['e', 'é']) !== '') {\n word = word.slice(0, -1);\n rvText = word.slice(rv);\n if (endsIn(rvText, 'u') && endsIn(word, 'gu')) {\n word = word.slice(0, -1);\n }\n }\n return word;\n};\n\n/**\n * Stems Spanish words.\n *\n * @param {string} word The word to stem.\n * @param {Object} morphologyData The Spanish morphology data.\n *\n * @returns {string} The stemmed word.\n */\nexport default function stem(word, morphologyData) {\n word.toLowerCase();\n const ifException = checkWordInFullFormExceptions(\n word,\n morphologyData.exceptionStemsWithFullForms\n );\n if (ifException) {\n return ifException;\n }\n\n const nonPluralsOnS = morphologyData.wordsThatLookLikeButAreNot.nonPluralsOnS;\n if (nonPluralsOnS.includes(word)) {\n return removeAccent(word);\n }\n\n const length = word.length;\n if (length < 2) {\n return removeAccent(word);\n }\n\n // Determine the r1, r2 and rv of the word\n const [r1, r2, rv] = determineWordRegion(word);\n\n let r1Text = word.slice(r1);\n let r2Text = word.slice(r2);\n let rvText = word.slice(rv);\n const originalWord = word;\n\n const wordAfterAdjectiveOnAnCheck = stemAdjectivesOnAn(word, r1Text);\n if (wordAfterAdjectiveOnAnCheck !== word) {\n return removeAccent(wordAfterAdjectiveOnAnCheck);\n }\n\n /*\n * Step 0:\n * Stem enclitic pronouns.\n */\n word = stemEncliticPronouns(word, rvText, morphologyData);\n\n if (word !== originalWord) {\n r1Text = word.slice(r1);\n r2Text = word.slice(r2);\n rvText = word.slice(rv);\n }\n\n // The word after removing enclitic pronouns.\n const wordAfter0 = word;\n\n /*\n * Step 1:\n * If the word ends in derivational suffixes such as \"anza\", \"anzas\", \"ico\", \"ica\", \"icos\", \"icas\" etc. the suffix will be stemmed here.\n */\n word = stemDerivationalForms(word, r2Text);\n\n // Check if the word is an adverb in -mente. Stem it as a adverb if so, and immediately return the result.\n const ifMente = tryStemAsMente(word, r1Text, morphologyData.menteStemming);\n if (ifMente !== word) {\n return removeAccent(ifMente);\n }\n\n // Check if the word is a superlative. Stem it as a superlative if so, and immediately return the result.\n const ifSuperlative = tryStemAsSuperlative(word, r1Text, morphologyData.superlativesStemming);\n if (ifSuperlative !== word) {\n return removeAccent(ifSuperlative);\n }\n\n // Check if the word is a diminutive. Stem it as a diminutive if so, and immediately return the result.\n const ifDiminutive = tryStemAsDiminutive(word, morphologyData.diminutivesStemming);\n if (ifDiminutive !== word) {\n return removeAccent(ifDiminutive);\n }\n\n // Adjust RV text if the word has been changed after derivational suffixes have been removed.\n if (word !== wordAfter0) {\n rvText = word.slice(rv);\n }\n\n // The word after removing derivational suffixes.\n const wordAfter1 = word;\n /*\n * Step 2a and 2b:\n * Stem verb suffixes.\n */\n let isNonVerb = false;\n const notVerbForms = morphologyData.wordsThatLookLikeButAreNot.notVerbForms;\n\n // Stem verbal suffixes if no derivational suffix was detected and removed.\n if (wordAfter0 === wordAfter1) {\n // If the word ends in -s, it is removed before checking the non-verbs list, as the list does not include plural forms.\n let wordWithoutS = word;\n if (word.endsWith('s')) {\n wordWithoutS = word.slice(0, -1);\n }\n\n if (notVerbForms.includes(wordWithoutS)) {\n /*\n * If the word without -s is matched on the non-verbs list, we can perform the next (non-verb) stemming steps\n * with the -s removed. This is because all possible non-verb suffixes ending in -s also have an equivalent\n * without the -s (e.g. -as/a; -es/e), so will be stemmed after stripping the -s.\n */\n word = wordWithoutS;\n isNonVerb = true;\n } else {\n word = stemVerbSuffixes(word, wordAfter1, rvText, rv);\n }\n }\n\n // Adjust RV text after derivational suffixes have been removed.\n rvText = word.slice(rv);\n\n /*\n * Step 4:\n * Stem generic suffixes;\n * If the word ends in \"os\", \"a\", \"o\", \"á\", \"í\", \"ó\", \"e\", \"é\", the suffix will be removed here.\n */\n word = stemGenericSuffix(word, rvText, rv);\n\n // Check if the stemmed word is on the list of words with multiple stems. If so, return the canonical stem.\n const canonicalStem = canonicalizeStem(word, morphologyData.stemsThatBelongToOneWord);\n if (canonicalStem) {\n return canonicalStem;\n }\n\n if (!isNonVerb) {\n const modifiedVerbStem = checkVerbStemModifications(word, morphologyData);\n if (modifiedVerbStem) {\n // If on the list of words that look like verbs [notVerbForms] do not perform stem modification.\n // Do not perform at the beginning of the word and if word does not have verb suffix.\n return modifiedVerbStem;\n }\n }\n\n return removeAccent(word);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"stem.js","names":["_index","require","_checkVerbStemModifications","_interopRequireDefault","e","__esModule","default","buildFormRule","createRulesFromArrays","findMatchingEndingInArray","languageProcessing","isVowel","letter","regex","test","nextVowelPosition","word","start","length","position","nextConsonantPosition","removeAccent","accentedVowels","vowels","i","replace","endsIn","suffix","slice","endsInArr","suffixes","matches","push","longest","sort","a","b","checkWordInFullFormExceptions","exceptions","paradigm","includes","stemAdjectivesOnAn","r1Text","adjectiveSuffix","endsWith","tryStemAsMente","menteStemming","notMenteAdverbs","menteToStem","tryStemAsSuperlative","superlativesStemming","superlativeSuffix","superlativeSuffixes","notSuperlatives","superlativeToStem","tryStemAsDiminutive","diminutivesStemming","diminutiveSuffix","notDiminutives","wordWithoutEnding","irregularDiminutives","diminutiveToStem","canonicalizeStem","stemmedWord","stemsThatBelongToOneWord","nouns","adjectives","verbs","stemVerbSuffixes","wordAfter1","rvText","rv","suf","suf11","suf12","determineWordRegion","r1","r2","stemEncliticPronouns","morphologyData","pronounSuffix","pronounSuffixPre1","pronounSuffixPre2","wordsThatLookLikeButAreNot","notVerbsEndingInPersonalPronouns","preSuffix","stemDerivationalForms","r2Text","suf1","suf2","suf3","suf4","suf5","suf9","suf10","stemGenericSuffix","suf13","stem","toLowerCase","ifException","exceptionStemsWithFullForms","nonPluralsOnS","originalWord","wordAfterAdjectiveOnAnCheck","wordAfter0","ifMente","ifSuperlative","ifDiminutive","isNonVerb","notVerbForms","wordWithoutS","canonicalStem","modifiedVerbStem","checkVerbStemModifications"],"sources":["../../../../../../src/languageProcessing/languages/es/helpers/internal/stem.js"],"sourcesContent":["/* eslint-disable max-statements, complexity */\n// The original stemmer is available at https://github.com/dmarman/lorca/blob/master/src/stemmer.js.\nimport {languageProcessing} from '../../../index';\nimport checkVerbStemModifications from './checkVerbStemModifications';\n\nconst {buildFormRule, createRulesFromArrays, findMatchingEndingInArray} = languageProcessing;\n\n/**\n * Copyright (C) 2018 Domingo Martín Mancera\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n */\n\n/**\n * Checks if the input character is a Spanish vowel.\n *\n * @param {string} letter The character to be checked.\n *\n * @returns {boolean} Whether the input character is a Spanish vowel.\n */\nconst isVowel = function(letter) {\n const regex = /[aeiouáéíóú]/gi;\n\n return regex.test(letter);\n};\n\n/**\n * Checks what the position number of the next vowel is. The function starts searching starting from a position specified\n * in the start parameter.\n *\n * @param {string} word The word to be analyzed.\n * @param {int} [start=0] The first position in the word to start checking from.\n *\n * @returns {int} The position at which the next vowel occurs.\n */\nconst nextVowelPosition = function(word, start) {\n const length = word.length;\n\n for (let position = start; position < length; position++) {\n if (isVowel(word[position])) {\n return position;\n }\n }\n\n return length;\n};\n\n/**\n * Checks what the position number of the next consonant is. The function starts searching starting from a position specified\n * in the start parameter.\n *\n * @param {string} word The word to be analyzed.\n * @param {int} [start=0] The first position in the word to start checking from.\n *\n * @returns {int} The position at which the next consonant occurs.\n */\nconst nextConsonantPosition = function(word, start) {\n const length = word.length;\n\n for (let position = start; position < length; position++) {\n if (!isVowel(word[position])) {\n return position;\n }\n }\n\n return length;\n};\n\n/**\n * Replaces accented vowels with non-accented vowels in the input string.\n *\n * @param {string} word The word to be de-accentified.\n *\n * @returns {string} The de-accentified input word.\n */\nconst removeAccent = function(word) {\n const accentedVowels = ['á', 'é', 'í', 'ó', 'ú'];\n const vowels = ['a', 'e', 'i', 'o', 'u'];\n\n for (let i = 0; i < accentedVowels.length; i++) {\n word = word.replace(accentedVowels[i], vowels[i]);\n }\n\n return word;\n};\n\n/**\n * Checks whether the input word ends with the input suffix.\n *\n * @param {string} word The word to be analyzed.\n * @param {string} suffix The suffix to check for.\n *\n * @returns {boolean} Whether the word ends with the suffix provided.\n */\nconst endsIn = function(word, suffix) {\n if (word.length < suffix.length) {\n return false;\n }\n\n return word.slice(-suffix.length) === suffix;\n};\n\n/**\n * Checks whether the input word ends with one of the input suffixes and returns the longest suffix matched.\n *\n * @param {string} word The word to be analyzed.\n * @param {string[]} suffixes The suffix to check for.\n *\n * @returns {string} The longest suffix matched in the word from the input list of suffixes.\n */\nconst endsInArr = function(word, suffixes) {\n const matches = [];\n for (const i in suffixes) {\n if (endsIn(word, suffixes[i])) {\n matches.push(suffixes[i]);\n }\n }\n const longest = matches.sort(function(a, b) {\n return b.length - a.length;\n })[0];\n if (longest) {\n return longest;\n }\n return '';\n};\n\n/**\n * Checks whether a word is in the full-form exception list and if so returns the canonical stem.\n *\n * @param {string} word\t The word to be checked.\n * @param {Object} exceptions The list of full-form exceptions to be checked in.\n *\n * @returns {null|string} The canonical stem or null if nothing was found.\n */\nconst checkWordInFullFormExceptions = function(word, exceptions) {\n for (const paradigm of exceptions) {\n if (paradigm[1].includes(word)) {\n return paradigm[0];\n }\n }\n return null;\n};\n\n/**\n * The function considers if the input word can be an adjective in -ano/anos/ana/anas and if so stems it.\n *\n * @param {string} word The word to stem.\n * @param {string} r1Text The R1 region of the word to stem.\n *\n * @returns {string} A stemmed adjective or the input word, if it is not an adjective on -ano/os/a/as.\n */\nconst stemAdjectivesOnAn = function(word, r1Text) {\n const adjectiveSuffix = findMatchingEndingInArray(r1Text, ['ano', 'anos', 'ana', 'anas']);\n\n // Remove o/a/os/as\n if (adjectiveSuffix !== '') {\n if (word.endsWith('s')) {\n return word.slice(0, word.length - 2);\n }\n return word.slice(0, word.length - 1);\n }\n return word;\n};\n\n/**\n * The function considers if the input word can be an adverb in -mente and if so stems it.\n *\n * @param {string} word The word to stem.\n * @param {string} r1Text The R1 region of the word to stem.\n * @param {Object} menteStemming An object containing information about how to stem mente-adverbs.\n * @param {string[]} menteStemming.notMenteAdverbs An array of words that look like mente-adverbs but are not.\n * @param {Array} menteStemming.menteToStem An array of pairs of regexes to match.\n *\n * @returns {string} A stemmed adverb or the input word, if it is not an adverb.\n */\nconst tryStemAsMente = function(word, r1Text, menteStemming) {\n const suffix = endsIn(r1Text, 'mente');\n\n // Immediately return the input word if no mente suffix is found or the word is in the stopList.\n if (!suffix || menteStemming.notMenteAdverbs.includes(word)) {\n return word;\n }\n\n return buildFormRule(word, createRulesFromArrays(menteStemming.menteToStem)) || word;\n};\n\n/**\n * The function considers if the input word can be a superlative and if so stems it.\n *\n * @param {string} word The word to stem.\n * @param {string} r1Text The R1 region of the word to stem.\n * @param {Object} superlativesStemming An object containing information about how to stem superlatives.\n * @param {string[]} superlativesStemming.superlativeSuffixes An array of suffixes possible in superlatives.\n * @param {string[]} superlativesStemming.notSuperlatives An array of words that look like superlatives but are not.\n * @param {Array} superlativesStemming.superlativeToStem An array of pairs of regexes to match.\n *\n * @returns {string} A stemmed superlative or the input word, if it is not a superlative.\n */\nconst tryStemAsSuperlative = function(word, r1Text, superlativesStemming) {\n const superlativeSuffix = findMatchingEndingInArray(\n r1Text,\n superlativesStemming.superlativeSuffixes\n );\n\n // Immediately return the input word if no superlative suffix is found or the word is in the stopList.\n if (superlativeSuffix === '' || superlativesStemming.notSuperlatives.includes(word)) {\n return word;\n }\n\n return buildFormRule(word, createRulesFromArrays(superlativesStemming.superlativeToStem));\n};\n\n/**\n * The function considers if the input word can be a diminutive and if so stems it.\n * @param {string} word The word to stem.\n * @param {Object} diminutivesStemming An object containing information about how to stem diminutives.\n * @param {string[]} diminutivesStemming.notDiminutives An array of words that look like diminutives but are not.\n * @param {Array} diminutivesStemming.diminutiveToStem An array of pairs of regexes to match.\n * @param {Array} diminutivesStemming.irregularDiminutives An array containing data for irregular diminutives.\n *\n * @returns {string} A stemmed diminutive or the input word, if it is not a diminutive.\n */\nconst tryStemAsDiminutive = function(word, diminutivesStemming) {\n const diminutiveSuffix = findMatchingEndingInArray(word, [\n 'ito',\n 'ita',\n 'itos',\n 'itas',\n 'íto',\n 'íta',\n 'ítos',\n 'ítas'\n ]);\n\n // Immediately return the input word if no diminutive suffix is found or the word is in the stopList.\n if (diminutiveSuffix === '' || diminutivesStemming.notDiminutives.includes(word)) {\n return word;\n }\n\n // Remove o/a/os/as and check irregular diminutives ending in -it-/-ít-\n const wordWithoutEnding = word.endsWith('s')\n ? word.slice(0, word.length - 2)\n : word.slice(0, word.length - 1);\n\n for (const paradigm of diminutivesStemming.irregularDiminutives) {\n if (paradigm[1].includes(wordWithoutEnding)) {\n return paradigm[0];\n }\n }\n\n return buildFormRule(word, createRulesFromArrays(diminutivesStemming.diminutiveToStem)) || word;\n};\n\n/**\n * Checks whether a stem is in an exception list of verbs, nouns or adjectives with multiple stems and if so returns\n * the canonical stem.\n *\n * @param {string} stemmedWord\t The stemmed word to be checked.\n * @param {Object} stemsThatBelongToOneWord The POS-specific data that shows how non-canonical stems should be canonicalized.\n *\n * @returns {null|string} The canonical stem or null if nothing was found.\n */\nconst canonicalizeStem = function(stemmedWord, stemsThatBelongToOneWord) {\n // First check for nouns with multiple stems, which are only diminutives.\n for (const paradigm of stemsThatBelongToOneWord.nouns) {\n if (paradigm.includes(stemmedWord)) {\n return paradigm[0];\n }\n }\n\n // Second check for adjectives with multiple stems, which are only adjectives ending in -bl/-bil.\n for (const paradigm of stemsThatBelongToOneWord.adjectives) {\n if (paradigm.includes(stemmedWord)) {\n return paradigm[0];\n }\n }\n\n // Last check for verbs that have irregular forms.\n for (const paradigm of stemsThatBelongToOneWord.verbs) {\n if (paradigm.includes(stemmedWord)) {\n return paradigm[0];\n }\n }\n return null;\n};\n\n/**\n * Stems verb suffixes.\n *\n * @param {string} word The original word.\n * @param {string} wordAfter1 The word after step 1.\n * @param {string} rvText The text of the RV.\n * @param {number} rv The start position of the RV.\n *\n * @returns {string} The word with the verb suffixes removed (if applicable).\n */\nconst stemVerbSuffixes = function(word, wordAfter1, rvText, rv) {\n // Do step 2a if no ending was removed by step 1.\n const suf = findMatchingEndingInArray(rvText, [\n 'ya',\n 'ye',\n 'yan',\n 'yen',\n 'yeron',\n 'yendo',\n 'yo',\n 'yó',\n 'yas',\n 'yes',\n 'yais',\n 'yamos'\n ]);\n\n if (suf !== '' && word.slice(-suf.length - 1, -suf.length) === 'u') {\n word = word.slice(0, -suf.length);\n }\n\n if (word !== wordAfter1) {\n rvText = word.slice(rv);\n }\n\n // Do Step 2b if step 2a was done, but failed to remove a suffix.\n if (word === wordAfter1) {\n const suf11 = findMatchingEndingInArray(rvText, [\n 'arían',\n 'arías',\n 'arán',\n 'arás',\n 'aríais',\n 'aría',\n 'aréis',\n 'aríamos',\n 'aremos',\n 'ará',\n 'aré',\n 'erían',\n 'erías',\n 'erán',\n 'erás',\n 'eríais',\n 'ería',\n 'eréis',\n 'eríamos',\n 'eremos',\n 'erá',\n 'eré',\n 'irían',\n 'irías',\n 'irán',\n 'irás',\n 'iríais',\n 'iría',\n 'iréis',\n 'iríamos',\n 'iremos',\n 'irá',\n 'iré',\n 'aba',\n 'ada',\n 'ida',\n 'ía',\n 'ara',\n 'iera',\n 'ad',\n 'ed',\n 'id',\n 'ase',\n 'iese',\n 'aste',\n 'iste',\n 'an',\n 'aban',\n 'ían',\n 'aran',\n 'ieran',\n 'asen',\n 'iesen',\n 'aron',\n 'ieron',\n 'ado',\n 'ido',\n 'ando',\n 'iendo',\n 'ió',\n 'ar',\n 'er',\n 'ir',\n 'as',\n 'abas',\n 'adas',\n 'idas',\n 'ías',\n 'aras',\n 'ieras',\n 'ases',\n 'ieses',\n 'ís',\n 'áis',\n 'abais',\n 'íais',\n 'arais',\n 'ierais',\n ' aseis',\n 'ieseis',\n 'asteis',\n 'isteis',\n 'ados',\n 'idos',\n 'amos',\n 'ábamos',\n 'íamos',\n 'imos',\n 'áramos',\n 'iéramos',\n 'iésemos',\n 'ásemos'\n ]);\n const suf12 = findMatchingEndingInArray(rvText, ['en', 'es', 'éis', 'emos']);\n if (suf11 !== '') {\n word = word.slice(0, -suf11.length);\n } else if (suf12 !== '') {\n word = word.slice(0, -suf12.length);\n if (endsIn(word, 'gu')) {\n word = word.slice(0, -1);\n }\n }\n }\n\n return word;\n};\n\n/**\n * Determines the R1, R2 and RV of the word.\n *\n * @param {string} word\t\tThe word checked.\n *\n * @returns {number[]} The array of R1, R2, and RV.\n */\nconst determineWordRegion = function(word) {\n let r1 = word.length;\n let r2 = word.length;\n let rv = word.length;\n\n /**\n * R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if\n * there is no such non-vowel.\n */\n for (let i = 0; i < word.length - 1 && r1 === word.length; i++) {\n if (isVowel(word[i]) && !isVowel(word[i + 1])) {\n r1 = i + 2;\n }\n }\n\n /**\n * R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the\n * word if there is no such non-vowel.\n */\n for (let i = r1; i < word.length - 1 && r2 === word.length; i++) {\n if (isVowel(word[i]) && !isVowel(word[i + 1])) {\n r2 = i + 2;\n }\n }\n\n if (word.length > 3) {\n if (!isVowel(word[1])) {\n rv = nextVowelPosition(word, 2) + 1;\n } else if (isVowel(word[0]) && isVowel(word[1])) {\n rv = nextConsonantPosition(word, 2) + 1;\n } else {\n rv = 3;\n }\n }\n return [r1, r2, rv];\n};\n\n/**\n * Stems enclitic pronouns.\n *\n * @param {string} word The word checked.\n * @param {string} rvText\t The text of RV.\n * @param {Object} morphologyData The Spanish morphology data.\n *\n * @returns {string} The word without the enclitic pronoun (if applicable).\n */\nconst stemEncliticPronouns = function(word, rvText, morphologyData) {\n const pronounSuffix = [\n 'me',\n 'se',\n 'sela',\n 'selo',\n 'selas',\n 'selos',\n 'la',\n 'le',\n 'lo',\n 'las',\n 'les',\n 'los',\n 'nos'\n ];\n const pronounSuffixPre1 = ['iéndo', 'ándo', 'ár', 'ér', 'ír'];\n const pronounSuffixPre2 = ['iendo', 'ando', 'ar', 'er', 'ir'];\n\n const suffix = findMatchingEndingInArray(word, pronounSuffix);\n\n if (\n suffix !== '' &&\n !morphologyData.wordsThatLookLikeButAreNot.notVerbsEndingInPersonalPronouns.includes(word)\n ) {\n let preSuffix = findMatchingEndingInArray(rvText.slice(0, -suffix.length), pronounSuffixPre1);\n\n if (preSuffix === '') {\n preSuffix = findMatchingEndingInArray(rvText.slice(0, -suffix.length), pronounSuffixPre2);\n\n if (preSuffix !== '' || endsIn(word.slice(0, -suffix.length), 'uyendo')) {\n word = word.slice(0, -suffix.length);\n }\n } else {\n word = removeAccent(word.slice(0, -suffix.length));\n }\n }\n return word;\n};\n\n/**\n * Stems derivational suffixes such as \"anza\", \"anzas\", \"ico\", \"ica\", \"icos\", \"icas\" etc. E.g. esperanza -> esper\n *\n * @param {string} word\t\tThe word checked.\n * @param {string} r2Text\tThe text of the R2.\n *\n * @returns {string} The word with removed derivational suffix.\n */\nconst stemDerivationalForms = function(word, r2Text) {\n const suf1 = findMatchingEndingInArray(r2Text, [\n 'anza',\n 'anzas',\n 'ico',\n 'ica',\n 'icos',\n 'icas',\n 'ismo',\n 'ismos',\n 'able',\n 'ables',\n 'ible',\n 'ibles',\n 'ista',\n 'istas',\n 'oso',\n 'osa',\n 'osos',\n 'osas',\n 'amiento',\n 'amientos',\n 'imiento',\n 'imientos'\n ]);\n const suf2 = findMatchingEndingInArray(r2Text, [\n 'icadora',\n 'icador',\n 'icación',\n 'icadoras',\n 'icadores',\n 'icaciones',\n 'icante',\n 'icantes',\n 'icancia',\n 'icancias',\n 'adora',\n 'ador',\n 'ación',\n 'adoras',\n 'adores',\n 'aciones',\n 'ante',\n 'antes',\n 'ancia',\n 'ancias'\n ]);\n const suf3 = findMatchingEndingInArray(r2Text, ['logía', 'logías']);\n const suf4 = findMatchingEndingInArray(r2Text, ['ución', 'uciones']);\n const suf5 = findMatchingEndingInArray(r2Text, ['encia', 'encias']);\n const suf9 = findMatchingEndingInArray(r2Text, [\n 'abilidad',\n 'abilidades',\n 'icidad',\n 'icidades',\n 'ividad',\n 'ividades',\n 'idad',\n 'idades'\n ]);\n const suf10 = findMatchingEndingInArray(r2Text, [\n 'ativa',\n 'ativo',\n 'ativas',\n 'ativos',\n 'iva',\n 'ivo',\n 'ivas',\n 'ivos'\n ]);\n\n if (suf1 !== '') {\n word = word.slice(0, -suf1.length);\n } else if (suf2 !== '') {\n word = word.slice(0, -suf2.length);\n } else if (suf3 !== '') {\n word = word.slice(0, -suf3.length) + 'log';\n } else if (suf4 !== '') {\n word = word.slice(0, -suf4.length) + 'u';\n } else if (suf5 !== '') {\n word = word.slice(0, -suf5.length) + 'ente';\n } else if (suf9 !== '') {\n word = word.slice(0, -suf9.length);\n } else if (suf10 !== '') {\n word = word.slice(0, -suf10.length);\n }\n return word;\n};\n\n/**\n * Stems suffixes \"os\", \"a\", \"o\", \"á\", \"í\", \"ó\", \"e\", and \"é\" in RV. e.g. regla -> regl\n *\n * @param {string} word\t\t\t\t\tThe word checked.\n * @param {string} rvText\t\t\t\tThe text of RV.\n * @param {number} rv \tThe start position of the RV.\n * @returns {string} The word with removed suffix.\n */\nconst stemGenericSuffix = function(word, rvText, rv) {\n const suf13 = endsInArr(rvText, ['os', 'a', 'o', 'á', 'í', 'ó']);\n if (suf13 !== '') {\n word = word.slice(0, -suf13.length);\n } else if (endsInArr(rvText, ['e', 'é']) !== '') {\n word = word.slice(0, -1);\n rvText = word.slice(rv);\n if (endsIn(rvText, 'u') && endsIn(word, 'gu')) {\n word = word.slice(0, -1);\n }\n }\n return word;\n};\n\n/**\n * Stems Spanish words.\n *\n * @param {string} word The word to stem.\n * @param {Object} morphologyData The Spanish morphology data.\n *\n * @returns {string} The stemmed word.\n */\nexport default function stem(word, morphologyData) {\n word.toLowerCase();\n const ifException = checkWordInFullFormExceptions(\n word,\n morphologyData.exceptionStemsWithFullForms\n );\n if (ifException) {\n return ifException;\n }\n\n const nonPluralsOnS = morphologyData.wordsThatLookLikeButAreNot.nonPluralsOnS;\n if (nonPluralsOnS.includes(word)) {\n return removeAccent(word);\n }\n\n const length = word.length;\n if (length < 2) {\n return removeAccent(word);\n }\n\n // Determine the r1, r2 and rv of the word\n const [r1, r2, rv] = determineWordRegion(word);\n\n let r1Text = word.slice(r1);\n let r2Text = word.slice(r2);\n let rvText = word.slice(rv);\n const originalWord = word;\n\n const wordAfterAdjectiveOnAnCheck = stemAdjectivesOnAn(word, r1Text);\n if (wordAfterAdjectiveOnAnCheck !== word) {\n return removeAccent(wordAfterAdjectiveOnAnCheck);\n }\n\n /*\n * Step 0:\n * Stem enclitic pronouns.\n */\n word = stemEncliticPronouns(word, rvText, morphologyData);\n\n if (word !== originalWord) {\n r1Text = word.slice(r1);\n r2Text = word.slice(r2);\n rvText = word.slice(rv);\n }\n\n // The word after removing enclitic pronouns.\n const wordAfter0 = word;\n\n /*\n * Step 1:\n * If the word ends in derivational suffixes such as \"anza\", \"anzas\", \"ico\", \"ica\", \"icos\", \"icas\" etc. the suffix will be stemmed here.\n */\n word = stemDerivationalForms(word, r2Text);\n\n // Check if the word is an adverb in -mente. Stem it as a adverb if so, and immediately return the result.\n const ifMente = tryStemAsMente(word, r1Text, morphologyData.menteStemming);\n if (ifMente !== word) {\n return removeAccent(ifMente);\n }\n\n // Check if the word is a superlative. Stem it as a superlative if so, and immediately return the result.\n const ifSuperlative = tryStemAsSuperlative(word, r1Text, morphologyData.superlativesStemming);\n if (ifSuperlative !== word) {\n return removeAccent(ifSuperlative);\n }\n\n // Check if the word is a diminutive. Stem it as a diminutive if so, and immediately return the result.\n const ifDiminutive = tryStemAsDiminutive(word, morphologyData.diminutivesStemming);\n if (ifDiminutive !== word) {\n return removeAccent(ifDiminutive);\n }\n\n // Adjust RV text if the word has been changed after derivational suffixes have been removed.\n if (word !== wordAfter0) {\n rvText = word.slice(rv);\n }\n\n // The word after removing derivational suffixes.\n const wordAfter1 = word;\n /*\n * Step 2a and 2b:\n * Stem verb suffixes.\n */\n let isNonVerb = false;\n const notVerbForms = morphologyData.wordsThatLookLikeButAreNot.notVerbForms;\n\n // Stem verbal suffixes if no derivational suffix was detected and removed.\n if (wordAfter0 === wordAfter1) {\n // If the word ends in -s, it is removed before checking the non-verbs list, as the list does not include plural forms.\n let wordWithoutS = word;\n if (word.endsWith('s')) {\n wordWithoutS = word.slice(0, -1);\n }\n\n if (notVerbForms.includes(wordWithoutS)) {\n /*\n * If the word without -s is matched on the non-verbs list, we can perform the next (non-verb) stemming steps\n * with the -s removed. This is because all possible non-verb suffixes ending in -s also have an equivalent\n * without the -s (e.g. -as/a; -es/e), so will be stemmed after stripping the -s.\n */\n word = wordWithoutS;\n isNonVerb = true;\n } else {\n word = stemVerbSuffixes(word, wordAfter1, rvText, rv);\n }\n }\n\n // Adjust RV text after derivational suffixes have been removed.\n rvText = word.slice(rv);\n\n /*\n * Step 4:\n * Stem generic suffixes;\n * If the word ends in \"os\", \"a\", \"o\", \"á\", \"í\", \"ó\", \"e\", \"é\", the suffix will be removed here.\n */\n word = stemGenericSuffix(word, rvText, rv);\n\n // Check if the stemmed word is on the list of words with multiple stems. If so, return the canonical stem.\n const canonicalStem = canonicalizeStem(word, morphologyData.stemsThatBelongToOneWord);\n if (canonicalStem) {\n return canonicalStem;\n }\n\n if (!isNonVerb) {\n const modifiedVerbStem = checkVerbStemModifications(word, morphologyData);\n if (modifiedVerbStem) {\n // If on the list of words that look like verbs [notVerbForms] do not perform stem modification.\n // Do not perform at the beginning of the word and if word does not have verb suffix.\n return modifiedVerbStem;\n }\n }\n\n return removeAccent(word);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _functionWords = require("../config/functionWords");
|
|
8
8
|
var _getParticiples = _interopRequireDefault(require("../helpers/internal/getParticiples"));
|
|
9
|
-
var _index = require("
|
|
9
|
+
var _index = require("../../../index");
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
const {
|
|
12
12
|
precedenceException,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clause.js","names":["_functionWords","require","_getParticiples","_interopRequireDefault","_index","e","__esModule","default","precedenceException","directPrecedenceException","values","languageProcessing","Clause","SpanishClause","constructor","clauseText","auxiliaries","_participles","getParticiples","getClauseText","checkParticiples","clause","passiveParticiples","filter","participle","cannotDirectlyPrecedePassiveParticiple","cannotBeBetweenPassiveAuxiliaryAndParticiple","setPassive","length","_default","exports"],"sources":["../../../../../src/languageProcessing/languages/es/values/Clause.js"],"sourcesContent":["import {\n cannotBeBetweenPassiveAuxiliaryAndParticiple,\n cannotDirectlyPrecedePassiveParticiple\n} from '../config/functionWords';\nimport getParticiples from '../helpers/internal/getParticiples';\nimport {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"Clause.js","names":["_functionWords","require","_getParticiples","_interopRequireDefault","_index","e","__esModule","default","precedenceException","directPrecedenceException","values","languageProcessing","Clause","SpanishClause","constructor","clauseText","auxiliaries","_participles","getParticiples","getClauseText","checkParticiples","clause","passiveParticiples","filter","participle","cannotDirectlyPrecedePassiveParticiple","cannotBeBetweenPassiveAuxiliaryAndParticiple","setPassive","length","_default","exports"],"sources":["../../../../../src/languageProcessing/languages/es/values/Clause.js"],"sourcesContent":["import {\n cannotBeBetweenPassiveAuxiliaryAndParticiple,\n cannotDirectlyPrecedePassiveParticiple\n} from '../config/functionWords';\nimport getParticiples from '../helpers/internal/getParticiples';\nimport {languageProcessing} from '../../../index';\nconst {precedenceException, directPrecedenceException, values} = languageProcessing;\nconst Clause = values.Clause;\n\n/**\n * Creates a Clause object for the Spanish language.\n */\nclass SpanishClause extends Clause {\n /**\n * Constructor.\n *\n * @param {string} clauseText The text of the clause.\n * @param {Array} auxiliaries The auxiliaries.\n *\n * @constructor\n */\n constructor(clauseText, auxiliaries) {\n super(clauseText, auxiliaries);\n this._participles = getParticiples(this.getClauseText());\n this.checkParticiples();\n }\n\n /**\n * Checks if any exceptions are applicable to this participle that would result in the clause not being passive.\n * If no exceptions are found, the clause is passive.\n *\n * @returns { void }\n */\n checkParticiples() {\n const clause = this.getClauseText();\n\n const passiveParticiples = this.getParticiples().filter(\n participle =>\n !directPrecedenceException(clause, participle, cannotDirectlyPrecedePassiveParticiple) &&\n !precedenceException(clause, participle, cannotBeBetweenPassiveAuxiliaryAndParticiple)\n );\n\n this.setPassive(passiveParticiples.length > 0);\n }\n}\n\nexport default SpanishClause;\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAkD,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAClD,MAAM;EAACG,mBAAmB;EAAEC,yBAAyB;EAAEC;AAAM,CAAC,GAAGC,yBAAkB;AACnF,MAAMC,MAAM,GAAGF,MAAM,CAACE,MAAM;;AAE5B;AACA;AACA;AACA,MAAMC,aAAa,SAASD,MAAM,CAAC;EACjC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,WAAWA,CAACC,UAAU,EAAEC,WAAW,EAAE;IACnC,KAAK,CAACD,UAAU,EAAEC,WAAW,CAAC;IAC9B,IAAI,CAACC,YAAY,GAAG,IAAAC,uBAAc,EAAC,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC;IACxD,IAAI,CAACC,gBAAgB,CAAC,CAAC;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEA,gBAAgBA,CAAA,EAAG;IACjB,MAAMC,MAAM,GAAG,IAAI,CAACF,aAAa,CAAC,CAAC;IAEnC,MAAMG,kBAAkB,GAAG,IAAI,CAACJ,cAAc,CAAC,CAAC,CAACK,MAAM,CACrDC,UAAU,IACR,CAACf,yBAAyB,CAACY,MAAM,EAAEG,UAAU,EAAEC,qDAAsC,CAAC,IACtF,CAACjB,mBAAmB,CAACa,MAAM,EAAEG,UAAU,EAAEE,2DAA4C,CACzF,CAAC;IAED,IAAI,CAACC,UAAU,CAACL,kBAAkB,CAACM,MAAM,GAAG,CAAC,CAAC;EAChD;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAvB,OAAA,GAEcM,aAAa","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _index = require("
|
|
7
|
+
var _index = require("../../../index");
|
|
8
8
|
var _functionWords = _interopRequireDefault(require("./config/functionWords"));
|
|
9
9
|
var _transitionWords = _interopRequireDefault(require("./config/transitionWords"));
|
|
10
10
|
var _twoPartTransitionWords = _interopRequireDefault(require("./config/twoPartTransitionWords"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Researcher.js","names":["_index","require","_functionWords","_interopRequireDefault","_transitionWords","_twoPartTransitionWords","_sentenceLength","_firstWordExceptions","_createBasicWordForms","_getStemmer","_isPassiveSentence","e","__esModule","default","AbstractResearcher","languageProcessing","Researcher","constructor","paper","defaultResearches","getFleschReadingScore","Object","assign","config","passiveConstructionType","language","functionWords","transitionWords","twoPartTransitionWords","sentenceLength","firstWordExceptions","helpers","createBasicWordForms","getStemmer","isPassiveSentence","exports"],"sources":["../../../../src/languageProcessing/languages/fa/Researcher.js"],"sourcesContent":["import {languageProcessing} from '
|
|
1
|
+
{"version":3,"file":"Researcher.js","names":["_index","require","_functionWords","_interopRequireDefault","_transitionWords","_twoPartTransitionWords","_sentenceLength","_firstWordExceptions","_createBasicWordForms","_getStemmer","_isPassiveSentence","e","__esModule","default","AbstractResearcher","languageProcessing","Researcher","constructor","paper","defaultResearches","getFleschReadingScore","Object","assign","config","passiveConstructionType","language","functionWords","transitionWords","twoPartTransitionWords","sentenceLength","firstWordExceptions","helpers","createBasicWordForms","getStemmer","isPassiveSentence","exports"],"sources":["../../../../src/languageProcessing/languages/fa/Researcher.js"],"sourcesContent":["import {languageProcessing} from '../../../index';\nconst {AbstractResearcher} = languageProcessing;\n\n// All config\nimport functionWords from './config/functionWords';\nimport transitionWords from './config/transitionWords';\nimport twoPartTransitionWords from './config/twoPartTransitionWords';\nimport sentenceLength from './config/sentenceLength';\nimport firstWordExceptions from './config/firstWordExceptions';\n\n// All helpers\nimport createBasicWordForms from './helpers/createBasicWordForms';\nimport getStemmer from './helpers/getStemmer';\nimport isPassiveSentence from './helpers/isPassiveSentence';\n\n/**\n * The researcher contains all the researches, helpers, data, and config.\n */\nexport default class Researcher extends AbstractResearcher {\n /**\n * Constructor\n * @param {Paper} paper The Paper object that is needed within the researches.\n * @constructor\n */\n constructor(paper) {\n super(paper);\n\n // Delete the researches from the Abstract Researcher that currently are not available for Farsi.\n delete this.defaultResearches.getFleschReadingScore;\n\n Object.assign(this.config, {\n passiveConstructionType: 'morphological',\n language: 'fa',\n functionWords,\n transitionWords,\n twoPartTransitionWords,\n sentenceLength,\n firstWordExceptions\n });\n\n Object.assign(this.helpers, {\n createBasicWordForms,\n getStemmer,\n isPassiveSentence\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,uBAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,eAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,oBAAA,GAAAJ,sBAAA,CAAAF,OAAA;AAGA,IAAAO,qBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,WAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,kBAAA,GAAAP,sBAAA,CAAAF,OAAA;AAA4D,SAAAE,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAZ5D,MAAM;EAACG;AAAkB,CAAC,GAAGC,yBAAkB;;AAE/C;;AAOA;;AAKA;AACA;AACA;AACe,MAAMC,UAAU,SAASF,kBAAkB,CAAC;EACzD;AACF;AACA;AACA;AACA;EACEG,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;;IAEZ;IACA,OAAO,IAAI,CAACC,iBAAiB,CAACC,qBAAqB;IAEnDC,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,MAAM,EAAE;MACzBC,uBAAuB,EAAE,eAAe;MACxCC,QAAQ,EAAE,IAAI;MACdC,aAAa,EAAbA,sBAAa;MACbC,eAAe,EAAfA,wBAAe;MACfC,sBAAsB,EAAtBA,+BAAsB;MACtBC,cAAc,EAAdA,uBAAc;MACdC,mBAAmB,EAAnBA;IACF,CAAC,CAAC;IAEFT,MAAM,CAACC,MAAM,CAAC,IAAI,CAACS,OAAO,EAAE;MAC1BC,oBAAoB,EAApBA,6BAAoB;MACpBC,UAAU,EAAVA,mBAAU;MACVC,iBAAiB,EAAjBA;IACF,CAAC,CAAC;EACJ;AACF;AAACC,OAAA,CAAAtB,OAAA,GAAAG,UAAA","ignoreList":[]}
|