diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..9a5a1c9c2d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "weekly" + groups: + minor-and-patch: + applies-to: version-updates + update-types: + - "patch" + - "minor" diff --git a/.gitignore b/.gitignore index f1b9674b61..d9dbb145ca 100644 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,13 @@ target/ pom.xml.tag pom.xml.releaseBackup pom.xml.next +**/dependency-reduced-pom.xml release.properties mockserver*log **/.DS_Store */tests/mock-data classpath +.classpath .checkstyle .ruleset .pmd @@ -18,4 +20,5 @@ target .idea/* *.iml *~ - +build.log +.vscode/** diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 41d3f0684e..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "rosette_api_site"] - path = rosette_api_site - url = git@github.com:basis-technology-corp/rosette-api.git - branch = gh-pages diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3a544d25d6..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: java -script: mvn verify -jdk: -- oraclejdk8 -- oraclejdk7 -- openjdk7 - -# hmm diff --git a/CI.Jenkinsfile b/CI.Jenkinsfile new file mode 100644 index 0000000000..6d669cfba2 --- /dev/null +++ b/CI.Jenkinsfile @@ -0,0 +1,60 @@ +node ("docker-light") { + def sourceDir = pwd() + try { + env.JAVA_HOME = "${tool 'java21'}" + env.PATH = "${env.JAVA_HOME}/bin:${env.PATH}" + def mavenLocalRepo = "$JENKINS_HOME/maven-local-repositories/executor-$EXECUTOR_NUMBER" + stage("Clean up") { + step([$class: 'WsCleanup']) + sh "rm -rf $mavenLocalRepo" + } + stage("Checkout Code") { + checkout scm + } + stage("Build") { + withMaven(maven: "Basis", + mavenLocalRepo: mavenLocalRepo, + publisherStrategy: "EXPLICIT") { + sh "mvn clean verify" + } + + } + stage("Test with Docker") { + withSonarQubeEnv { + mySonarOpts="-Dsonar.login=${env.SONAR_AUTH_TOKEN} -Dsonar.host.url=${env.SONAR_HOST_URL}" + if ("${env.CHANGE_BRANCH}" != "null") { + mySonarOpts="$mySonarOpts -Dsonar.pullrequest.key=${env.CHANGE_ID} -Dsonar.pullrequest.base=${env.CHANGE_TARGET} -Dsonar.pullrequest.branch=${env.CHANGE_BRANCH}" + } + echo("Sonar Options are: $mySonarOpts") + sh "docker run --rm \ + --pull always \ + --volume ${sourceDir}:/source \ + --volume /opt/maven-basis:/opt/maven-basis \ + eclipse-temurin:21-jdk-noble \ + bash -c \"apt-get update && \ + apt-get install -y git && \ + pushd /source && \ + git config --global --add safe.directory /source && \ + /opt/maven-basis/bin/mvn --batch-mode clean install sonar:sonar $mySonarOpts; \ + maven_ret=\\\$?; \ + echo && \ + echo [INFO] Set file permissions to UID and GID of jenkins user for cleanup. && \ + chown -R 9960:9960 /source && \ + exit \\\$maven_ret\"" + } + } + postToTeams(true) + } catch (e) { + currentBuild.result = "FAILED" + postToTeams(false) + throw e + } +} + +def postToTeams(boolean success) { + def webhookUrl = "${env.TEAMS_PNC_JENKINS_WEBHOOK_URL}" + def color = success ? "#00FF00" : "#FF0000" + def status = success ? "SUCCESSFUL" : "FAILED" + def message = "*" + status + ":* '${env.JOB_NAME}' - [${env.BUILD_NUMBER}] - ${env.BUILD_URL}" + office365ConnectorSend(webhookUrl: webhookUrl, color: color, message: message, status: status) +} diff --git a/DEVELOPER.md b/DEVELOPER.md new file mode 100644 index 0000000000..e733bfd8e0 --- /dev/null +++ b/DEVELOPER.md @@ -0,0 +1,18 @@ +## Developer Notes + +#### Deprecation Strategies +If we remove a field via deprecation, the field can still be passed in, but we will no longer deserialize it. As an example see [PR 204](https://github.com/rosette-api/java/pull/204). + +#### Building and Releasing +To be updated.. + + +#### Internal Releasing + +To perform an internal release, execute the following commands: +``` +$ mvn release:clean +$ mvn release:prepare +$ mvn release:perform -Drelease-profile=internal-release +``` + diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..5777d9641a --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,43 @@ +node ("docker-light") { + def SOURCEDIR = pwd() + try { + env.JAVA_HOME = "${tool 'java21'}" + env.PATH = "${env.JAVA_HOME}/bin:${env.PATH}" + def mavenLocalRepo = "$JENKINS_HOME/maven-local-repositories/executor-$EXECUTOR_NUMBER" + stage("Clean up") { + step([$class: 'WsCleanup']) + sh "rm -rf $mavenLocalRepo" + } + stage("Checkout Code") { + checkout scm + } + stage("Build") { + withMaven(maven: "Basis", + mavenLocalRepo: mavenLocalRepo, + publisherStrategy: "EXPLICIT") { + sh "mvn clean verify" + } + + } + stage("Test with Docker") { + echo "${env.ALT_URL}" + def useUrl = ("${env.ALT_URL}" == "null") ? "${env.BINDING_TEST_URL}" : "${env.ALT_URL}" + withEnv(["API_KEY=${env.ROSETTE_API_KEY}", "ALT_URL=${useUrl}"]) { + sh "docker run --rm -e API_KEY=${API_KEY} -e ALT_URL=${ALT_URL} -v ${SOURCEDIR}:/source rosette/docker-java" + } + } + postToTeams(true) + } catch (e) { + currentBuild.result = "FAILED" + postToTeams(false) + throw e + } +} + +def postToTeams(boolean success) { + def webhookUrl = "${env.TEAMS_PNC_JENKINS_WEBHOOK_URL}" + def color = success ? "#00FF00" : "#FF0000" + def status = success ? "SUCCESSFUL" : "FAILED" + def message = "*" + status + ":* '${env.JOB_NAME}' - [${env.BUILD_NUMBER}] - ${env.BUILD_URL}" + office365ConnectorSend(webhookUrl: webhookUrl, color: color, message: message, status: status) +} diff --git a/Jenkinsfile.examples b/Jenkinsfile.examples new file mode 100644 index 0000000000..fad51cfdec --- /dev/null +++ b/Jenkinsfile.examples @@ -0,0 +1,39 @@ +node { + def SOURCEDIR = pwd() + def TEST_CONTAINER = 'examples/java-test' + def DOCKERFILE_DIR = './examples/docker' + def PUBLISHED_VERSION = '1.7.3' + try { + stage("Clean up") { + step([$class: 'WsCleanup']) + } + stage("Checkout Code") { + checkout scm + } + stage("Build Dockerfile") { + dir ("${DOCKERFILE_DIR}") { + sh "docker build --no-cache -t ${TEST_CONTAINER} ." + } + } + stage("Run Examples") { + echo "${env.ALT_URL}" + def useUrl = ("${env.ALT_URL}" == "null") ? "${env.BINDING_TEST_URL}" : "${env.ALT_URL}" + withEnv(["API_KEY=${env.ROSETTE_API_KEY}", "ALT_URL=${useUrl}"]) { + sh "docker run --rm -e API_KEY=${API_KEY} -e ALT_URL=${ALT_URL} -e VERSION=${PUBLISHED_VERSION} -v ${SOURCEDIR}:/source ${TEST_CONTAINER}" + } + } + postToTeams(true) + } catch (e) { + currentBuild.result = "FAILED" + postToTeams(false) + throw e + } +} + +def postToTeams(boolean success) { + def webhookUrl = "${env.TEAMS_PNC_JENKINS_WEBHOOK_URL}" + def color = success ? "#00FF00" : "#FF0000" + def status = success ? "SUCCESSFUL" : "FAILED" + def message = "*" + status + ":* '${env.JOB_NAME}' - [${env.BUILD_NUMBER}] - ${env.BUILD_URL}" + office365ConnectorSend(webhookUrl: webhookUrl, color: color, message: message, status: status) +} diff --git a/README.md b/README.md index 9e7fc6527f..a15ed77350 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,62 @@ -Java client binding for Rosette API -================================== + + + + + Babel Street Logo + + -Installation ------------- +# Analytics by Babel Street -If you use Maven, include this dependency in your `pom.xml`: +--- +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.basistech.rosette/rosette-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.basistech.rosette/rosette-api-java-binding) + +Our product is a full text processing pipeline from data preparation to extracting the most relevant information and +analysis utilizing precise, focused AI that has built-in human understanding. Text Analytics provides foundational +linguistic analysis for identifying languages and relating words. The result is enriched and normalized text for +high-speed search and processing without translation. + +Text Analytics extracts events and entities — people, organizations, and places — from unstructured text and adds the +structure of associating those entities into events that deliver only the necessary information for near real-time +decision making. Accompanying tools shorten the process of training AI models to recognize domain-specific events. + +The product delivers a multitude of ways to sharpen and expand search results. Semantic similarity expands search +beyond keywords to words with the same meaning, even in other languages. Sentiment analysis and topic extraction help +filter results to what’s relevant. + +## Analytics API Access +- Analytics Cloud [Sign Up](https://developer.babelstreet.com/signup) +## Quick Start + +#### Maven ```xml com.basistech.rosette rosette-api - 0.7.3 + ${rosette.api.java.binding.version} ``` -You can also download the [self-contained jar file](http://mvnrepository.com/artifact/com.basistech.rosette/rosette-api) to include on your classpath. - -Basic Usage ------------ - -See [examples](examples/src/main/java/com/basistech/rosette/examples) +Set `${rosette.api.java.binding.version}` in the `` block. The latest version available is displayed +in the Maven Central badge at the top of this page. -API Documentation ------------------ +#### Test Releases +Versions, of the form `x.y.z`, where `z` is greater than or equal to `100`, are internal testing versions. Do not use +them without consultation with Babel Street. -See [documentation](http://rosette-api.github.io/java) +#### Examples +View small example programs for each Analytics endpoint in the +[examples](examples/src/main/java/com/basistech/rosette/examples) directory. -Additional Information ----------------------- +#### Documentation & Support +- [Binding API](https://rosette-api.github.io/java/) +- [Analytics Platform API](https://docs.babelstreet.com/API/en/index-en.html) +- [Binding Release Notes](https://github.com/rosette-api/java/wiki/Release-Notes) +- [Analytics Platform Release Notes](https://docs.babelstreet.com/Release/en/rosette-cloud.html) +- [Support](https://babelstreet.my.site.com/support/s/) +- [Binding License: Apache 2.0](LICENSE.txt) -Visit [Rosette API site](https://developer.rosette.com) +## Binding Developer Information +If you are modifying the binding code, please refer to the [developer README](DEVELOPER.md) file. diff --git a/all/pom.xml b/all/pom.xml new file mode 100644 index 0000000000..4308058069 --- /dev/null +++ b/all/pom.xml @@ -0,0 +1,109 @@ + + + + 4.0.0 + + com.basistech.rosette + rosette-api-java-binding + 1.36.1-SNAPSHOT + + rosette-api-all + rosette-api-all + Babel Street Analytics API all modules combined + + + com.basistech + common-api + + + com.basistech.rosette + rosette-api + ${project.version} + + + com.fasterxml.jackson.core + jackson-databind + + + com.basistech + adm-json + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-source + package + + add-source + + + + ../model/target/delombok + ../api/src/main/java + ../annotations/src/main/java + + + + + + + maven-javadoc-plugin + + ../model/target/delombok;../api/src/main/java + + + com.basistech.rosette + rosette-api-annotations + ${project.version} + + + org.projectlombok + lombok + ${lombok.version} + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + shade + + shade + + package + + true + + + com.basistech.* + + + + + + + + + diff --git a/annotations/pom.xml b/annotations/pom.xml new file mode 100644 index 0000000000..4b06d860d1 --- /dev/null +++ b/annotations/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + com.basistech.rosette + rosette-api-java-binding + 1.36.1-SNAPSHOT + + rosette-api-annotations + rosette-api-annotations + Babel Street Analytics API Annotations + + + com.fasterxml.jackson.core + jackson-annotations + provided + + + com.fasterxml.jackson.core + jackson-databind + provided + + + com.squareup + javapoet + ${java-poet.version} + provided + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + -proc:none + + + + + diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ResponseMixin.java b/annotations/src/main/java/com/basistech/rosette/annotations/JacksonMixin.java similarity index 61% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/ResponseMixin.java rename to annotations/src/main/java/com/basistech/rosette/annotations/JacksonMixin.java index 70923ba6df..a6638d2e61 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ResponseMixin.java +++ b/annotations/src/main/java/com/basistech/rosette/annotations/JacksonMixin.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,14 +14,14 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.annotations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; -public class ResponseMixin extends BaseMixin { - @JsonCreator - public ResponseMixin(@JsonProperty("requestId") String requestId) { - // - } +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.TYPE) +public @interface JacksonMixin { } diff --git a/annotations/src/main/java/com/basistech/rosette/annotations/JacksonMixinProcessor.java b/annotations/src/main/java/com/basistech/rosette/annotations/JacksonMixinProcessor.java new file mode 100644 index 0000000000..68e67f5588 --- /dev/null +++ b/annotations/src/main/java/com/basistech/rosette/annotations/JacksonMixinProcessor.java @@ -0,0 +1,147 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.annotations; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.squareup.javapoet.AnnotationSpec; +import com.squareup.javapoet.CodeBlock; +import com.squareup.javapoet.JavaFile; +import com.squareup.javapoet.MethodSpec; +import com.squareup.javapoet.TypeSpec; +import lombok.Builder; + +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.ProcessingEnvironment; +import javax.annotation.processing.RoundEnvironment; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.Element; +import javax.lang.model.element.ElementKind; +import javax.lang.model.element.Modifier; +import javax.lang.model.element.TypeElement; +import javax.tools.Diagnostic; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class JacksonMixinProcessor extends AbstractProcessor { + + private static final String PACKAGE_NAME = "com.basistech.rosette.apimodel.jackson"; + private static final String VALUE = "value"; + + private ProcessingEnvironment processingEnvironment; + + @Override + public synchronized void init(ProcessingEnvironment processingEnvironment) { + super.init(processingEnvironment); + this.processingEnvironment = processingEnvironment; + } + + @Override + @SuppressWarnings("java:S3516") // From the Javadoc: "A processor may always return the same boolean value..." + public boolean process(Set annotations, RoundEnvironment roundEnvironment) { + if (roundEnvironment.getElementsAnnotatedWith(JacksonMixin.class).isEmpty()) { + return true; + } + Map addMixinCode = new HashMap<>(); + for (Element element : roundEnvironment.getElementsAnnotatedWith(JacksonMixin.class)) { + if (element.getKind() != ElementKind.CLASS) { + processingEnvironment.getMessager().printMessage(Diagnostic.Kind.ERROR, "Annotation only available to Class"); + continue; + } + TypeElement typeElement = (TypeElement) element; + String elementQualifiedName = typeElement.getQualifiedName().toString(); + String elementSimpleName = typeElement.getSimpleName().toString(); + if (typeElement.getAnnotation(Builder.class) != null) { + TypeSpec.Builder mixinClassBuilder = TypeSpec + .classBuilder(typeElement.getSimpleName().toString() + "Mixin") + .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) + .addAnnotation(AnnotationSpec.builder(JsonTypeName.class) + .addMember(VALUE, "$S", typeElement.getSimpleName()) + .build()) + .addAnnotation(AnnotationSpec.builder(JsonDeserialize.class) + .addMember("builder", CodeBlock.builder() + .add(elementQualifiedName + "." + elementSimpleName + "Builder.class").build()) + .build()) + .addAnnotation(AnnotationSpec.builder(JsonInclude.class) + .addMember(VALUE, CodeBlock.builder() + .add("JsonInclude.Include.NON_NULL").build()) + .build()) + .addType(TypeSpec + .classBuilder(typeElement.getSimpleName().toString() + "MixinBuilder") + .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) + .addAnnotation(AnnotationSpec.builder(JsonPOJOBuilder.class) + .addMember("withPrefix", "$S", "") + .build()).build()); + try { + String packageName = elementQualifiedName.substring(0, elementQualifiedName.lastIndexOf(".")) + + ".jackson"; + JavaFile.builder(packageName, mixinClassBuilder.build()) + .build() + .writeTo(processingEnvironment.getFiler()); + addMixinCode.put(elementQualifiedName + ".class", + packageName + "." + typeElement.getSimpleName().toString() + "Mixin" + ".class"); + addMixinCode.put(elementQualifiedName + "." + elementSimpleName + "Builder.class", + packageName + "." + typeElement.getSimpleName().toString() + + "Mixin." + typeElement.getSimpleName().toString() + "MixinBuilder.class"); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + MethodSpec.Builder methodSpecBuilder = MethodSpec.methodBuilder("addMixins") + .addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) + .addParameter(Module.SetupContext.class, "context"); + for (String key : addMixinCode.keySet()) { + methodSpecBuilder.addStatement(" context.setMixInAnnotations($L, $L)", key, addMixinCode.get(key)); + } + TypeSpec.Builder mixinUtilClassBuilder = TypeSpec + .classBuilder("MixinUtil") + .addModifiers(Modifier.PUBLIC, Modifier.FINAL) + .addAnnotation(AnnotationSpec.builder(SuppressWarnings.class) + .addMember(VALUE, "$S", "PMD") + .build()) + .addMethod(methodSpecBuilder.build()); + try { + JavaFile.builder(PACKAGE_NAME, mixinUtilClassBuilder.build()) + .build() + .writeTo(processingEnvironment.getFiler()); + } catch (IOException e) { + e.printStackTrace(); + } + + return true; + } + + @Override + public Set getSupportedAnnotationTypes() { + return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(JacksonMixin.class.getCanonicalName()))); + } + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latestSupported(); + } +} diff --git a/annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor new file mode 100644 index 0000000000..491672f9d2 --- /dev/null +++ b/annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor @@ -0,0 +1 @@ +com.basistech.rosette.annotations.JacksonMixinProcessor diff --git a/api/pom.xml b/api/pom.xml index f0b449788d..245ac1cdcb 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -1,6 +1,6 @@ - +--> 4.0.0 com.basistech.rosette rosette-api-java-binding - 0.7.100-SNAPSHOT + 1.36.1-SNAPSHOT rosette-api rosette-api - bundle - Rosette API Communications + Babel Street Analytics API Communications - 3.10.2 + false - - com.basistech - common-api - + + com.basistech + common-api + + + com.basistech.rosette + rosette-api-common + ${project.version} + com.basistech.rosette rosette-api-model @@ -48,93 +51,73 @@ com.fasterxml.jackson.core jackson-databind + - junit - junit + commons-codec + commons-codec + ${commons-codec.version} - org.mock-server - mockserver-client-java - ${mockserver-version} - test + org.apache.httpcomponents + httpclient + ${bt-httpclient-version} + + + commons-codec + commons-codec + + - org.mock-server - mockserver-core - ${mockserver-version} - test + org.apache.httpcomponents + httpmime + ${bt-httpmime-version} + + + org.apache.httpcomponents + httpclient + + - com.google.guava - guava + org.slf4j + slf4j-api + + + org.junit.jupiter + junit-jupiter + ${junit.version} test - commons-io - commons-io - 2.4 - test + org.mock-server + mockserver-junit-jupiter-no-dependencies + ${mockserver.version} + test + + + commons-io + commons-io + test - - - org.apache.felix - maven-bundle-plugin - - - org.codehaus.mojo - build-helper-maven-plugin - 1.5 - - - reserve-network-port - - reserve-network-port - - initialize - - - mockServerClient.port - - - - - + - org.mock-server - mockserver-maven-plugin - ${mockserver-version} - - ${mockServerClient.port} - WARN - - - - process-test-classes - process-test-classes - - start - - - - verify - verify - - stop - - - + org.apache.maven.plugins + maven-surefire-plugin - - - src/test/resources + + + src/main/resources - **/*.property + version.properties true - + + + src/test/resources diff --git a/api/src/main/java/com/basistech/rosette/api/HttpRosetteAPI.java b/api/src/main/java/com/basistech/rosette/api/HttpRosetteAPI.java new file mode 100644 index 0000000000..b0e997b905 --- /dev/null +++ b/api/src/main/java/com/basistech/rosette/api/HttpRosetteAPI.java @@ -0,0 +1,758 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.api; + +import com.basistech.rosette.RosetteRuntimeException; +import com.basistech.rosette.api.common.AbstractRosetteAPI; +import com.basistech.rosette.apimodel.AdmRequest; +import com.basistech.rosette.apimodel.AdmResponse; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.ErrorResponse; +import com.basistech.rosette.apimodel.InfoResponse; +import com.basistech.rosette.apimodel.PingResponse; +import com.basistech.rosette.apimodel.Request; +import com.basistech.rosette.apimodel.Response; +import com.basistech.rosette.apimodel.SupportedLanguagePairsResponse; +import com.basistech.rosette.apimodel.SupportedLanguagesResponse; +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.basistech.rosette.apimodel.jackson.DocumentRequestMixin; +import com.basistech.rosette.dm.AnnotatedText; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.HttpHeaders; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.AbstractHttpEntity; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.FormBodyPartBuilder; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MIME; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.mime.content.AbstractContentBody; +import org.apache.http.entity.mime.content.ByteArrayBody; +import org.apache.http.entity.mime.content.InputStreamBody; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.message.BasicHeader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Set; +import java.util.concurrent.Future; +import java.util.regex.Pattern; +import java.util.zip.GZIPInputStream; + +import static java.net.HttpURLConnection.HTTP_OK; + +/** + * Access to the Analytics API via HTTP. + */ +public class HttpRosetteAPI extends AbstractRosetteAPI { + + public static final String DEFAULT_URL_BASE = "https://analytics.babelstreet.com/rest/v1"; + public static final String SERVICE_NAME = "Babel-Street-Analytics-API"; + public static final String BINDING_VERSION = getVersion(); + public static final String USER_AGENT_STR = SERVICE_NAME + "-Java/" + BINDING_VERSION + "/" + + System.getProperty("java.version"); + private static final Logger LOG = LoggerFactory.getLogger(HttpRosetteAPI.class); + private static final String IO_EXCEPTION_MESSAGE = "IO Exception communicating with the Babel Street Analytics API"; + private static final Pattern TRAILING_SLASHES = Pattern.compile("/+$"); + private String urlBase = DEFAULT_URL_BASE; + private int failureRetries = 1; + private ObjectMapper mapper; + private CloseableHttpClient httpClient; + private List
additionalHeaders; + private int connectionConcurrency = 2; + private boolean closeClientOnClose = true; + + private HttpRosetteAPI() { + // use builder + } + + /** + * Constructs an Analytics API instance using the builder syntax. + * + * @param key Analytics API key. This may be null for use with an on-premise deployment + * of the Analytics API. + * @param urlToCall Alternate Analytics API URL. {@code null} uses the default, public, URL. + * @param failureRetries Number of times to retry in case of failure; {@code null} uses the + * default value: 1. + * @param connectionConcurrency Number of concurrent connections. Pass this if have subscribed + * to a plan that supports enhanced concurrency, or if you are using + * an on-premise deployment of the Analytics API. {@code null} uses the + * default value: 2. + * @throws HttpRosetteAPIException Problem with the API request + */ + HttpRosetteAPI(String key, String urlToCall, Integer failureRetries, + CloseableHttpClient httpClient, List
additionalHeaders, + Integer connectionConcurrency, boolean onlyAcceptKnownFields) throws HttpRosetteAPIException { + urlBase = urlToCall == null ? urlBase : TRAILING_SLASHES.matcher(urlToCall.trim()).replaceAll(""); + if (failureRetries != null && failureRetries >= 1) { + this.failureRetries = failureRetries; + } + + if (connectionConcurrency != null) { + this.connectionConcurrency = connectionConcurrency; + } + + mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, onlyAcceptKnownFields); + if (httpClient == null) { + initClient(key, additionalHeaders); + } else { + this.httpClient = httpClient; + initHeaders(key, additionalHeaders); + closeClientOnClose = false; + } + } + + /** + * Returns the version of the binding. + * + * @return version of the binding + */ + private static String getVersion() { + Properties properties = new Properties(); + try (InputStream ins = HttpRosetteAPI.class.getClassLoader().getResourceAsStream("version.properties")) { + properties.load(ins); + } catch (IOException e) { + // should not happen + } + return properties.getProperty("version", "undefined"); + } + + /** + * Returns a byte array from InputStream. + * + * @param is InputStream + * @return byte array + * @throws IOException + */ + private static byte[] getBytes(InputStream is) throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + byte[] buf = new byte[4096]; + + while (true) { + int r = is.read(buf); + if (r == -1) { + out.flush(); + return out.toByteArray(); + } + out.write(buf, 0, r); + } + } + + @SuppressWarnings("java:HttpClient_must_be_closed") // This library requires keeping the connection open. + private void initClient(String key, List
additionalHeaders) { + HttpClientBuilder builder = HttpClients.custom(); + PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); + cm.setMaxTotal(connectionConcurrency); + cm.setDefaultMaxPerRoute(connectionConcurrency); + builder.setConnectionManager(cm); + + initHeaders(key, additionalHeaders); + builder.setDefaultHeaders(this.additionalHeaders); + + httpClient = builder.build(); + this.additionalHeaders = new ArrayList<>(); + } + + private void initHeaders(String key, List
additionalHeaders) { + this.additionalHeaders = new ArrayList<>(); + this.additionalHeaders.add(new BasicHeader(HttpHeaders.USER_AGENT, USER_AGENT_STR)); + this.additionalHeaders.add(new BasicHeader(HttpHeaders.ACCEPT_ENCODING, "gzip")); + if (key != null) { + this.additionalHeaders.add(new BasicHeader("X-BabelStreetAPI-Key", key)); + this.additionalHeaders.add(new BasicHeader("X-BabelStreetAPI-Binding", "java")); + this.additionalHeaders.add(new BasicHeader("X-BabelStreetAPI-Binding-Version", BINDING_VERSION)); + // TODO: Remove in a future release. + this.additionalHeaders.add(new BasicHeader("X-RosetteAPI-Binding", "java")); + this.additionalHeaders.add(new BasicHeader("X-RosetteAPI-Binding-Version", BINDING_VERSION)); + } + if (additionalHeaders != null) { + this.additionalHeaders.addAll(additionalHeaders); + } + } + + /** + * Return failure retries. + * + * @return failure retries + */ + public int getFailureRetries() { + return failureRetries; + } + + /** + * Gets information about the Analytics API, returns name, version, build number and build time. + * + * @return InfoResponse + * @throws HttpRosetteAPIException Analytics specific exception + * @throws IOException General IO exception + */ + public InfoResponse info() throws IOException, HttpRosetteAPIException { + return sendGetRequest(urlBase + INFO_SERVICE_PATH, InfoResponse.class); + } + + /** + * Pings the Analytics API for a response indicating that the service is available. + * + * @return PingResponse + * @throws HttpRosetteAPIException Analytics specific exception + * @throws IOException General IO exception + */ + public PingResponse ping() throws IOException, HttpRosetteAPIException { + return sendGetRequest(urlBase + PING_SERVICE_PATH, PingResponse.class); + } + + /** + * Gets the set of language and script codes supported by the specified Analytics API endpoint. + * + * @return SupportedLanguagesResponse + * @throws HttpRosetteAPIException for an error returned from the Analytics API. + */ + @Override + public SupportedLanguagesResponse getSupportedLanguages(String endpoint) throws HttpRosetteAPIException { + if (DOC_ENDPOINTS.contains(endpoint) || NAME_DEDUPLICATION_SERVICE_PATH.equals(endpoint)) { + return sendGetRequest(urlBase + endpoint + SUPPORTED_LANGUAGES_SUBPATH, + SupportedLanguagesResponse.class); + } else { + return null; + } + } + + /** + * Gets the set of language, script codes and transliteration scheme pairs supported by the specified Analytics API + * endpoint. + * + * @param endpoint Analytics API endpoint. + * @return SupportedLanguagePairsResponse + * @throws HttpRosetteAPIException for an error returned from the Analytics API. + */ + @Override + public SupportedLanguagePairsResponse getSupportedLanguagePairs(String endpoint) throws HttpRosetteAPIException { + if (NAMES_ENDPOINTS.contains(endpoint) && !NAME_DEDUPLICATION_SERVICE_PATH.equals(endpoint)) { + return sendGetRequest(urlBase + endpoint + SUPPORTED_LANGUAGES_SUBPATH, + SupportedLanguagePairsResponse.class); + } else { + return null; + } + } + + /** + * + * @param endpoint which endpoint. + * @param request the data for the request. + * @param responseClass the Java {@link Class} object for the response object. + * @param the type of the request object. + * @param the type of the response object. + * @return the response. + * @throws HttpRosetteAPIException for an error returned from the Analytics API. + * @throws RosetteRuntimeException for other errors, such as communications problems with HTTP. + */ + @Override + public ResponseType perform(String endpoint, + RequestType request, Class responseClass) throws HttpRosetteAPIException { + try { + return sendPostRequest(request, urlBase + endpoint, responseClass); + } catch (IOException e) { + throw new RosetteRuntimeException(IO_EXCEPTION_MESSAGE, e); + } catch (URISyntaxException e) { + throw new RosetteRuntimeException("Invalid URI", e); + } + } + + /** + * + * @param endpoint which endpoint. + * @param request the data for the request. + * @param the type of the request object. + * @return the response, {@link com.basistech.rosette.dm.AnnotatedText}. + * @throws HttpRosetteAPIException for an error returned from the Analytics API. + * @throws RosetteRuntimeException for other errors, such as communications problems with HTTP. + */ + @Override + public AnnotatedText perform(String endpoint, RequestType request) + throws HttpRosetteAPIException { + try { + return sendPostRequest(request, urlBase + endpoint, AnnotatedText.class); + } catch (IOException e) { + throw new RosetteRuntimeException(IO_EXCEPTION_MESSAGE, e); + } catch (URISyntaxException e) { + throw new RosetteRuntimeException("Invalid URI", e); + } + } + + /** + * This method always throws UnsupportedOperationException. + */ + @Override + public Future + performAsync(String endpoint, RequestType request, Class responseClass) + throws HttpRosetteAPIException { + throw new UnsupportedOperationException("Asynchronous operations are not yet supported"); + } + + /** + * Sends a GET request to Analytics API. + *

+ * Returns a Response. + * + * @param urlStr Analytics API end point. + * @param clazz Response class + * @return Response + * @throws HttpRosetteAPIException + */ + private T sendGetRequest(String urlStr, Class clazz) throws HttpRosetteAPIException { + HttpGet get = new HttpGet(urlStr); + for (Header header : additionalHeaders) { + get.addHeader(header); + } + + try (CloseableHttpResponse httpResponse = httpClient.execute(get)) { + T resp = getResponse(httpResponse, clazz); + responseHeadersToExtendedInformation(resp, httpResponse); + return resp; + } catch (IOException e) { + throw new RosetteRuntimeException(IO_EXCEPTION_MESSAGE, e); + } + } + + /** + * Sends a POST request to Analytics API. + *

+ * Returns a Response. + * + * @param urlStr Analytics API end point. + * @param clazz Response class + * @return Response + * @throws IOException + */ + private T sendPostRequest(Object request, String urlStr, Class clazz) + throws IOException, URISyntaxException { + ObjectWriter writer = mapper.writer().without(JsonGenerator.Feature.AUTO_CLOSE_TARGET); + boolean notPlainText = false; + if (request instanceof DocumentRequest) { + Object rawContent = ((DocumentRequest) request).getRawContent(); + if (rawContent instanceof String) { + writer = writer.withView(DocumentRequestMixin.Views.Content.class); + } else if (rawContent != null) { + notPlainText = true; + } + } else if (request instanceof AdmRequest) { + notPlainText = true; + } + + URIBuilder uriBuilder = new URIBuilder(urlStr); + + if (AnnotatedText.class.isAssignableFrom(clazz) || AdmResponse.class.equals(clazz)) { + //TODO: change output=rosette to Accept: model/vnd.rosette.annotated-data-model header + uriBuilder.addParameter("output", "rosette"); + } + + final ObjectWriter finalWriter = writer; + + HttpPost post = new HttpPost(uriBuilder.build()); + for (Header header : additionalHeaders) { + post.addHeader(header); + } + + //TODO: add compression! + if (notPlainText) { + setupMultipartRequest((Request) request, finalWriter, post); + } else { + setupPlainRequest(request, finalWriter, post); + } + + HttpRosetteAPIException lastException = null; + int numRetries = this.failureRetries; + while (numRetries-- > 0) { + try (CloseableHttpResponse response = httpClient.execute(post)) { + T resp = getResponse(response, clazz); + // TODO: Remove in a future release + Header ridHeader = response.getFirstHeader("X-RosetteAPI-DocumentRequest-Id"); + if (ridHeader != null && ridHeader.getValue() != null) { + LOG.debug("DocumentRequest ID {}", ridHeader.getValue()); + } + Header bsidHeader = response.getFirstHeader("X-BabelStreetAPI-DocumentRequest-Id"); + if (bsidHeader != null && bsidHeader.getValue() != null) { + LOG.debug("DocumentRequest ID {}", bsidHeader.getValue()); + } + if (resp instanceof Response) { + responseHeadersToExtendedInformation((Response)resp, response); + } + return resp; + } catch (HttpRosetteAPIException e) { + // only 5xx errors are worthy retrying, others throw right away + if (e.getHttpStatusCode() < 500) { + throw e; + } else { + lastException = e; + } + } + } + throw lastException; + } + + @SuppressWarnings("unchecked") + private void responseHeadersToExtendedInformation(T resp, HttpResponse response) { + for (Header header : response.getAllHeaders()) { + if (resp.getExtendedInformation() != null + && resp.getExtendedInformation().containsKey(header.getName())) { + Set currentSetValue; + if (resp.getExtendedInformation().get(header.getName()) instanceof Set) { + currentSetValue = (Set) resp.getExtendedInformation().get(header.getName()); + } else { + currentSetValue = new HashSet<>(Collections.singletonList(resp + .getExtendedInformation().get(header.getName()))); + } + currentSetValue.add(header.getValue()); + resp.addExtendedInformation(header.getName(), currentSetValue); + } else { + resp.addExtendedInformation(header.getName(), header.getValue()); + } + } + } + + private void setupPlainRequest(final Object request, final ObjectWriter finalWriter, HttpPost post) { + // just posting json. + post.addHeader("Content-Type", ContentType.APPLICATION_JSON.getMimeType()); + post.setEntity(new AbstractHttpEntity() { + @Override + public boolean isRepeatable() { + return false; + } + + @Override + public long getContentLength() { + return -1; + } + + @Override + public InputStream getContent() throws IOException, UnsupportedOperationException { + throw new UnsupportedOperationException(); + } + + @Override + public void writeTo(OutputStream outstream) throws IOException { + finalWriter.writeValue(outstream, request); + } + + @Override + public boolean isStreaming() { + return false; + } + }); + } + + private void setupMultipartRequest(final Request request, final ObjectWriter finalWriter, HttpPost post) + throws IOException { + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + builder.setMimeSubtype("mixed"); + builder.setMode(HttpMultipartMode.STRICT); + + FormBodyPartBuilder partBuilder = FormBodyPartBuilder.create("request", + // Make sure we're not mislead by someone who puts a charset into the mime type. + new AbstractContentBody(ContentType.parse(ContentType.APPLICATION_JSON.getMimeType())) { + @Override + public String getFilename() { + return null; + } + + @Override + public void writeTo(OutputStream out) throws IOException { + finalWriter.writeValue(out, request); + } + + @Override + public String getTransferEncoding() { + return MIME.ENC_BINARY; + } + + @Override + public long getContentLength() { + return -1; + } + }); + + // Either one of 'name=' or 'Content-ID' would be enough. + partBuilder.setField(MIME.CONTENT_DISPOSITION, "inline;name=\"request\""); + partBuilder.setField("Content-ID", "request"); + + builder.addPart(partBuilder.build()); + + AbstractContentBody insBody; + if (request instanceof DocumentRequest) { + DocumentRequest docReq = (DocumentRequest) request; + insBody = new InputStreamBody(docReq.getContentBytes(), ContentType.parse(docReq.getContentType())); + } else if (request instanceof AdmRequest) { + //TODO: smile? + AdmRequest admReq = (AdmRequest) request; + ObjectWriter writer = mapper.writer().without(JsonGenerator.Feature.AUTO_CLOSE_TARGET); + byte[] json = writer.writeValueAsBytes(admReq.getText()); + insBody = new ByteArrayBody(json, ContentType.parse(AdmRequest.ADM_CONTENT_TYPE), null); + } else { + throw new UnsupportedOperationException("Unsupported request type for multipart processing"); + } + partBuilder = FormBodyPartBuilder.create("content", insBody); + partBuilder.setField(MIME.CONTENT_DISPOSITION, "inline;name=\"content\""); + partBuilder.setField("Content-ID", "content"); + builder.addPart(partBuilder.build()); + builder.setCharset(StandardCharsets.UTF_8); + HttpEntity entity = builder.build(); + post.setEntity(entity); + } + + private String headerValueOrNull(Header header) { + if (header == null) { + return null; + } else { + return header.getValue(); + } + } + + /** + * Gets response from HTTP connection, according to the specified response class; + * throws for an error response. + * + * @param httpResponse the response object + * @param clazz Response class + * @return Response + * @throws IOException + */ + private T getResponse(HttpResponse httpResponse, Class clazz) + throws IOException, HttpRosetteAPIException { + int status = httpResponse.getStatusLine().getStatusCode(); + String encoding = headerValueOrNull(httpResponse.getFirstHeader(HttpHeaders.CONTENT_ENCODING)); + + try ( + InputStream stream = httpResponse.getEntity().getContent(); + InputStream inputStream = "gzip".equalsIgnoreCase(encoding) ? new GZIPInputStream(stream) : stream) { + String ridHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-DocumentRequest-Id")); + String bsidHeader = headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-DocumentRequest-Id")); + if (HTTP_OK != status) { + String ecHeader; + if (headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Code")) != null) { + ecHeader = headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Code")); + } else { + // TODO: Remove in a future release + ecHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-Status-Code")); + } + String emHeader; + if (headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Message")) != null) { + emHeader = headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Message")); + } else { + // TODO: Remove in a future release + emHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-Status-Message")); + } + String responseContentType = headerValueOrNull(httpResponse.getFirstHeader(HttpHeaders.CONTENT_TYPE)); + if ("application/json".equals(responseContentType)) { + ErrorResponse errorResponse = mapper.readValue(inputStream, ErrorResponse.class); + if (ridHeader != null) { + LOG.debug("DocumentRequest ID {}", ridHeader); + } + if (bsidHeader != null) { + LOG.debug("DocumentRequest ID {}", bsidHeader); + } + if (ecHeader != null) { + errorResponse.setCode(ecHeader); + } + if (429 == status) { + String concurrencyMessage = "You have exceeded your plan's limit on concurrent calls. " + + "This could be caused by multiple processes or threads making Analytics API calls " + + "in parallel, or if your httpClient is configured with higher concurrency " + + "than your plan allows."; + if (emHeader == null) { + emHeader = concurrencyMessage; + } else { + emHeader = concurrencyMessage + System.lineSeparator() + emHeader; + } + } + if (emHeader != null) { + errorResponse.setMessage(emHeader); + } + throw new HttpRosetteAPIException(errorResponse, status); + } else { + String errorContent; + if (inputStream != null) { + byte[] content = getBytes(inputStream); + errorContent = new String(content, "utf-8"); + } else { + errorContent = "(no body)"; + } + // something not from us at all + throw new HttpRosetteAPIException("Invalid error response (not json)", + ErrorResponse.builder().code("invalidErrorResponse").message(errorContent).build(), status); + } + } else { + return mapper.readValue(inputStream, clazz); + } + } + } + + /** + * Creates a RosetteRequest which can be sent concurrently through this HttpRosetteAPI + * + * @param endpoint the endpoint to which the request is sent to + * @param request the request object + * @param responseClass Response's class + * @return RosetteRequest which when started sends the predefined request through this http client + */ + public RosetteRequest createRosetteRequest(String endpoint, + Request request, + Class responseClass) { + return new RosetteRequest(this, request, endpoint, responseClass); + } + + + @Override + public void close() throws IOException { + if (closeClientOnClose) { + httpClient.close(); + } + } + + /** + * Builder for HttpRosetteAPI objects. + */ + public static class Builder { + private String key; + private String url; + private Integer failureRetries; + private Integer concurrency; + private CloseableHttpClient httpClient; + private List
additionalHeaders = new ArrayList<>(); + private boolean onlyAcceptKnownFields; + + /** + * Specify the API key. This is required for use with the public API, and + * not necessary with on-premise deployments. + * @param key the key string. + * @return this. + */ + public Builder key(String key) { + this.key = key; + return this; + } + + /** + * Specify the URL for the service. This is required for use with on-premise + * deployments, but should not be called for uses of the public API. + * @param url the URL. + * @return this. + */ + public Builder url(String url) { + this.url = url; + return this; + } + + /** + * How many times to retry 5xx errors from the service. Some 5xx errors + * result from transient infrastructure problems. + * @param failureRetries the number of retries. The default is 1. + * @return this. + */ + public Builder failureRetries(Integer failureRetries) { + this.failureRetries = failureRetries; + return this; + } + + /** + * The maximum number of concurrent requests that may be in progress. + * The default value is 2. For the public API, you should only specify + * a larger value if you have signed up for a plan that allows for + * more concurrency. + * @param concurrency the number of concurrent connections. The default is 2. + * @return this. + */ + public Builder connectionConcurrency(Integer concurrency) { + this.concurrency = concurrency; + return this; + } + + /** + * The Apache HTTP components client object to use for communications with the service. + * If this is not called (or is null), {@link HttpRosetteAPI} will create a client object. + * @param httpClient the client object. + * @return this. + */ + public Builder httpClient(CloseableHttpClient httpClient) { + this.httpClient = httpClient; + return this; + } + + /** + * Specify an additional header value to include in all requests. This can be helpful for + * use with corporate proxies, or as directed by Basis Technology customer engineering. + * @param name the header name. + * @param value the header value. + * @return this. + */ + public Builder additionalHeader(String name, String value) { + additionalHeaders.add(new BasicHeader(name, value)); + return this; + } + + /** + * Only process the response from server if all fields are recognized. If set and a new + * field is returned in the response, exception will be thrown. + * + * @param onlyAcceptKnownFields whether to accept known fields. + * @return this. + */ + public Builder onlyAcceptKnownFields(boolean onlyAcceptKnownFields) { + this.onlyAcceptKnownFields = onlyAcceptKnownFields; + return this; + } + + /** + * Build the API object. + * @return the new API object. + * @throws HttpRosetteAPIException for some error encountered. + */ + public HttpRosetteAPI build() throws HttpRosetteAPIException { + return new HttpRosetteAPI(key, + url, + failureRetries, + httpClient, + additionalHeaders, + concurrency, + onlyAcceptKnownFields); + } + } +} diff --git a/api/src/main/java/com/basistech/rosette/api/HttpRosetteAPIException.java b/api/src/main/java/com/basistech/rosette/api/HttpRosetteAPIException.java new file mode 100644 index 0000000000..584768cd1c --- /dev/null +++ b/api/src/main/java/com/basistech/rosette/api/HttpRosetteAPIException.java @@ -0,0 +1,53 @@ +/* +* Copyright 2016 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.api; + +import com.basistech.rosette.apimodel.CommonRosetteAPIException; +import com.basistech.rosette.apimodel.ErrorResponse; + +/** + * Exception from {@link HttpRosetteAPI} + */ +public class HttpRosetteAPIException extends CommonRosetteAPIException { + private final Integer httpStatusCode; + + public HttpRosetteAPIException(ErrorResponse errorResponse, Integer httpStatusCode) { + super(errorResponse); + this.httpStatusCode = httpStatusCode; + } + + public HttpRosetteAPIException(String message, Throwable cause, ErrorResponse errorResponse, Integer httpStatusCode) { + super(message, cause, errorResponse); + this.httpStatusCode = httpStatusCode; + } + + public HttpRosetteAPIException(String message, ErrorResponse errorResponse, Integer httpStatusCode) { + super(message, errorResponse); + this.httpStatusCode = httpStatusCode; + } + + public HttpRosetteAPIException(Throwable cause, ErrorResponse errorResponse, Integer httpStatusCode) { + super(cause, errorResponse); + this.httpStatusCode = httpStatusCode; + } + + /** + * @return the HTTP status code associated with this error, or {@code null} if there was no HTTP error involved. + */ + public Integer getHttpStatusCode() { + return httpStatusCode; + } +} diff --git a/api/src/main/java/com/basistech/rosette/api/MorphologicalFeature.java b/api/src/main/java/com/basistech/rosette/api/MorphologicalFeature.java new file mode 100644 index 0000000000..243169659e --- /dev/null +++ b/api/src/main/java/com/basistech/rosette/api/MorphologicalFeature.java @@ -0,0 +1,39 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.api; + +/** + * Specify which feature you want Analytics API Morphology endpoint to return. Specify COMPLETE for every feature. + */ +public enum MorphologicalFeature { + COMPLETE("complete"), + LEMMAS("lemmas"), + PARTS_OF_SPEECH("parts-of-speech"), + COMPOUND_COMPONENTS("compound-components"), + HAN_READINGS("han-readings"); + + private String pathLabel; + + MorphologicalFeature(String pathLabel) { + this.pathLabel = pathLabel; + } + + @Override + public String toString() { + return pathLabel; + } +} diff --git a/api/src/main/java/com/basistech/rosette/api/RosetteAPI.java b/api/src/main/java/com/basistech/rosette/api/RosetteAPI.java deleted file mode 100644 index 1a3c0dca96..0000000000 --- a/api/src/main/java/com/basistech/rosette/api/RosetteAPI.java +++ /dev/null @@ -1,1094 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.api; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.zip.GZIPInputStream; -import javax.xml.bind.DatatypeConverter; - -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import com.basistech.rosette.apimodel.CategoriesRequest; -import com.basistech.rosette.apimodel.CategoriesOptions; -import com.basistech.rosette.apimodel.CategoriesResponse; -import com.basistech.rosette.apimodel.EntitiesOptions; -import com.basistech.rosette.apimodel.EntitiesRequest; -import com.basistech.rosette.apimodel.EntitiesResponse; -import com.basistech.rosette.apimodel.ErrorResponse; -import com.basistech.rosette.apimodel.InfoResponse; -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.rosette.apimodel.LanguageInfoResponse; -import com.basistech.rosette.apimodel.LanguageOptions; -import com.basistech.rosette.apimodel.LanguageRequest; -import com.basistech.rosette.apimodel.LanguageResponse; -import com.basistech.rosette.apimodel.LinkedEntitiesRequest; -import com.basistech.rosette.apimodel.LinkedEntitiesResponse; -import com.basistech.rosette.apimodel.MorphologyOptions; -import com.basistech.rosette.apimodel.MorphologyRequest; -import com.basistech.rosette.apimodel.MorphologyResponse; -import com.basistech.rosette.apimodel.NameMatchingRequest; -import com.basistech.rosette.apimodel.NameMatchingResponse; -import com.basistech.rosette.apimodel.NameTranslationRequest; -import com.basistech.rosette.apimodel.NameTranslationResponse; -import com.basistech.rosette.apimodel.PingResponse; -import com.basistech.rosette.apimodel.Response; -import com.basistech.rosette.apimodel.RelationshipOptions; -import com.basistech.rosette.apimodel.RelationshipsRequest; -import com.basistech.rosette.apimodel.RelationshipsResponse; -import com.basistech.rosette.apimodel.SentencesResponse; -import com.basistech.rosette.apimodel.SentimentOptions; -import com.basistech.rosette.apimodel.SentimentRequest; -import com.basistech.rosette.apimodel.SentimentResponse; -import com.basistech.rosette.apimodel.TokensResponse; -import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; - -import static java.net.HttpURLConnection.HTTP_OK; - -/** - * You can use the RosetteAPI to access Rosette API endpoints. - * RosetteAPI is thread-safe and immutable. - */ -public final class RosetteAPI { - public static final String DEFAULT_URL_BASE = "https://api.rosette.com/rest/v1"; - public static final String BINDING_VERSION = "0.7"; - - private static final String LANGUAGE_SERVICE_PATH = "/language"; - private static final String MORPHOLOGY_SERVICE_PATH = "/morphology"; - private static final String ENTITIES_SERVICE_PATH = "/entities"; - private static final String ENTITIES_LINKED_SERVICE_PATH = "/entities/linked"; - private static final String CATEGORIES_SERVICE_PATH = "/categories"; - private static final String RELATIONSHIPS_SERVICE_PATH = "/relationships"; - private static final String SENTIMENT_SERVICE_PATH = "/sentiment"; - private static final String TRANSLATED_NAME_SERVICE_PATH = "/translated-name"; - private static final String MATCHED_NAME_SERVICE_PATH = "/matched-name"; - private static final String TOKENS_SERVICE_PATH = "/tokens"; - private static final String SENTENCES_SERVICE_PATH = "/sentences"; - private static final String INFO_SERVICE_PATH = "/info"; - private static final String VERSION_CHECK_PATH = "/info?clientVersion=" + BINDING_VERSION; - private static final String PING_SERVICE_PATH = "/ping"; - private static final String DEBUG_PARAM_ON = "?debug=true"; - private static final String DEBUG_PARAM_OFF = ""; - - private String key; - private String urlBase = DEFAULT_URL_BASE; - private int failureRetries; - private String debugOutput = ""; - private ObjectMapper mapper; - - /** - * Specify which feature you want Rosette API Morphology endpoint to return. Specify COMPLETE for every feature. - */ - public enum MorphologicalFeature { - COMPLETE("complete"), - LEMMAS("lemmas"), - PARTS_OF_SPEECH("parts-of-speech"), - COMPOUND_COMPONENTS("compound-components"), - HAN_READINGS("han-readings"); - - private String pathLabel; - - MorphologicalFeature(String pathLabel) { - this.pathLabel = pathLabel; - } - - @Override - public String toString() { - return pathLabel; - } - } - - /** - * Constructs a Rosette API instance using an API key. - * - * @param key Rosette API key - * @throws RosetteAPIException Rosette specific exception - * @throws IOException General IO exception - */ - public RosetteAPI(String key) throws IOException, RosetteAPIException { - this.key = key; - this.failureRetries = 1; - mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); - checkVersionCompatibility(); - } - - /** - * Constructs a Rosette API instance using an API key and accepts an - * alternate URL for testing purposes. - * - * @param key Rosette API key - * @param alternateUrl Alternate Rosette API URL - */ - public RosetteAPI(String key, String alternateUrl) { - urlBase = alternateUrl; - if (urlBase.endsWith("/")) { - urlBase = urlBase.substring(0, urlBase.length() - 1); - } - this.key = key; - this.failureRetries = 1; - mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); - } - - /** - * Sets the number of retries in case of failure (default is one). - * @param failureRetries number of retries - */ - public void setFailureRetries(int failureRetries) { - this.failureRetries = failureRetries >= 0 ? failureRetries : 1; - } - - /** - * Sets the Rosette API key. - * - * @param key Rosette API key - */ - public void setAPIKey(String key) { - this.key = key; - } - - /** - * Toggles Rosette API debug output. - * @param flag true for debug output in RosetteAPIException message. - */ - public void setDebugOutput(boolean flag) { - this.debugOutput = flag ? DEBUG_PARAM_ON : DEBUG_PARAM_OFF; - } - - /** - * Gets information about the Rosette API, returns name, version, build number and build time. - * @return InfoResponse - * @throws RosetteAPIException Rosette specific exception - * @throws IOException General IO exception - */ - public InfoResponse info() throws IOException, RosetteAPIException { - return sendGetRequest(urlBase + INFO_SERVICE_PATH, InfoResponse.class); - } - - /** - * Checks binding version compatiblity against the Rosette API server - * @return boolean true if compatible - * @throws IOException - * @throws RosetteAPIException - */ - private boolean checkVersionCompatibility() throws IOException, RosetteAPIException { - try { - InfoResponse response = sendPostRequest("{ body: 'version check' }", urlBase + VERSION_CHECK_PATH, InfoResponse.class); - if (!response.isVersionChecked()) { - ErrorResponse errResponse = new ErrorResponse("0", "incompatibleVersion", - "The server version is not compatible with binding version " + BINDING_VERSION); - throw new RosetteAPIException(200, errResponse); - } - return true; - } catch (RosetteAPIException e) { - throw e; - } - } - - /** - * Pings the Rosette API for a response indicting that the service is available. - * @return PingResponse - * @throws RosetteAPIException Rosette specific exception - * @throws IOException General IO exception - */ - public PingResponse ping() throws IOException, RosetteAPIException { - return sendGetRequest(urlBase + PING_SERVICE_PATH, PingResponse.class); - } - - /** - * Matches 2 names and returns a score in NameMatchingResponse. - * @param request NameMatchingRequest contains 2 names. - * @return NameMatchingResponse - * @throws RosetteAPIException Rosette specific exception - * @throws IOException General IO exception - */ - public NameMatchingResponse matchName(NameMatchingRequest request) throws RosetteAPIException, IOException { - return sendPostRequest(request, urlBase + MATCHED_NAME_SERVICE_PATH, NameMatchingResponse.class); - } - - /** - * Translates a name into the target language specified in NameTranslationRequest. - * @param request NameTranslationRequest contains the name to be translated and the target language. - * @return NameTranslationResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public NameTranslationResponse translateName(NameTranslationRequest request) - throws RosetteAPIException, IOException { - return sendPostRequest(request, urlBase + TRANSLATED_NAME_SERVICE_PATH, NameTranslationResponse.class); - } - - /** - * Performs language identification on data read from an InputStream. Return a list of languages. - * @param inputStream Input stream of file. - * @param options Options to Language API. - * @return An ordered list of detected languages, including language and detection confidence, sorted by - * descending confidence. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LanguageResponse getLanguage(InputStream inputStream, LanguageOptions options) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - LanguageRequest request = new LanguageRequest(encodedStr, null, "text/html", null, options); - return sendPostRequest(request, urlBase + LANGUAGE_SERVICE_PATH, LanguageResponse.class); - } - - /** - * Performs language identification on data read from an URL. Return a list of languages. - * @param url URL for language detection. - * @param options Options to Language API. - * @return An ordered list of detected languages, including language and detection confidence, sorted by - * descending confidence. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LanguageResponse getLanguage(URL url, LanguageOptions options) throws RosetteAPIException, IOException { - LanguageRequest request = new LanguageRequest(null, url.toString(), null, null, options); - return sendPostRequest(request, urlBase + LANGUAGE_SERVICE_PATH, LanguageResponse.class); - } - - /** - * Performs language identification on data read from a string. Return a list of languages. - * @param content String content for language detection. - * @param options Options to Language API. - * @return An ordered list of detected languages, including language and detection confidence, sorted by - * descending confidence. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LanguageResponse getLanguage(String content, LanguageOptions options) - throws RosetteAPIException, IOException { - LanguageRequest request = new LanguageRequest(content, null, null, null, options); - return sendPostRequest(request, urlBase + LANGUAGE_SERVICE_PATH, LanguageResponse.class); - } - - /** - * Returns a list of candidate languages in order of descending confidence from a string. - * @param content String content for language detection. - * @param unit The unit of content. Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as - * one sentence. - * @param options Options to Language API. - * @return An ordered list of detected languages, including language and detection confidence, sorted by - * descending confidence. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LanguageResponse getLanguage(String content, InputUnit unit, LanguageOptions options) - throws RosetteAPIException, IOException { - LanguageRequest request = new LanguageRequest(content, null, null, unit, options); - return sendPostRequest(request, urlBase + LANGUAGE_SERVICE_PATH, LanguageResponse.class); - } - - /** - * Returns morphological analysis of the input file. - * The response may include lemmas, part of speech tags, compound word components, and Han readings. - * Support for specific return types depends on language. - * @param morphologicalFeature Type of morphological analysis to perform. - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null - * @param options Linguistics options - * @return MorphologyResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public MorphologyResponse getMorphology(MorphologicalFeature morphologicalFeature, InputStream inputStream, - LanguageCode language, MorphologyOptions options) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - MorphologyRequest request = new MorphologyRequest(language, encodedStr, null, "text/html", null, options); - return sendPostRequest(request, urlBase + MORPHOLOGY_SERVICE_PATH + "/" + morphologicalFeature.toString(), - MorphologyResponse.class); - } - - /** - * Returns morphological analysis of the URL content. - * The response may include lemmas, part of speech tags, compound word components, and Han readings. - * Support for specific return types depends on language. - * @param morphologicalFeature Type of morphological analysis to perform. - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null - * @param options Linguistics options - * @return MorphologyResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public MorphologyResponse getMorphology(MorphologicalFeature morphologicalFeature, URL url, LanguageCode language, - MorphologyOptions options) throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, null, url.toString(), null, null, options); - return sendPostRequest(request, urlBase + MORPHOLOGY_SERVICE_PATH + "/" + morphologicalFeature.toString(), - MorphologyResponse.class); - } - - /** - * Returns morphological analysis of a string. - * The response may include lemmas, part of speech tags, compound word components, and Han readings. - * Support for specific return types depends on language. - * @param morphologicalFeature Type of morphological analysis to perform. - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null - * @param options Linguistics options - * @return MorphologyResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public MorphologyResponse getMorphology(MorphologicalFeature morphologicalFeature, String content, - LanguageCode language, MorphologyOptions options) - throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, content, null, null, null, options); - return sendPostRequest(request, urlBase + MORPHOLOGY_SERVICE_PATH + "/" + morphologicalFeature.toString(), - - MorphologyResponse.class); - } - - /** - * Returns morphological analysis of a string. - * The response may include lemmas, part of speech tags, compound word components, and Han readings. - * Support for specific return types depends on language. - * @param morphologicalFeature Type of morphological analysis to perform. - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @param options Linguistics options - * @return MorphologyResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public MorphologyResponse getMorphology(MorphologicalFeature morphologicalFeature, String content, - LanguageCode language, InputUnit unit, MorphologyOptions options) - throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, content, null, null, unit, options); - return sendPostRequest(request, urlBase + MORPHOLOGY_SERVICE_PATH + "/" + morphologicalFeature.toString(), - MorphologyResponse.class); - } - - /** - * Returns entities extracted from the input file. - * - * The response is a list of extracted entities. - * Each entity includes chain ID (all instances of the same entity share a chain id), - * mention (entity text in the input), normalized text (the most complete form of this entity that appears in - * the input), count (how many times this entity appears in the input), and the confidence associated with the - * extraction. - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options Entity options. - * @return EntitiesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public EntitiesResponse getEntities(InputStream inputStream, LanguageCode language, EntitiesOptions options) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - EntitiesRequest request = new EntitiesRequest(language, encodedStr, null, "text/html", null, options); - return sendPostRequest(request, urlBase + ENTITIES_SERVICE_PATH, EntitiesResponse.class); - } - - /** - * Returns entities extracted from the URL content. - * - * The response is a list of extracted entities. - * Each entity includes chain ID (all instances of the same entity share a chain id), - * mention (entity text in the input), normalized text (the most complete form of this entity that appears in - * the input), count (how many times this entity appears in the input), and the confidence associated with the - * extraction. - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options Entity options. - * @return EntitiesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public EntitiesResponse getEntities(URL url, LanguageCode language, EntitiesOptions options) - throws RosetteAPIException, IOException { - EntitiesRequest request = new EntitiesRequest(language, null, url.toString(), null, null, options); - return sendPostRequest(request, urlBase + ENTITIES_SERVICE_PATH, EntitiesResponse.class); - } - - /** - * Returns entities extracted from a string. - * - * The response is a list of extracted entities. - * Each entity includes chain ID (all instances of the same entity share a chain id), - * mention (entity text in the input), normalized text (the most complete form of this entity that appears in - * the input), count (how many times this entity appears in the input), and the confidence associated with the - * extraction. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options Entity options. - * @return EntitiesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public EntitiesResponse getEntities(String content, LanguageCode language, EntitiesOptions options) - throws RosetteAPIException, IOException { - EntitiesRequest request = new EntitiesRequest(language, content, null, null, null, options); - return sendPostRequest(request, urlBase + ENTITIES_SERVICE_PATH, EntitiesResponse.class); - } - - /** - * Returns entities extracted from a string. - * - * The response is a list of extracted entities. - * Each entity includes chain ID (all instances of the same entity share a chain id), - * mention (entity text in the input), normalized text (the most complete form of this entity that appears in - * the input), count (how many times this entity appears in the input), and the confidence associated with the - * extraction. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @param options Entity options. - * @return EntitiesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public EntitiesResponse getEntities(String content, LanguageCode language, InputUnit unit, EntitiesOptions options) - throws RosetteAPIException, IOException { - EntitiesRequest request = new EntitiesRequest(language, content, null, null, unit, options); - return sendPostRequest(request, urlBase + ENTITIES_SERVICE_PATH, EntitiesResponse.class); - } - - /** - * Links entities in the input file to entities in the knowledge base (Wikidata). - * The response identifies the entities in the input that have been linked to entities in the knowledge base. - * Each entity includes an entity id (from the knowledge base), a chain id (all instances of the same entity - * share a chain id), the mention (entity text from the input), and confidence associated with the linking. - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return LinkedEntityResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LinkedEntitiesResponse getLinkedEntities(InputStream inputStream, LanguageCode language) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - LinkedEntitiesRequest request = new LinkedEntitiesRequest(language, encodedStr, null, "text/html", null); - return sendPostRequest(request, urlBase + ENTITIES_LINKED_SERVICE_PATH, LinkedEntitiesResponse.class); - } - - /** - * Links entities in the URL content to entities in the knowledge base (Wikidata). - * The response identifies the entities in the input that have been linked to entities in the knowledge base. - * Each entity includes an entity id (from the knowledge base), a chain id (all instances of the same entity - * share a chain id), the mention (entity text from the input), and confidence associated with the linking. - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return LinkedEntityResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LinkedEntitiesResponse getLinkedEntities(URL url, LanguageCode language) - throws RosetteAPIException, IOException { - LinkedEntitiesRequest request = new LinkedEntitiesRequest(language, null, url.toString(), null, null); - return sendPostRequest(request, urlBase + ENTITIES_LINKED_SERVICE_PATH, LinkedEntitiesResponse.class); - } - - /** - * Links entities in a string to entities in the knowledge base (Wikidata). - * The response identifies the entities in the input that have been linked to entities in the knowledge base. - * Each entity includes an entity id (from the knowledge base), a chain id (all instances of the same entity - * share a chain id), the mention (entity text from the input), and confidence associated with the linking. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return LinkedEntityResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LinkedEntitiesResponse getLinkedEntities(String content, LanguageCode language) - throws RosetteAPIException, IOException { - LinkedEntitiesRequest request = new LinkedEntitiesRequest(language, content, null, null, null); - return sendPostRequest(request, urlBase + ENTITIES_LINKED_SERVICE_PATH, LinkedEntitiesResponse.class); - } - - /** - * Links entities in a string to entities in the knowledge base (Wikidata). - * The response identifies the entities in the input that have been linked to entities in the knowledge base. - * Each entity includes an entity id (from the knowledge base), a chain id (all instances of the same entity - * share a chain id), the mention (entity text from the input), and confidence associated with the linking. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @return LinkedEntityResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public LinkedEntitiesResponse getLinkedEntities(String content, LanguageCode language, InputUnit unit) - throws RosetteAPIException, IOException { - LinkedEntitiesRequest request = new LinkedEntitiesRequest(language, content, null, null, unit); - return sendPostRequest(request, urlBase + ENTITIES_LINKED_SERVICE_PATH, LinkedEntitiesResponse.class); - } - - /** - * Returns an ordered list of categories identified in the input file. The categories are Tier 1 contextual - * categories defined in the QAG Taxonomy. - * - * The response is the contextual categories identified in the input. - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options CategoriesOptions. - * @return CategoriesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public CategoriesResponse getCategories(InputStream inputStream, LanguageCode language, CategoriesOptions options) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - CategoriesRequest request = new CategoriesRequest(language, encodedStr, null, "text/html", null, options); - return sendPostRequest(request, urlBase + CATEGORIES_SERVICE_PATH, CategoriesResponse.class); - } - - /** - * Returns an ordered list of categories identified in the URL content. The categories are Tier 1 contextual - * categories defined in the QAG Taxonomy. - * - * The response is the contextual categories identified in the input. - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options CategoriesOptions. - * @return CategoriesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public CategoriesResponse getCategories(URL url, LanguageCode language, CategoriesOptions options) - throws RosetteAPIException, IOException { - CategoriesRequest request = new CategoriesRequest(language, null, url.toString(), null, null, options); - return sendPostRequest(request, urlBase + CATEGORIES_SERVICE_PATH, CategoriesResponse.class); - } - - /** - * Returns an ordered list of categories identified in a string. The categories are Tier 1 contextual - * categories defined in the QAG Taxonomy. - * - * The response is the contextual categories identified in the input. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options CategoriesOptions. - * @return CategoriesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public CategoriesResponse getCategories(String content, LanguageCode language, CategoriesOptions options) - throws RosetteAPIException, IOException { - CategoriesRequest request = new CategoriesRequest(language, content, null, null, null, options); - return sendPostRequest(request, urlBase + CATEGORIES_SERVICE_PATH, CategoriesResponse.class); - } - - /** - * Returns an ordered list of categories identified in a string. The categories are Tier 1 contextual - * categories defined in the QAG Taxonomy. - * - * The response is the contextual categories identified in the input. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @param options CategoriesOptions. - * @return CategoriesResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public CategoriesResponse getCategories(String content, LanguageCode language, InputUnit unit, - CategoriesOptions options) throws RosetteAPIException, IOException { - CategoriesRequest request = new CategoriesRequest(language, content, null, null, unit, options); - return sendPostRequest(request, urlBase + CATEGORIES_SERVICE_PATH, CategoriesResponse.class); - } - - /** - * Returns each relationship extracted from the input. - * - * The response is a list of extracted relationships. A relationship contains - * - * predicate - usually the main verb, property or action that is expressed by the text - * arg1 - usually the subject, agent or main actor of the relationship - * arg2 [optional] - complements the predicate and is usually the object, theme or patient of the relationship - * arg3 [optional] - usually an additional object in ditransitive verbs - * adjuncts [optional] - contain all optional parts of a relationship which are not temporal or locative expressions - * locatives [optional] - usually express the locations the action expressed by the relationship took place - * temporals [ optional] - usually express the time in which the action expressed by the relationship took place - * confidence - a measure of quality of relationship extraction, between 0 - 1 - * - * @param content, String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @param options RelationshipOptions - * @return RelationshipsResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request - * @throws IOException - If there is a commuincation or JSON serialization/deserialization error - */ - public RelationshipsResponse getRelationships(String content, LanguageCode language, InputUnit unit, - RelationshipOptions options) throws RosetteAPIException, IOException { - RelationshipsRequest request = new RelationshipsRequest(language, content, null, null, unit, options); - return sendPostRequest(request, urlBase + RELATIONSHIPS_SERVICE_PATH, RelationshipsResponse.class); - } - - /** - * Returns each relationship extracted from the input. - * - * The response is a list of extracted relationships. A relationship contains - * - * predicate - usually the main verb, property or action that is expressed by the text - * arg1 - usually the subject, agent or main actor of the relationship - * arg2 [optional] - complements the predicate and is usually the object, theme or patient of the relationship - * arg3 [optional] - usually an additional object in ditransitive verbs - * adjuncts [optional] - contain all optional parts of a relationship which are not temporal or locative expressions - * locatives [optional] - usually express the locations the action expressed by the relationship took place - * temporals [ optional] - usually express the time in which the action expressed by the relationship took place - * confidence - a measure of quality of relationship extraction, between 0 - 1 - * - * @param content, String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options RelationshipOptions - * @return RelationshipsResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request - * @throws IOException - If there is a commuincation or JSON serialization/deserialization error - */ - public RelationshipsResponse getRelationships(String content, LanguageCode language, RelationshipOptions options) - throws RosetteAPIException, IOException { - RelationshipsRequest request = new RelationshipsRequest(language, content, null, null, null, options); - return sendPostRequest(request, urlBase + RELATIONSHIPS_SERVICE_PATH, RelationshipsResponse.class); - } - - /** - * Returns each relationship extracted from the input. - * - * The response is a list of extracted relationships. A relationship contains - * - * predicate - usually the main verb, property or action that is expressed by the text - * arg1 - usually the subject, agent or main actor of the relationship - * arg2 [optional] - complements the predicate and is usually the object, theme or patient of the relationship - * arg3 [optional] - usually an additional object in ditransitive verbs - * adjuncts [optional] - contain all optional parts of a relationship which are not temporal or locative expressions - * locatives [optional] - usually express the locations the action expressed by the relationship took place - * temporals [ optional] - usually express the time in which the action expressed by the relationship took place - * confidence - a measure of quality of relationship extraction, between 0 - 1 - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options RelationshipOptions - * @return RelationshipsResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request - * @throws IOException - If there is a commuincation or JSON serialization/deserialization error - */ - public RelationshipsResponse getRelationships(InputStream inputStream, LanguageCode language, RelationshipOptions options) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - RelationshipsRequest request = new RelationshipsRequest(language, encodedStr, null, "text/html", null, options); - return sendPostRequest(request, urlBase + RELATIONSHIPS_SERVICE_PATH, RelationshipsResponse.class); - } - - /** - * Returns each relationship extracted from the input. - * - * The response is a list of extracted relationships. A relationship contains - * - * predicate - usually the main verb, property or action that is expressed by the text - * arg1 - usually the subject, agent or main actor of the relationship - * arg2 [optional] - complements the predicate and is usually the object, theme or patient of the relationship - * arg3 [optional] - usually an additional object in ditransitive verbs - * adjuncts [optional] - contain all optional parts of a relationship which are not temporal or locative expressions - * locatives [optional] - usually express the locations the action expressed by the relationship took place - * temporals [ optional] - usually express the time in which the action expressed by the relationship took place - * confidence - a measure of quality of relationship extraction, between 0 - 1 - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options RelationshipOptions - * @return RelationshipsResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request - * @throws IOException - If there is a commuincation or JSON serialization/deserialization error - */ - public RelationshipsResponse getRelationships(URL url, LanguageCode language, RelationshipOptions options) - throws RosetteAPIException, IOException { - RelationshipsRequest request = new RelationshipsRequest(language, null, url.toString(), null, null, options); - return sendPostRequest(request, urlBase + RELATIONSHIPS_SERVICE_PATH, RelationshipsResponse.class); - } - - /** - * Analyzes the positive and negative sentiment expressed by the input. - * - * The response contains sentiment analysis results. - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options SentimentOptions. - * @return SentimentResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentimentResponse getSentiment(InputStream inputStream, LanguageCode language, SentimentOptions options) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - SentimentRequest request = new SentimentRequest(language, encodedStr, null, "text/html", null, options); - return sendPostRequest(request, urlBase + SENTIMENT_SERVICE_PATH, SentimentResponse.class); - } - - /** - * Analyzes the positive and negative sentiment expressed by the input. - * - * The response contains sentiment analysis results. - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options SentimentOptions. - * @return SentimentResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentimentResponse getSentiment(URL url, LanguageCode language, SentimentOptions options) - throws RosetteAPIException, IOException { - SentimentRequest request = new SentimentRequest(language, null, url.toString(), null, null, options); - return sendPostRequest(request, urlBase + SENTIMENT_SERVICE_PATH, SentimentResponse.class); - } - - /** - * Analyzes the positive and negative sentiment expressed by the input. - * - * The response contains sentiment analysis results. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param options SentimentOptions. - * @return SentimentResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentimentResponse getSentiment(String content, LanguageCode language, SentimentOptions options) - throws RosetteAPIException, IOException { - SentimentRequest request = new SentimentRequest(language, content, null, null, null, options); - return sendPostRequest(request, urlBase + SENTIMENT_SERVICE_PATH, SentimentResponse.class); - } - - /** - * Analyzes the positive and negative sentiment expressed by the input. - * - * The response contains sentiment analysis results. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @param options SentimentOptions. - * @return SentimentResponse - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentimentResponse getSentiment(String content, LanguageCode language, InputUnit unit, - SentimentOptions options) throws RosetteAPIException, IOException { - SentimentRequest request = new SentimentRequest(language, content, null, null, unit, options); - return sendPostRequest(request, urlBase + SENTIMENT_SERVICE_PATH, SentimentResponse.class); - } - - /** - * Divides the input into tokens. - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return The response contains a list of tokens. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public TokensResponse getTokens(InputStream inputStream, LanguageCode language) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - MorphologyRequest request = new MorphologyRequest(language, encodedStr, null, "text/html", null, null); - return sendPostRequest(request, urlBase + TOKENS_SERVICE_PATH, TokensResponse.class); - } - - /** - * Divides the input into tokens. - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return The response contains a list of tokens. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public TokensResponse getTokens(URL url, LanguageCode language) throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, null, url.toString(), null, null, null); - return sendPostRequest(request, urlBase + TOKENS_SERVICE_PATH, TokensResponse.class); - } - - /** - * Divides the input into tokens. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return The response contains a list of tokens. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public TokensResponse getTokens(String content, LanguageCode language) throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, content, null, null, null, null); - return sendPostRequest(request, urlBase + TOKENS_SERVICE_PATH, TokensResponse.class); - } - - /** - * Divides the input into tokens. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @return The response contains a list of tokens. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public TokensResponse getTokens(String content, LanguageCode language, InputUnit unit) - throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, content, null, null, unit, null); - return sendPostRequest(request, urlBase + TOKENS_SERVICE_PATH, TokensResponse.class); - } - - /** - * Divides the input into sentences. - * - * @param inputStream Input stream of file. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return The response contains a list of sentences. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentencesResponse getSentences(InputStream inputStream, LanguageCode language) - throws RosetteAPIException, IOException { - String encodedStr = DatatypeConverter.printBase64Binary(getBytes(inputStream)); - MorphologyRequest request = new MorphologyRequest(language, encodedStr, null, "text/html", null, null); - return sendPostRequest(request, urlBase + SENTENCES_SERVICE_PATH, SentencesResponse.class); - } - - /** - * Divides the input into sentences. - * - * @param url URL containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return The response contains a list of sentences. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentencesResponse getSentences(URL url, LanguageCode language) throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, null, url.toString(), null, null, null); - return sendPostRequest(request, urlBase + SENTENCES_SERVICE_PATH, SentencesResponse.class); - } - - /** - * Divides the input into sentences. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @return The response contains a list of sentences. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentencesResponse getSentences(String content, LanguageCode language) - throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, content, null, null, null, null); - return sendPostRequest(request, urlBase + SENTENCES_SERVICE_PATH, SentencesResponse.class); - } - - /** - * Divides the input into sentences. - * - * @param content String containing the data. - * @param language Language of input if known (see {@link LanguageCode}), or null. - * @param unit The unit of content (see {@link com.basistech.rosette.apimodel.InputUnit}). - * Can be SENTENCE or DOC. If SENTENCE, the entire content is treated as one sentence. - * @return The response contains a list of sentences. - * @throws RosetteAPIException - If there is a problem with the Rosette API request. - * @throws IOException - If there is a communication or JSON serialization/deserialization error. - */ - public SentencesResponse getSentences(String content, LanguageCode language, InputUnit unit) - throws RosetteAPIException, IOException { - MorphologyRequest request = new MorphologyRequest(language, content, null, null, unit, null); - return sendPostRequest(request, urlBase + SENTENCES_SERVICE_PATH, SentencesResponse.class); - } - - /** - * Provides information on the language endpoint - * - * @return {@link com.basistech.rosette.apimodel.LanguageInfoResponse LanguageInfoResponse} - * @throws RosetteAPIException Rosette specific exception - * @throws IOException General IO exception - */ - public LanguageInfoResponse getLanguageInfo() throws RosetteAPIException, IOException { - return sendGetRequest(urlBase + LANGUAGE_SERVICE_PATH + INFO_SERVICE_PATH, LanguageInfoResponse.class); - } - - /** - * Provides information on Rosette API - * - * @return {@link com.basistech.rosette.apimodel.InfoResponse InfoResponse} - * @throws RosetteAPIException Rosette specific exception - * @throws IOException General IO exception - */ - public InfoResponse getInfo() throws RosetteAPIException, IOException { - return sendGetRequest(urlBase + INFO_SERVICE_PATH, InfoResponse.class); - } - - /** - * Sends a GET request to Rosette API. - * - * Returns a Response. - * - * @param urlStr Rosette API end point. - * @param clazz Response class - * @return Response - * @throws IOException - * @throws RosetteAPIException - */ - private T sendGetRequest(String urlStr, Class clazz) - throws IOException, RosetteAPIException { - HttpURLConnection httpUrlConnection = openHttpURLConnection(urlStr); - httpUrlConnection.setRequestMethod("GET"); - return clazz.cast(getResponse(httpUrlConnection, clazz)); - } - - /** - * Sends a POST request to Rosette API. - * - * Returns a Response. - * - * @param urlStr Rosette API end point. - * @param clazz Response class - * @return Response - * @throws RosetteAPIException - * @throws IOException - */ - private T sendPostRequest(Object request, String urlStr, Class clazz) - throws RosetteAPIException, IOException { - RosetteAPIException lastException = null; - int numRetries = this.failureRetries; - while (numRetries-- > 0) { - HttpURLConnection httpUrlConnection = openHttpURLConnection(urlStr); - httpUrlConnection.setRequestMethod("POST"); - try (OutputStream os = httpUrlConnection.getOutputStream()) { - mapper.writeValue(os, request); - } - try { - return clazz.cast(getResponse(httpUrlConnection, clazz)); - } catch (RosetteAPIException e) { - // only 5xx errors are worthy retrying, others throw right away - if (e.getHttpStatusCode() < 500) { - throw e; - } else { - lastException = e; - } - } - } - throw lastException; - } - - /** - * Opens HTTP connection. - * Returns HTTP connection. - * @param urlStr Rosette API end point. - * @return HttpURLConnection - * @throws IOException - */ - private HttpURLConnection openHttpURLConnection(String urlStr) throws IOException { - URL url = new URL(urlStr + debugOutput); - HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection(); - httpUrlConnection.setDoOutput(true); - if (key == null) { - key = ""; - } - httpUrlConnection.setRequestProperty("user_key", key); - httpUrlConnection.setRequestProperty("Content-Type", "application/json"); - httpUrlConnection.setRequestProperty("Accept-Encoding", "gzip"); - return httpUrlConnection; - } - - /** - * Gets response from HTTP connection, according to the specified response class. - * - * @param httpUrlConnection - * @param clazz Response class - * @return Response - * @throws IOException - * @throws RosetteAPIException - */ - private Response getResponse(HttpURLConnection httpUrlConnection, Class clazz) - throws IOException, RosetteAPIException { - int status = httpUrlConnection.getResponseCode(); - String encoding = httpUrlConnection.getContentEncoding(); - try ( - InputStream stream = status != HTTP_OK - ? httpUrlConnection.getErrorStream() : httpUrlConnection.getInputStream(); - InputStream inputStream = "gzip".equalsIgnoreCase(encoding) ? new GZIPInputStream(stream) : stream - ) { - if (HTTP_OK != status) { - String responseContentType = httpUrlConnection.getHeaderField("Content-Type"); - if ("application/json".equals(responseContentType)) { - ErrorResponse errorResponse = mapper.readValue(inputStream, ErrorResponse.class); - throw new RosetteAPIException(status, errorResponse); - } else { - String errorContent; - if (inputStream != null) { - byte[] content = getBytes(inputStream); - errorContent = new String(content, "utf-8"); - } else { - errorContent = "(no body)"; - } - // something not from us at al - throw new RosetteAPIException(status, new ErrorResponse("", "invalidErrorResponse", errorContent)); - } - } else { - return mapper.readValue(inputStream, clazz); - } - } - } - - /** - * Returns a byte array from InputStream. - * - * @param is InputStream - * @return byte array - * @throws IOException - */ - private static byte[] getBytes(InputStream is) throws IOException { - int len; - int size = 1024; - byte[] buf; - - try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) { - buf = new byte[size]; - while ((len = is.read(buf, 0, size)) != -1) { - bos.write(buf, 0, len); - } - buf = bos.toByteArray(); - return buf; - } - } -} diff --git a/api/src/main/java/com/basistech/rosette/api/RosetteAPIException.java b/api/src/main/java/com/basistech/rosette/api/RosetteAPIException.java deleted file mode 100644 index 32e4205fc4..0000000000 --- a/api/src/main/java/com/basistech/rosette/api/RosetteAPIException.java +++ /dev/null @@ -1,57 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.api; - -import com.basistech.rosette.apimodel.ErrorResponse; - -public class RosetteAPIException extends Exception { - - private final int httpStatusCode; - private final String requestId; - private final String code; - private final String message; - - public RosetteAPIException(int httpStatusCode, ErrorResponse response) { - super(); - this.httpStatusCode = httpStatusCode; - code = response.getCode(); - message = response.getMessage(); - requestId = response.getRequestId(); - } - - public String getCode() { - return code; - } - - @Override - public String getMessage() { - return message; - } - - public String getRequestId() { - return requestId; - } - - public String toString() { - return this.getClass().getSimpleName() + " http status code: " + httpStatusCode - + ", requestId: " + requestId + ", code: " + code + ", message: " + message; - } - - public int getHttpStatusCode() { - return httpStatusCode; - } -} diff --git a/api/src/main/java/com/basistech/rosette/api/RosetteRequest.java b/api/src/main/java/com/basistech/rosette/api/RosetteRequest.java new file mode 100644 index 0000000000..bf2f5598fd --- /dev/null +++ b/api/src/main/java/com/basistech/rosette/api/RosetteRequest.java @@ -0,0 +1,55 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.api; + +import com.basistech.rosette.apimodel.Request; +import com.basistech.rosette.apimodel.Response; + +import java.util.concurrent.Callable; + +/** + * This class encompasses a future request that can be sent concurrently + */ +public class RosetteRequest implements Callable { + private final HttpRosetteAPI api; + private final Request request; + private final String servicePath; + private final Class responseClass; + private Response response; + + RosetteRequest(HttpRosetteAPI api, + Request request, + String servicePath, Class responseClass) { + this.api = api; + this.request = request; + this.servicePath = servicePath; + this.responseClass = responseClass; + } + + @Override + public Response call() { + try { + this.response = api.perform(this.servicePath, this.request, this.responseClass); + } catch (HttpRosetteAPIException ex) { + this.response = ex.getErrorResponse(); + } + return this.response; + } + + public Response getResponse() { + return this.response; + } +} diff --git a/api/src/main/resources/version.properties b/api/src/main/resources/version.properties new file mode 100644 index 0000000000..f6e24a6433 --- /dev/null +++ b/api/src/main/resources/version.properties @@ -0,0 +1 @@ +version: ${project.version} \ No newline at end of file diff --git a/api/src/test/java/com/basistech/rosette/api/AbstractTest.java b/api/src/test/java/com/basistech/rosette/api/AbstractTest.java deleted file mode 100644 index e9bb443645..0000000000 --- a/api/src/test/java/com/basistech/rosette/api/AbstractTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.api; - -import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Charsets; -import com.google.common.io.Resources; -import org.junit.Assert; -import org.junit.BeforeClass; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.zip.GZIPOutputStream; - -public abstract class AbstractTest extends Assert { - protected static int serverPort; - protected static ObjectMapper mapper; - - @BeforeClass - public static void before() throws IOException { - URL url = Resources.getResource("MockServerClientPort.property"); - String clientPort = Resources.toString(url, Charsets.UTF_8); - serverPort = Integer.parseInt(clientPort); - mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); - } - - protected static byte[] gzip(String text) throws IOException { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try (GZIPOutputStream out = new GZIPOutputStream(baos)) { - out.write(text.getBytes(StandardCharsets.UTF_8)); - } - return baos.toByteArray(); - } - - -} diff --git a/api/src/test/java/com/basistech/rosette/api/BasicTest.java b/api/src/test/java/com/basistech/rosette/api/BasicTest.java new file mode 100644 index 0000000000..b06047a038 --- /dev/null +++ b/api/src/test/java/com/basistech/rosette/api/BasicTest.java @@ -0,0 +1,309 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.api; + +import com.basistech.rosette.apimodel.AdmRequest; +import com.basistech.rosette.apimodel.Response; +import com.basistech.rosette.apimodel.SupportedLanguage; +import com.basistech.rosette.apimodel.SupportedLanguagePair; +import com.basistech.rosette.apimodel.SupportedLanguagePairsResponse; +import com.basistech.rosette.apimodel.SupportedLanguagesResponse; +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.basistech.rosette.dm.AnnotatedText; + +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; +import com.basistech.util.TextDomain; +import com.basistech.util.TransliterationScheme; + +import org.apache.commons.io.IOUtils; +import org.apache.http.HttpHeaders; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockserver.client.MockServerClient; +import org.mockserver.junit.jupiter.MockServerExtension; +import org.mockserver.model.Delay; +import org.mockserver.model.HttpRequest; +import org.mockserver.model.HttpResponse; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.ENTITIES_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_SIMILARITY_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_TRANSLATION_SERVICE_PATH; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@ExtendWith(MockServerExtension.class) +class BasicTest { + private MockServerClient mockServer; + private HttpRosetteAPI api; + + @BeforeEach + public void setup(MockServerClient mockServer) { + this.mockServer = mockServer; + } + + // an indirect way to show that connection pooling works + // with concurrent connections = 1, the time to complete requests becomes serial + // so: run several requests in threads, assert that they're executed serially + // then set concurrent connections = 5, + // run several requests again, showing they're executed in parallel + @Test + void testMultipleConnections() throws InterruptedException { + int delayTime = 3; + int numConnections = 5; + + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/info") + .withHeader(HttpHeaders.USER_AGENT, HttpRosetteAPI.USER_AGENT_STR)) + .respond(HttpResponse.response() + .withHeader("Content-Type", "application/json") + .withBody("{\"message\":\"Rosette API at your service\",\"time\":1461788498633}", StandardCharsets.UTF_8) + .withStatusCode(200) + .withDelay(new Delay(SECONDS, delayTime))); + + // "before" case - send off (numConnections) requests, expect them to run serially + api = new HttpRosetteAPI.Builder().connectionConcurrency(1) + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())).build(); + + Date d1 = new Date(); + + List pingers = new ArrayList<>(); + for (int i = 0; i < numConnections; i++) { + pingers.add(new ApiPinger(api)); + pingers.get(i).start(); + } + + for (int i = 0; i < numConnections; i++) { + pingers.get(i).join(); + } + + Date d2 = new Date(); + + assertTrue(d2.getTime() - d1.getTime() > delayTime * numConnections * 1000); // at least as long as the delay in the request + + api = new HttpRosetteAPI.Builder().connectionConcurrency(numConnections) + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + d1 = new Date(); + + pingers = new ArrayList<>(); + for (int i = 0; i < numConnections; i++) { + pingers.add(new ApiPinger(api)); + pingers.get(i).start(); + } + + for (int i = 0; i < numConnections; i++) { + pingers.get(i).join(); + } + + d2 = new Date(); + + assertTrue(d2.getTime() - d1.getTime() < delayTime * numConnections * 1000); // less than (numConnections) serial requests + assertTrue(d2.getTime() - d1.getTime() > delayTime * 1000); // but at least as long as one + } + @Test + void testHeaders() throws Exception { + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/ping") + .withHeader("X-Foo", "Bar") + .withHeader(HttpHeaders.USER_AGENT, HttpRosetteAPI.USER_AGENT_STR)) + .respond(HttpResponse.response() + .withHeader("Content-Type", "application/json") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withStatusCode(200) + .withBody("{\"message\":\"Rosette API at your service\",\"time\":1461788498633}", StandardCharsets.UTF_8)); + + api = new HttpRosetteAPI.Builder() + .key("foo-key") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .additionalHeader("X-Foo", "Bar") + .build(); + var resp = api.ping(); + assertEquals("5", resp.getExtendedInformation().get("X-BabelStreetAPI-Concurrency")); + } + + @Test + void testAdm() throws Exception { + try (InputStream reqIns = getClass().getResourceAsStream("/adm-req.json"); + InputStream respIns = getClass().getResourceAsStream("/adm-resp.json")) { + assertNotNull(respIns); + mockServer.when(HttpRequest.request() + .withMethod("POST") + .withPath("/rest/v1/entities")) + .respond(HttpResponse.response() + .withStatusCode(200) + .withHeader("Content-Type", "application/json") + .withBody(IOUtils.toString(respIns, StandardCharsets.UTF_8))); + api = new HttpRosetteAPI.Builder() + .key("foo-key") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + AnnotatedText testData = ApiModelMixinModule.setupObjectMapper( + new ObjectMapper()).readValue(reqIns, AnnotatedText.class); + AnnotatedText resp = api.perform(ENTITIES_SERVICE_PATH, + AdmRequest.builder().text(testData).build()); + assertEquals("Q100", resp.getEntities().get(0).getEntityId()); + } + } + + @Test + void testExtendedInfo() throws Exception { + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/ping")) + .respond(HttpResponse.response() + .withStatusCode(200) + .withHeader("Content-Type", "application/json") + .withHeader("X-Foo", "Bar") + .withHeader("X-FooMulti", "Bar1", "Bar2") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withBody("{\"message\":\"Rosette API at your service\",\"time\":1461788498633}", StandardCharsets.UTF_8)); + api = new HttpRosetteAPI.Builder() + .key("foo-key") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + Response resp = api.ping(); + assertEquals("Bar", resp.getExtendedInformation().get("X-Foo")); + Set foos = (Set)resp.getExtendedInformation().get("X-FooMulti"); + assertTrue(foos.contains("Bar1")); + assertTrue(foos.contains("Bar2")); + } + + private static class ApiPinger extends Thread { + HttpRosetteAPI api1; + + ApiPinger(HttpRosetteAPI api) { + this.api1 = api; + } + + @Override + public void run() { + try { + api1.info(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + @Test + void testLanguageSupport() throws Exception { + try (InputStream respIns = getClass().getResourceAsStream("/supported-languages.json")) { + assertNotNull(respIns); + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/entities/supported-languages")) + .respond(HttpResponse.response() + .withStatusCode(200) + .withHeader("Content-Type", "application/json") + .withBody(IOUtils.toString(respIns, StandardCharsets.UTF_8))); + api = new HttpRosetteAPI.Builder() + .key("foo-key") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + SupportedLanguagesResponse resp = api.getSupportedLanguages(ENTITIES_SERVICE_PATH); + assertEquals(2, resp.getSupportedLanguages().size()); + assertTrue(resp.getSupportedLanguages().contains(SupportedLanguage.builder() + .language(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .licensed(Boolean.TRUE) + .build())); + assertTrue(resp.getSupportedLanguages().contains(SupportedLanguage.builder() + .language(LanguageCode.JAPANESE) + .script(ISO15924.Kana) + .licensed(Boolean.FALSE) + .build())); + } + } + + @Test + void testNameSimilarityLanguageSupport() throws Exception { + try (InputStream respIns = getClass().getResourceAsStream("/name-similarity-supported-languages.json")) { + assertNotNull(respIns); + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/name-similarity/supported-languages")) + .respond(HttpResponse.response() + .withStatusCode(200) + .withHeader("Content-Type", "application/json") + .withBody(IOUtils.toString(respIns, StandardCharsets.UTF_8))); + api = new HttpRosetteAPI.Builder() + .key("foo-key") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + + SupportedLanguagePairsResponse resp = api.getSupportedLanguagePairs(NAME_SIMILARITY_SERVICE_PATH); + assertEquals(2, resp.getSupportedLanguagePairs().size()); + assertTrue(resp.getSupportedLanguagePairs().contains(SupportedLanguagePair.builder() + .source(new TextDomain(ISO15924.Latn, LanguageCode.ENGLISH, null)) + .target(new TextDomain(ISO15924.Latn, LanguageCode.ENGLISH, null)) + .licensed(Boolean.TRUE) + .build())); + assertTrue(resp.getSupportedLanguagePairs().contains(SupportedLanguagePair.builder() + .source(new TextDomain(ISO15924.Arab, LanguageCode.ARABIC, null)) + .target(new TextDomain(ISO15924.Arab, LanguageCode.ARABIC, null)) + .licensed(Boolean.TRUE) + .build())); + } + } + + @Test + void testNameTranslationLanguageSupport() throws Exception { + try (InputStream respIns = getClass().getResourceAsStream("/name-translation-supported-languages.json")) { + assertNotNull(respIns); + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/name-translation/supported-languages")) + .respond(HttpResponse.response() + .withStatusCode(200) + .withHeader("Content-Type", "application/json") + .withBody(IOUtils.toString(respIns, StandardCharsets.UTF_8))); + api = new HttpRosetteAPI.Builder() + .key("foo-key") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + + SupportedLanguagePairsResponse resp = api.getSupportedLanguagePairs(NAME_TRANSLATION_SERVICE_PATH); + assertEquals(2, resp.getSupportedLanguagePairs().size()); + assertTrue(resp.getSupportedLanguagePairs().contains(SupportedLanguagePair.builder() + .source(new TextDomain(ISO15924.Latn, LanguageCode.ENGLISH, TransliterationScheme.NATIVE)) + .target(new TextDomain(ISO15924.Latn, LanguageCode.ENGLISH, TransliterationScheme.IC)) + .licensed(Boolean.TRUE) + .build())); + assertTrue(resp.getSupportedLanguagePairs().contains(SupportedLanguagePair.builder() + .source(new TextDomain(ISO15924.Arab, LanguageCode.ARABIC, TransliterationScheme.NATIVE)) + .target(new TextDomain(ISO15924.Arab, LanguageCode.ARABIC, TransliterationScheme.NATIVE)) + .licensed(Boolean.TRUE) + .build())); + } + } +} diff --git a/api/src/test/java/com/basistech/rosette/api/DevRosetteAPITest.java b/api/src/test/java/com/basistech/rosette/api/DevRosetteAPITest.java new file mode 100644 index 0000000000..16c6cb5ca7 --- /dev/null +++ b/api/src/test/java/com/basistech/rosette/api/DevRosetteAPITest.java @@ -0,0 +1,80 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.api; + +import com.basistech.rosette.api.common.AbstractRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.MorphologyOptions; +import com.basistech.rosette.apimodel.Request; +import com.basistech.rosette.apimodel.TokensResponse; +import com.basistech.util.LanguageCode; +import com.basistech.util.PartOfSpeechTagSet; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Test that is usually ignored, used to debug against a live service. + */ +@Disabled +class DevRosetteAPITest { + // edit the right URL into place + private static final String URL = "http://localhost:8181/rest/v1"; + private static final String KEY = null; + + private HttpRosetteAPI api; + + @BeforeEach + public void before() { + api = new HttpRosetteAPI.Builder().key(KEY).url(URL).build(); + } + + @AfterEach + public void after() throws IOException { + api.close(); + } + + @Test + void multipart() { + // this assumes that the server has the mock version of the components. + Request morphologyRequest = DocumentRequest.builder().language(LanguageCode.ENGLISH) + .options(MorphologyOptions.builder().partOfSpeechTagSet(PartOfSpeechTagSet.upt16).build()) + .content("This is the cereal shot from 1 gun .".getBytes(StandardCharsets.UTF_8), "text/plain;charset=utf-8") + .build(); + TokensResponse response = api.perform(AbstractRosetteAPI.TOKENS_SERVICE_PATH, morphologyRequest, TokensResponse.class); + assertEquals(9, response.getTokens().size()); + assertEquals("one", response.getTokens().get(6)); + } + + @Test + void simple() { + // this assumes that the server has the mock version of the components. + Request morphologyRequest = DocumentRequest.builder().language(LanguageCode.ENGLISH) + .options(MorphologyOptions.builder().partOfSpeechTagSet(PartOfSpeechTagSet.upt16).build()) + .content("This is the cereal shot from 1 gun .") + .build(); + TokensResponse response = api.perform(AbstractRosetteAPI.TOKENS_SERVICE_PATH, morphologyRequest, TokensResponse.class); + assertEquals(9, response.getTokens().size()); + assertEquals("one", response.getTokens().get(6)); + } +} diff --git a/api/src/test/java/com/basistech/rosette/api/InvalidErrorTest.java b/api/src/test/java/com/basistech/rosette/api/InvalidErrorTest.java index d3f28abcca..0452917883 100644 --- a/api/src/test/java/com/basistech/rosette/api/InvalidErrorTest.java +++ b/api/src/test/java/com/basistech/rosette/api/InvalidErrorTest.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,36 +16,63 @@ package com.basistech.rosette.api; -import com.basistech.util.LanguageCode; -import org.junit.Test; -import org.mockserver.client.server.MockServerClient; +import com.basistech.rosette.api.common.AbstractRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.LanguageResponse; +import org.apache.http.HttpHeaders; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockserver.client.MockServerClient; +import org.mockserver.junit.jupiter.MockServerExtension; import org.mockserver.model.HttpRequest; import org.mockserver.model.HttpResponse; -import java.io.IOException; +import java.nio.charset.StandardCharsets; -public class InvalidErrorTest extends AbstractTest { +import static java.net.HttpURLConnection.HTTP_NOT_FOUND; +import static java.net.HttpURLConnection.HTTP_OK; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@ExtendWith(MockServerExtension.class) +class InvalidErrorTest { + private MockServerClient mockServer; + + @BeforeEach + public void setup(MockServerClient mockServer) { + this.mockServer = mockServer; + } @Test - public void notJsonError() throws Exception { - MockServerClient mockServer = new MockServerClient("localhost", serverPort); - mockServer.reset() - .when(HttpRequest.request().withPath(".*/{2,}.*")) + void notJsonError() throws Exception { + mockServer.when(HttpRequest.request().withPath(".*/{2,}.*")) + .respond(HttpResponse.response() + .withBody("Invalid path; '//'") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withStatusCode(HTTP_NOT_FOUND)); + mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/ping") + .withHeader(HttpHeaders.USER_AGENT, HttpRosetteAPI.USER_AGENT_STR)) .respond(HttpResponse.response() - .withBody("Invalid path; '//'") - .withStatusCode(404) - ); - String mockServiceUrl = "http://localhost:" + Integer.toString(serverPort) + "/rest//v1"; - RosetteAPI api = new RosetteAPI("my-key-123", mockServiceUrl); + .withBody("{\"message\":\"Rosette API at your service\",\"time\":1461788498633}", StandardCharsets.UTF_8) + .withStatusCode(HTTP_OK) + .withHeader("X-BabelStreetAPI-Concurrency", "5")); + String mockServiceUrl = "http://localhost:" + mockServer.getPort() + "/rest//v1"; boolean exceptional = false; try { - api.getCategories("Nothing to see here", LanguageCode.AFRIKAANS, null); - } catch (RosetteAPIException e) { + HttpRosetteAPI api = new HttpRosetteAPI.Builder().key("my-key-123").url(mockServiceUrl).build(); + api.perform(AbstractRosetteAPI.LANGUAGE_SERVICE_PATH, DocumentRequest.builder().content("sample text").build(), LanguageResponse.class); + api.close(); + } catch (HttpRosetteAPIException e) { exceptional = true; - assertEquals("invalidErrorResponse", e.getCode()); - assertEquals(404, e.getHttpStatusCode()); - assertNotNull(e.getMessage()); + assertEquals("invalidErrorResponse", e.getErrorResponse().getCode()); + assertEquals(Integer.valueOf(404), e.getHttpStatusCode()); + assertNotNull(e.getErrorResponse().getMessage()); } assertTrue(exceptional); + mockServer.close(); } } diff --git a/api/src/test/java/com/basistech/rosette/api/RosetteAPITest.java b/api/src/test/java/com/basistech/rosette/api/RosetteAPITest.java index 87d3e57f36..d5ac9e0586 100644 --- a/api/src/test/java/com/basistech/rosette/api/RosetteAPITest.java +++ b/api/src/test/java/com/basistech/rosette/api/RosetteAPITest.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,521 +16,730 @@ package com.basistech.rosette.api; -import com.basistech.rosette.apimodel.CategoriesRequest; +import com.basistech.rosette.RosetteRuntimeException; +import com.basistech.rosette.api.common.AbstractRosetteAPI; +import com.basistech.rosette.apimodel.AddressSimilarityRequest; +import com.basistech.rosette.apimodel.AddressSimilarityResponse; import com.basistech.rosette.apimodel.CategoriesResponse; -import com.basistech.rosette.apimodel.EntitiesRequest; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EntitiesOptions; import com.basistech.rosette.apimodel.EntitiesResponse; import com.basistech.rosette.apimodel.ErrorResponse; -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.rosette.apimodel.LanguageRequest; import com.basistech.rosette.apimodel.LanguageResponse; -import com.basistech.rosette.apimodel.LinkedEntitiesRequest; -import com.basistech.rosette.apimodel.LinkedEntitiesResponse; -import com.basistech.rosette.apimodel.MorphologyRequest; import com.basistech.rosette.apimodel.MorphologyResponse; -import com.basistech.rosette.apimodel.NameMatchingRequest; -import com.basistech.rosette.apimodel.NameMatchingResponse; +import com.basistech.rosette.apimodel.NameDeduplicationRequest; +import com.basistech.rosette.apimodel.NameDeduplicationResponse; +import com.basistech.rosette.apimodel.NameSimilarityRequest; +import com.basistech.rosette.apimodel.NameSimilarityResponse; import com.basistech.rosette.apimodel.NameTranslationRequest; import com.basistech.rosette.apimodel.NameTranslationResponse; -import com.basistech.rosette.apimodel.RelationshipsRequest; +import com.basistech.rosette.apimodel.SimilarTermsResponse; import com.basistech.rosette.apimodel.RelationshipsResponse; import com.basistech.rosette.apimodel.Request; -import com.basistech.rosette.apimodel.SentimentRequest; import com.basistech.rosette.apimodel.SentimentResponse; -import com.basistech.util.LanguageCode; -import com.google.common.base.Charsets; +import com.basistech.rosette.apimodel.SyntaxDependenciesResponse; +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRequest; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResponse; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.mockserver.client.server.MockServerClient; +import org.apache.http.HttpHeaders; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.mockserver.client.MockServerClient; +import org.mockserver.junit.jupiter.MockServerExtension; import org.mockserver.model.HttpRequest; import org.mockserver.model.HttpResponse; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; -import java.net.URISyntaxException; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collection; - -@RunWith(Parameterized.class) -public class RosetteAPITest extends AbstractTest { - private final String testFilename; - private RosetteAPI api; - private String responseStr; - private LanguageCode language; +import java.util.stream.Stream; +import java.util.zip.GZIPOutputStream; + +import static java.net.HttpURLConnection.HTTP_OK; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.fail; + +@ExtendWith(MockServerExtension.class) +@SuppressWarnings("PMD.UnusedPrivateMethod") // Parameterized Tests +class RosetteAPITest { + private static final String INFO_RESPONSE = "{ \"buildNumber\": \"6bafb29d\", \"buildTime\": " + + "\"2015.10.08_10:19:26\", \"name\": \"RosetteAPI\", \"version\": \"0.7.0\", \"versionChecked\": true }"; + private HttpRosetteAPI api; private MockServerClient mockServer; + private ObjectMapper mapper; - public RosetteAPITest(String filename) { - testFilename = filename; + + + @BeforeEach + public void setUp(MockServerClient mockServer) { + mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + this.mockServer = mockServer; + this.mockServer.when(HttpRequest.request() + .withMethod("GET") + .withPath("/rest/v1/ping") + .withHeader(HttpHeaders.USER_AGENT, HttpRosetteAPI.USER_AGENT_STR)) + .respond(HttpResponse.response() + .withBody("{\"message\":\"Rosette API at your service\",\"time\":1461788498633}", + StandardCharsets.UTF_8) + .withStatusCode(HTTP_OK) + .withHeader("X-BabelStreetAPI-Concurrency", "5")); + + this.mockServer.when(HttpRequest.request() + .withPath("/info")) + .respond(HttpResponse.response() + .withStatusCode(HTTP_OK) + .withHeader("Content-Type", "application/json") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withBody(INFO_RESPONSE, StandardCharsets.UTF_8)); + + api = new HttpRosetteAPI.Builder() + .key("my-key-123") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .build(); + } + + @AfterEach + public void reset() { + mockServer.reset(); + } + + private static byte[] gzip(String text) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (GZIPOutputStream out = new GZIPOutputStream(baos)) { + out.write(text.getBytes(StandardCharsets.UTF_8)); + } + return baos.toByteArray(); + } + + private T readValue(Class clazz, String testFilename) throws IOException { + File input = new File("src/test/mock-data/request", testFilename); + return mapper.readValue(input, clazz); + } + + private void verifyException(HttpRosetteAPIException e, String responseStr) throws IOException { + ErrorResponse goldResponse = mapper.readValue(responseStr, ErrorResponse.class); + assertEquals(goldResponse.getCode(), e.getErrorResponse().getCode()); } - @Parameterized.Parameters - public static Collection data() throws URISyntaxException, IOException { - File dir = new File("src/test/mock-data/response"); - Collection params = new ArrayList<>(); - try (DirectoryStream paths = Files.newDirectoryStream(dir.toPath())) { - for (Path file : paths) { - if (file.toString().endsWith(".json")) { - params.add(new Object[]{file.getFileName().toString()}); + private void setStatusCodeResponse(String responseStr, int statusCode) throws IOException { + if (responseStr.length() > 200) { // test gzip if response is somewhat big + mockServer.when(HttpRequest.request().withPath("^(?!/info).+")) + .respond(HttpResponse.response() + .withHeader("Content-Type", "application/json") + .withHeader("Content-Encoding", "gzip") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withStatusCode(statusCode).withBody(gzip(responseStr))); + + } else { + mockServer.when(HttpRequest.request().withPath("^(?!/info).+")) + .respond(HttpResponse.response() + .withHeader("Content-Type", "application/json") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withStatusCode(statusCode).withBody(responseStr, StandardCharsets.UTF_8)); + } + + } + + // Construct the parameters for our tests. We look inside the mock-data/response directory + // and gather any matching files. We read in the response string and response status code. + // These two values are combined with the name of the file with the request data. The request + // data is read in later, from a different directory, when executing the test. + private static Stream getTestFiles(String endsWith) throws IOException { + File responseDir = new File("src/test/mock-data/response"); + Stream.Builder streamBuilder = Stream.builder(); + try (DirectoryStream paths = Files.newDirectoryStream(responseDir.toPath())) { + for (Path p : paths) { + if (p.toString().endsWith(endsWith)) { + var responseBodyStream = new FileInputStream(p.toFile()); + var responseStr = IOUtils.toString(responseBodyStream, StandardCharsets.UTF_8); + responseBodyStream.close(); + + int statusCode = HTTP_OK; + var statusFilename = p.toString().replace(".json", ".status"); + File statusFile = new File(statusFilename); + if (statusFile.exists()) { + var statusStr = FileUtils.readFileToString(statusFile, StandardCharsets.UTF_8).trim(); + statusCode = Integer.parseInt(statusStr); + } + + streamBuilder.add(Arguments.of(p.getFileName().toString(), responseStr, statusCode)); } } } - return params; + return streamBuilder.build(); } + private static Stream testMatchNameParameters() throws IOException { + return getTestFiles("-name-similarity.json"); + } - @Before - public void setUp() throws IOException, InterruptedException, RosetteAPIException { + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testMatchNameParameters") + void testMatchName(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + NameSimilarityRequest request = readValueNameMatcher(testFilename); try { - language = LanguageCode.lookupByISO639(testFilename.substring(0, 3)); - } catch (IllegalArgumentException e) { - language = LanguageCode.UNKNOWN; + NameSimilarityResponse response = api.perform(AbstractRosetteAPI.NAME_SIMILARITY_SERVICE_PATH, request, + NameSimilarityResponse.class); + verifyNameMatcher(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } + } - String statusFilename = testFilename.replace(".json", ".status"); - try (InputStream bodyStream = new FileInputStream("src/test/mock-data/response/" + testFilename)) { - responseStr = IOUtils.toString(bodyStream, Charsets.UTF_8); - int statusCode = 200; + private void verifyNameMatcher(NameSimilarityResponse response, String responseStr) throws IOException { + NameSimilarityResponse goldResponse = mapper.readValue(responseStr, NameSimilarityResponse.class); + assertEquals(goldResponse.getScore(), response.getScore(), 0.0); + } - File statusFile = new File("src/test/mock-data/response", statusFilename); - if (statusFile.exists()) { - String statusStr = FileUtils.readFileToString(statusFile, Charsets.UTF_8).trim(); - statusCode = Integer.parseInt(statusStr); - } - mockServer = new MockServerClient("localhost", serverPort); - mockServer.reset() - .when(HttpRequest.request().withPath(".*/{2,}.*")) - .respond(HttpResponse.response() - .withBody("Invalid path; '//'") - .withStatusCode(404) - ); - - if (responseStr.length() > 200) { // test gzip if response is somewhat big - mockServer.when(HttpRequest.request().withPath("^(?!/info).+")) - .respond(HttpResponse.response() - .withHeader("Content-Type", "application/json") - .withHeader("Content-Encoding", "gzip") - .withStatusCode(statusCode).withBody(gzip(responseStr))); - - } else { - mockServer.when(HttpRequest.request().withPath("^(?!/info).+")) - .respond(HttpResponse.response() - .withHeader("Content-Type", "application/json") - .withStatusCode(statusCode).withBody(responseStr, StandardCharsets.UTF_8)); - } - mockServer.when(HttpRequest.request() - .withPath("/info")) - .respond(HttpResponse.response() - .withStatusCode(200) - .withHeader("Content-Type", "application/json") - .withBody("{ \"buildNumber\": \"6bafb29d\", \"buildTime\": \"2015.10.08_10:19:26\", \"name\": \"RosetteAPI\", \"version\": \"0.7.0\", \"versionChecked\": true }", StandardCharsets.UTF_8)); + private NameSimilarityRequest readValueNameMatcher(String testFilename) throws IOException { + File input = new File("src/test/mock-data/request", testFilename); + return mapper.readValue(input, NameSimilarityRequest.class); + } - String mockServiceUrl = "http://localhost:" + Integer.toString(serverPort) + "/rest/v1"; - api = new RosetteAPI("my-key-123", mockServiceUrl); + private static Stream testMatchRecordParameters() throws IOException { + return getTestFiles("-record-similarity.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testMatchRecordParameters") + void testMatchRecord(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + RecordSimilarityRequest request = readValueRecordMatcher(testFilename); + try { + RecordSimilarityResponse response = api.perform(AbstractRosetteAPI.RECORD_SIMILARITY_SERVICE_PATH, request, + RecordSimilarityResponse.class); + verifyRecordMatcher(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testMatchName() throws IOException { - if (!(testFilename.endsWith("-matched-name.json"))) { - return; + private static Stream testMatchRecordMissingFieldParameters() throws IOException { + return getTestFiles("-record-similarity-missing-field.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testMatchRecordMissingFieldParameters") + void testMatchRecordMissingField(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + readValueRecordMatcher(testFilename); + assertEquals("{\"results\":[{\"score\":0.0,\"left\":{\"dob2\":\"1993/04/16\"," + + "\"dob\":\"1993-04-16\",\"primaryName\":{\"data\":\"Ethan R\",\"language\":\"eng\"," + + "\"entityType\":\"PERSON\"},\"addr\":\"123 Roadlane Ave\"},\"right\":{\"dob\":\"1993-04-16\"," + + "\"primaryName\":\"Seth R\"},\"error\":\"Field 'primaryName' not found in field mapping\"}," + + "{\"score\":0.0,\"left\":{\"dob\":\"1993-04-16\",\"primaryName\":\"Evan R\"}," + + "\"right\":{\"dob2\":\"1993/04/16\",\"dob\":\"1993-04-16\",\"primaryName\":\"Ivan R\"," + + "\"addr\":\"123 Roadlane Ave\"},\"error\":\"Field 'primaryName' not found in field mapping\"}]}", + responseStr); + } + + private static Stream testMatchRecordNullFieldParameters() throws IOException { + return getTestFiles("-record-similarity-null-field.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testMatchRecordNullFieldParameters") + void testMatchRecordNullField(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + + try { + readValueRecordMatcher(testFilename); + fail("Did not throw exception for a field with null type"); + } catch (IllegalArgumentException e) { + assertEquals("Unspecified field type for: primaryName", e.getMessage()); } - NameMatchingRequest request = readValueNameMatcher(); + } + + private void verifyRecordMatcher(RecordSimilarityResponse response, String responseStr) throws IOException { + RecordSimilarityResponse goldResponse = mapper.readValue(responseStr, RecordSimilarityResponse.class); + assertEquals(goldResponse.getResults(), response.getResults()); + } + + private RecordSimilarityRequest readValueRecordMatcher(String testFilename) throws IOException { + File input = new File("src/test/mock-data/request", testFilename); + return mapper.readValue(input, RecordSimilarityRequest.class); + } + + private static Stream testMatchAddressParameters() throws IOException { + return getTestFiles("-address-similarity.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testMatchAddressParameters") + void testMatchAddress(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + AddressSimilarityRequest request = readValueAddressMatcher(testFilename); try { - NameMatchingResponse response = api.matchName(request); - verifyNameMatcher(response); - } catch (RosetteAPIException e) { - verifyException(e); + AddressSimilarityResponse response = api.perform(AbstractRosetteAPI.ADDRESS_SIMILARITY_SERVICE_PATH, + request, AddressSimilarityResponse.class); + verifyAddressMatcher(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private void verifyNameMatcher(NameMatchingResponse response) throws IOException { - NameMatchingResponse goldResponse = mapper.readValue(responseStr, NameMatchingResponse.class); - assertEquals(response.getResult().getScore(), goldResponse.getResult().getScore(), 0.0); + private void verifyAddressMatcher(AddressSimilarityResponse response, String responseStr) throws IOException { + AddressSimilarityResponse goldResponse = mapper.readValue(responseStr, AddressSimilarityResponse.class); + assertEquals(goldResponse.getScore(), response.getScore(), 0.0); } - private NameMatchingRequest readValueNameMatcher() throws IOException { + private AddressSimilarityRequest readValueAddressMatcher(String testFilename) throws IOException { File input = new File("src/test/mock-data/request", testFilename); - return mapper.readValue(input, NameMatchingRequest.class); + return mapper.readValue(input, AddressSimilarityRequest.class); + } + + private static Stream testTranslateNameParameters() throws IOException { + return getTestFiles("-name-translation.json"); } - @Test - public void testTranslateName() throws IOException { - if (!(testFilename.endsWith("-translated-name.json"))) { - return; + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testTranslateNameParameters") + void testTranslateName(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + NameTranslationRequest request = readValueNameTranslation(testFilename); + try { + NameTranslationResponse response = api.perform(AbstractRosetteAPI.NAME_TRANSLATION_SERVICE_PATH, request, + NameTranslationResponse.class); + verifyNameTranslation(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } - NameTranslationRequest request = readValueNameTranslation(); + } + + private static Stream testMultiTranslateNameParameters() throws IOException { + return getTestFiles("-multi-name-translation.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testMultiTranslateNameParameters") + void testMultiTranslateName(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + NameTranslationRequest request = readValueNameTranslation(testFilename); try { - NameTranslationResponse response = api.translateName(request); - verifyNameTranslation(response); - } catch (RosetteAPIException e) { - verifyException(e); + NameTranslationResponse response = api.perform(AbstractRosetteAPI.NAME_TRANSLATION_SERVICE_PATH, request, + NameTranslationResponse.class); + verifyMultiNameTranslations(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private void verifyNameTranslation(NameTranslationResponse response) throws IOException { + private void verifyNameTranslation(NameTranslationResponse response, String responseStr) throws IOException { NameTranslationResponse goldResponse = mapper.readValue(responseStr, NameTranslationResponse.class); - assertEquals(response.getResult().getTranslation(), goldResponse.getResult().getTranslation()); + assertEquals(goldResponse.getTranslation(), response.getTranslation()); } - private NameTranslationRequest readValueNameTranslation() throws IOException { + private void verifyMultiNameTranslations(NameTranslationResponse response, String responseStr) throws IOException { + NameTranslationResponse goldResponse = mapper.readValue(responseStr, NameTranslationResponse.class); + assertEquals(goldResponse.getTranslations(), response.getTranslations()); + } + + private NameTranslationRequest readValueNameTranslation(String testFilename) throws IOException { File input = new File("src/test/mock-data/request", testFilename); return mapper.readValue(input, NameTranslationRequest.class); } - private void verifyLanguage(LanguageResponse response) throws IOException { + private void verifyLanguage(LanguageResponse response, String responseStr) throws IOException { LanguageResponse goldResponse = mapper.readValue(responseStr, LanguageResponse.class); - assertEquals(response.getLanguageDetections().size(), goldResponse.getLanguageDetections().size()); + assertEquals(goldResponse.getLanguageDetections().size(), response.getLanguageDetections().size()); } - @Test - public void testGetLanguageDoc() throws IOException { - if (!(testFilename.endsWith("-language.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(LanguageRequest.class); - try { - LanguageResponse response = api.getLanguage(request.getContent(), null); - verifyLanguage(response); - } catch (RosetteAPIException e) { - verifyException(e); - } + private static Stream testGetLanguageDocParameters() throws IOException { + return getTestFiles("-doc-language.json"); } - @Test - public void testGetLanguageURL() throws IOException { - if (!(testFilename.endsWith("-language.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(LanguageRequest.class); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetLanguageDocParameters") + void testGetLanguageDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - LanguageResponse response = api.getLanguage(new URL(request.getContentUri()), null); - verifyLanguage(response); - } catch (RosetteAPIException e) { - verifyException(e); + LanguageResponse response = api.perform(AbstractRosetteAPI.LANGUAGE_SERVICE_PATH, request, + LanguageResponse.class); + verifyLanguage(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetLanguageSentence() throws IOException { - if (!(testFilename.contains("-language.json") && testFilename.contains("-sentence-"))) { - return; - } - Request request = readValue(LanguageRequest.class); + private static Stream testGetLanguageURLParameters() throws IOException { + return getTestFiles("-url-language.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetLanguageURLParameters") + void testGetLanguageURL(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - LanguageResponse response = api.getLanguage(request.getContent(), InputUnit.sentence, null); - verifyLanguage(response); - } catch (RosetteAPIException e) { - verifyException(e); + LanguageResponse response = api.perform(AbstractRosetteAPI.LANGUAGE_SERVICE_PATH, request, + LanguageResponse.class); + verifyLanguage(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetMorphologyDoc() throws IOException { - if (!(testFilename.endsWith("-morphology_complete.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(MorphologyRequest.class); + private static Stream testGetMorphologyDocParameters() throws IOException { + return getTestFiles("-doc-morphology_complete.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetMorphologyDocParameters") + void testGetMorphologyDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - MorphologyResponse response = api.getMorphology(RosetteAPI.MorphologicalFeature.COMPLETE, - request.getContent(), null, null); - verifyMorphology(response); - } catch (RosetteAPIException e) { - verifyException(e); + MorphologyResponse response = api.perform(AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH + "/" + + MorphologicalFeature.COMPLETE, request, MorphologyResponse.class); + verifyMorphology(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private void verifyMorphology(MorphologyResponse response) throws IOException { + private void verifyMorphology(MorphologyResponse response, String responseStr) throws IOException { MorphologyResponse goldResponse = mapper.readValue(responseStr, MorphologyResponse.class); assertEquals(response.getPosTags().size(), goldResponse.getPosTags().size()); } - @Test - public void testGetMorphologyURL() throws IOException { - if (!(testFilename.endsWith("-morphology_complete.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(MorphologyRequest.class); - try { - MorphologyResponse response = api.getMorphology(RosetteAPI.MorphologicalFeature.COMPLETE, - new URL(request.getContentUri()), null, null); - verifyMorphology(response); - } catch (RosetteAPIException e) { - verifyException(e); - } + private static Stream testGetMorphologyURLParameters() throws IOException { + return getTestFiles("-url-morphology_complete.json"); } - @Test - public void testGetMorphologySentence() throws IOException { - if (!(testFilename.endsWith("-morphology_complete.json") && testFilename.contains("-sentence-"))) { - return; - } - Request request = readValue(MorphologyRequest.class); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetMorphologyURLParameters") + void testGetMorphologyURL(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - MorphologyResponse response = api.getMorphology(RosetteAPI.MorphologicalFeature.COMPLETE, - request.getContent(), null, InputUnit.sentence, null); - verifyMorphology(response); - } catch (RosetteAPIException e) { - verifyException(e); + MorphologyResponse response = api.perform(AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH + "/" + + MorphologicalFeature.COMPLETE, request, MorphologyResponse.class); + verifyMorphology(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetEntityDoc() throws IOException { - if (!(testFilename.endsWith("-entities.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(EntitiesRequest.class); + private static Stream testGetEntityDocParameters() throws IOException { + return getTestFiles("-doc-entities.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetEntityDocParameters") + void testGetEntityDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - EntitiesResponse response = api.getEntities(request.getContent(), null, null); - verifyEntity(response); - } catch (RosetteAPIException e) { - verifyException(e); + EntitiesResponse response = api.perform(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, request, + EntitiesResponse.class); + verifyEntity(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private void verifyEntity(EntitiesResponse response) throws IOException { - EntitiesResponse goldResponse = mapper.readValue(responseStr, EntitiesResponse.class); - assertEquals(response.getEntities().size(), goldResponse.getEntities().size()); + private static Stream testGetEntityLinkedParameters() throws IOException { + return getTestFiles("-entities_linked.json"); } - @Test - public void testGetEntityURL() throws IOException { - if (!(testFilename.endsWith("-entities.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(EntitiesRequest.class); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetEntityLinkedParameters") + void testGetEntityLinked(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - EntitiesResponse response = api.getEntities(new URL(request.getContentUri()), null, null); - verifyEntity(response); - } catch (RosetteAPIException e) { - verifyException(e); + EntitiesResponse response = api.perform(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, request, + EntitiesResponse.class); + verifyEntity(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetEntitySentence() throws IOException { - if (!(testFilename.endsWith("-entities.json") && testFilename.contains("-sentence-"))) { - return; - } - Request request = readValue(EntitiesRequest.class); - try { - EntitiesResponse response = api.getEntities(request.getContent(), null, InputUnit.sentence, null); - verifyEntity(response); - } catch (RosetteAPIException e) { - verifyException(e); - } + + private static Stream testGetEntityPermIdParameters() throws IOException { + return getTestFiles("-entities_permid.json"); } - @Test - public void testGetLinkedEntity() throws IOException { - if (!(testFilename.endsWith("-entities_linked.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(LinkedEntitiesRequest.class); - try { - LinkedEntitiesResponse response = api.getLinkedEntities(request.getContent(), null, null); - verifyLinkedEntity(response); - } catch (RosetteAPIException e) { - verifyException(e); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetEntityPermIdParameters") + void testGetEntityPermId(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + if (testFilename.endsWith("-entities_permid.json")) { + DocumentRequest request = readValue(DocumentRequest.class, testFilename); + try { + EntitiesResponse response = api.perform(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, request, + EntitiesResponse.class); + verifyEntity(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); + } } } - private void verifyLinkedEntity(LinkedEntitiesResponse response) throws IOException { - LinkedEntitiesResponse goldResponse = mapper.readValue(responseStr, LinkedEntitiesResponse.class); - assertEquals(response.getEntities().size(), goldResponse.getEntities().size()); + private static Stream testIgnoredUnknownFieldParameters() throws IOException { + return getTestFiles("unknown-field-entities.json"); } - @Test - public void testGetLinkedEntityURL() throws IOException { - if (!(testFilename.endsWith("-entities_linked.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(LinkedEntitiesRequest.class); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testIgnoredUnknownFieldParameters") + void testIgnoredUnknownField(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - LinkedEntitiesResponse response = api.getLinkedEntities(new URL(request.getContentUri()), null); - verifyLinkedEntity(response); - } catch (RosetteAPIException e) { - verifyException(e); + EntitiesResponse response = api.perform(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, request, + EntitiesResponse.class); + verifyEntity(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetLinkedEntitySentence() throws IOException { - if (!(testFilename.endsWith("-entities_linked.json") && testFilename.contains("-sentence-"))) { - return; + private static Stream testNonIgnoredUnknownFieldParameters() throws IOException { + return getTestFiles("unknown-field-entities.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testNonIgnoredUnknownFieldParameters") + void testNonIgnoredUnknownField(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); + + try (HttpRosetteAPI tmpApi = new HttpRosetteAPI.Builder() + .key("my-key-123") + .url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .onlyAcceptKnownFields(true) + .build()) { + tmpApi.perform(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, request, EntitiesResponse.class); + } catch (RosetteRuntimeException e) { + if (e.getCause() instanceof UnrecognizedPropertyException) { + return; + } } - Request request = readValue(LinkedEntitiesRequest.class); + fail("Unknown field is ignored when it shouldn't be "); + } + + private void verifyEntity(EntitiesResponse response, String responseStr) throws IOException { + EntitiesResponse goldResponse = mapper.readValue(responseStr, EntitiesResponse.class); + assertEquals(goldResponse.getEntities(), response.getEntities()); + } + + private static Stream testGetEntityURLParameters() throws IOException { + return getTestFiles("-url-entities.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetEntityURLParameters") + void testGetEntityURL(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - LinkedEntitiesResponse response = api.getLinkedEntities(request.getContent(), null, InputUnit.sentence); - verifyLinkedEntity(response); - } catch (RosetteAPIException e) { - verifyException(e); + EntitiesResponse response = api.perform(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, request, + EntitiesResponse.class); + verifyEntity(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetCategories() throws IOException { - if (!(testFilename.endsWith("-categories.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(CategoriesRequest.class); + private static Stream testGetCategoriesDocParameters() throws IOException { + return getTestFiles("-doc-categories.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetCategoriesDocParameters") + void testGetCategoriesDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - CategoriesResponse response = api.getCategories(request.getContent(), null, null); - verifyCategory(response); - } catch (RosetteAPIException e) { - verifyException(e); + CategoriesResponse response = api.perform(AbstractRosetteAPI.CATEGORIES_SERVICE_PATH, request, + CategoriesResponse.class); + verifyCategory(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - - private void verifyCategory(CategoriesResponse response) throws IOException { + private void verifyCategory(CategoriesResponse response, String responseStr) throws IOException { CategoriesResponse goldResponse = mapper.readValue(responseStr, CategoriesResponse.class); assertEquals(response.getCategories().size(), goldResponse.getCategories().size()); } - @Test - public void testGetCategoriesURL() throws IOException { - if (!(testFilename.endsWith("-categories.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(CategoriesRequest.class); - try { - CategoriesResponse response = api.getCategories(new URL(request.getContentUri()), null, null); - verifyCategory(response); - } catch (RosetteAPIException e) { - verifyException(e); - } + private static Stream testGetCategoriesURLParameters() throws IOException { + return getTestFiles("-url-categories.json"); } - @Test - public void testGetCategoriesSentence() throws IOException { - if (!(testFilename.endsWith("-categories.json") && testFilename.contains("-sentence-"))) { - return; - } - Request request = readValue(CategoriesRequest.class); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetCategoriesURLParameters") + void testGetCategoriesURL(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - CategoriesResponse response = api.getCategories(request.getContent(), null, InputUnit.sentence, null); - verifyCategory(response); - } catch (RosetteAPIException e) { - verifyException(e); + CategoriesResponse response = api.perform(AbstractRosetteAPI.CATEGORIES_SERVICE_PATH, request, + CategoriesResponse.class); + verifyCategory(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetRelationships() throws IOException { - if (!(testFilename.endsWith("-relationships.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(RelationshipsRequest.class); + private static Stream testGetSyntaxDependenciesDocParameters() throws IOException { + return getTestFiles("-doc-syntax_dependencies.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetSyntaxDependenciesDocParameters") + void testGetSyntaxDependenciesDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - RelationshipsResponse response = api.getRelationships(request.getContent(), language, null); - verifyRelationships(response); - } catch (RosetteAPIException e) { - verifyException(e); + SyntaxDependenciesResponse response = api.perform(AbstractRosetteAPI.SYNTAX_DEPENDENCIES_SERVICE_PATH, + request, SyntaxDependenciesResponse.class); + verifySyntaxDependency(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private void verifyRelationships(RelationshipsResponse response) throws IOException { - RelationshipsResponse goldResponse = mapper.readValue(responseStr, RelationshipsResponse.class); - assertEquals(response.getRelationships().size(), goldResponse.getRelationships().size()); + private void verifySyntaxDependency(SyntaxDependenciesResponse response, String responseStr) throws IOException { + SyntaxDependenciesResponse goldResponse = mapper.readValue(responseStr, SyntaxDependenciesResponse.class); + assertEquals(response.getSentences().size(), goldResponse.getSentences().size()); } - @Test - public void testGetRelationshipsURL() throws IOException { - if (!(testFilename.endsWith("-relationships.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(RelationshipsRequest.class); + private static Stream testGetSimilarTermsParameters() throws IOException { + return getTestFiles("-similar_terms.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetSimilarTermsParameters") + void testGetSimilarTerms(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - RelationshipsResponse response = api.getRelationships(new URL(request.getContentUri()), language, null); - verifyRelationships(response); - } catch (RosetteAPIException e) { - verifyException(e); + SimilarTermsResponse response = api.perform(AbstractRosetteAPI.SIMILAR_TERMS_SERVICE_PATH, request, + SimilarTermsResponse.class); + verifySimilarTerms(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetRelationshipsSentence() throws IOException { - if (!(testFilename.endsWith("-relationships.json") && testFilename.contains("-sentence-"))) { - return; - } - Request request = readValue(RelationshipsRequest.class); + private void verifySimilarTerms(SimilarTermsResponse response, String responseStr) throws IOException { + SimilarTermsResponse goldResponse = mapper.readValue(responseStr, SimilarTermsResponse.class); + assertEquals(response.getSimilarTerms().size(), goldResponse.getSimilarTerms().size()); + } + + private static Stream testGetRelationshipsDocParameters() throws IOException { + return getTestFiles("-doc-relationships.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetRelationshipsDocParameters") + void testGetRelationshipsDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - RelationshipsResponse response = - api.getRelationships(request.getContent(), language, InputUnit.sentence, null); - verifyRelationships(response); - } catch (RosetteAPIException e) { - verifyException(e); + RelationshipsResponse response = api.perform(AbstractRosetteAPI.RELATIONSHIPS_SERVICE_PATH, request, + RelationshipsResponse.class); + verifyRelationships(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - @Test - public void testGetSentiment() throws IOException { - if (!(testFilename.endsWith("-sentiment.json") && testFilename.contains("-doc-"))) { - return; - } - Request request = readValue(SentimentRequest.class); + private void verifyRelationships(RelationshipsResponse response, String responseStr) throws IOException { + RelationshipsResponse goldResponse = mapper.readValue(responseStr, RelationshipsResponse.class); + assertEquals(response.getRelationships().size(), goldResponse.getRelationships().size()); + } + + private static Stream testGetSentimentDocParameters() throws IOException { + return getTestFiles("-doc-sentiment.json"); + } + + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetSentimentDocParameters") + void testGetSentimentDoc(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - SentimentResponse response = api.getSentiment(request.getContent(), language, null); - verifySentiment(response); - } catch (RosetteAPIException e) { - verifyException(e); + SentimentResponse response = api.perform(AbstractRosetteAPI.SENTENCES_SERVICE_PATH, request, + SentimentResponse.class); + verifySentiment(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private void verifySentiment(SentimentResponse response) throws IOException { + private void verifySentiment(SentimentResponse response, String responseStr) throws IOException { SentimentResponse goldResponse = mapper.readValue(responseStr, SentimentResponse.class); - assertEquals(response.getSentiment().size(), goldResponse.getSentiment().size()); + // this is minimal. + assertNotNull(response.getEntities()); + assertEquals(response.getEntities().size(), goldResponse.getEntities().size()); } - @Test - public void testGetSentimentURL() throws IOException { - if (!(testFilename.endsWith("-sentiment.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(SentimentRequest.class); - try { - SentimentResponse response = api.getSentiment(new URL(request.getContentUri()), language, null); - verifySentiment(response); - } catch (RosetteAPIException e) { - verifyException(e); - } + private static Stream testGetSentimentURLParameters() throws IOException { + return getTestFiles("-url-sentiment.json"); } - @Test - public void testGetSentimentSentence() throws IOException { - if (!(testFilename.endsWith("-sentiment.json") && testFilename.contains("-url-"))) { - return; - } - Request request = readValue(SentimentRequest.class); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testGetSentimentURLParameters") + void testGetSentimentURL(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + DocumentRequest request = readValue(DocumentRequest.class, testFilename); try { - SentimentResponse response = api.getSentiment(request.getContent(), language, InputUnit.sentence, null); - verifySentiment(response); - } catch (RosetteAPIException e) { - verifyException(e); + SentimentResponse response = api.perform(AbstractRosetteAPI.SENTENCES_SERVICE_PATH, request, + SentimentResponse.class); + verifySentiment(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); } } - private T readValue(Class clazz) throws IOException { - File input = new File("src/test/mock-data/request", testFilename); - return mapper.readValue(input, clazz); + private static Stream testNameDeduplicationParameters() throws IOException { + return getTestFiles("-name-deduplication.json"); } - private void verifyException(RosetteAPIException e) throws IOException { - ErrorResponse goldResponse = mapper.readValue(responseStr, ErrorResponse.class); - assertEquals(goldResponse.getCode(), e.getCode()); + @ParameterizedTest(name = "testFilename: {0}; statusCode: {2}") + @MethodSource("testNameDeduplicationParameters") + void testNameDeduplication(String testFilename, String responseStr, int statusCode) throws IOException { + setStatusCodeResponse(responseStr, statusCode); + NameDeduplicationRequest request = readValueNameDeduplication(testFilename); + try { + NameDeduplicationResponse response = api.perform(AbstractRosetteAPI.NAME_DEDUPLICATION_SERVICE_PATH, + request, NameDeduplicationResponse.class); + verifyNameDeduplication(response, responseStr); + } catch (HttpRosetteAPIException e) { + verifyException(e, responseStr); + } } + private void verifyNameDeduplication(NameDeduplicationResponse response, String responseStr) throws IOException { + NameDeduplicationResponse goldResponse = mapper.readValue(responseStr, NameDeduplicationResponse.class); + assertEquals(goldResponse.getResults(), response.getResults()); + } + private NameDeduplicationRequest readValueNameDeduplication(String testFilename) throws IOException { + File input = new File("src/test/mock-data/request", testFilename); + return mapper.readValue(input, NameDeduplicationRequest.class); + } } diff --git a/api/src/test/java/com/basistech/rosette/api/RosetteRequestTest.java b/api/src/test/java/com/basistech/rosette/api/RosetteRequestTest.java new file mode 100644 index 0000000000..f57027b107 --- /dev/null +++ b/api/src/test/java/com/basistech/rosette/api/RosetteRequestTest.java @@ -0,0 +1,190 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.api; + +import com.basistech.rosette.api.common.AbstractRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EntitiesOptions; +import com.basistech.rosette.apimodel.EntitiesResponse; +import com.basistech.rosette.apimodel.ErrorResponse; +import com.basistech.rosette.apimodel.LanguageOptions; +import com.basistech.rosette.apimodel.LanguageResponse; +import com.basistech.rosette.apimodel.Response; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockserver.client.MockServerClient; +import org.mockserver.junit.jupiter.MockServerExtension; +import org.mockserver.matchers.Times; +import org.mockserver.model.HttpRequest; +import org.mockserver.model.HttpResponse; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@ExtendWith(MockServerExtension.class) +class RosetteRequestTest { + private MockServerClient mockServer; + private HttpRosetteAPI api; + + @BeforeEach + void setup(MockServerClient mockServer) { + this.mockServer = mockServer; + } + + private void setupResponse(String requestPath, String responseString, int statusCode, int delayMillis, int requestTimes) { + this.mockServer.when(HttpRequest.request().withPath(requestPath), Times.exactly(requestTimes)) + .respond(HttpResponse.response() + .withHeader("Content-Type", "application/json") + .withHeader("X-BabelStreetAPI-Concurrency", "5") + .withStatusCode(statusCode) + .withBody(responseString) + .withDelay(TimeUnit.MILLISECONDS, delayMillis)); + } + + + @Test + void successfulRequest() throws ExecutionException, InterruptedException { + //Api client setup + this.api = new HttpRosetteAPI.Builder().url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())).build(); + + //response setup + String entitiesResponse = "{\"entities\" : [ { \"type\" : \"ORGANIZATION\", \"mention\" : \"Securities and Exchange Commission\", \"normalized\" : \"U.S. Securities and Exchange Commission\", \"count\" : 1, \"mentionOffsets\" : [ { \"startOffset\" : 4, \"endOffset\" : 38 } ], \"entityId\" : \"Q953944\", \"confidence\" : 0.39934742, \"linkingConfidence\" : 0.67404154 } ] }"; + setupResponse("/rest/v1/entities", entitiesResponse, 200, 0, 1); + + //request setup + String entitiesTextData = "The Securities and Exchange Commission today announced the leadership of the agency’s trial unit."; + DocumentRequest entitiesRequestData = DocumentRequest.builder() + .content(entitiesTextData) + .build(); + RosetteRequest entitiesRequest = this.api.createRosetteRequest(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, entitiesRequestData, EntitiesResponse.class); + + //testing the request + ExecutorService threadPool = Executors.newFixedThreadPool(1); + Future response = threadPool.submit(entitiesRequest); + assertInstanceOf(EntitiesResponse.class, response.get()); + assertEquals(response.get(), entitiesRequest.getResponse()); + threadPool.shutdownNow(); + } + + + @Test + void errorResponse() throws ExecutionException, InterruptedException { + //Api client setup + this.api = new HttpRosetteAPI.Builder().url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())).build(); + + //response setup + String entitiesResponse = "{ \"code\" : \"badRequestFormat\", \"message\" : \"no content provided; must be one of an attachment, an inline \\\"content\\\" field, or an external \\\"contentUri\\\"\" }"; + setupResponse("/rest/v1/entities", entitiesResponse, 400, 0, 1); + + //request setup + DocumentRequest entitiesRequestData = DocumentRequest.builder() + .build(); + RosetteRequest entitiesRequest = this.api.createRosetteRequest(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, entitiesRequestData, EntitiesResponse.class); + + //testing the request + ExecutorService threadPool = Executors.newFixedThreadPool(1); + Future response = threadPool.submit(entitiesRequest); + assertInstanceOf(ErrorResponse.class, response.get()); + assertEquals(response.get(), entitiesRequest.getResponse()); + threadPool.shutdownNow(); + } + + @Test + void testTiming() throws ExecutionException, InterruptedException { + int delay = 100; + //api setup + this.api = new HttpRosetteAPI.Builder().url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .connectionConcurrency(1).build(); + + //responses setup + int entitiesRespCount = 10; + int languageRespCount = 4; + assertEquals(0, entitiesRespCount % 2); + assertEquals(0, entitiesRespCount % 2); + String entitiesResponse = "{\"entities\" : [ { \"type\" : \"ORGANIZATION\", \"mention\" : \"Securities and Exchange Commission\", \"normalized\" : \"U.S. Securities and Exchange Commission\", \"count\" : 1, \"mentionOffsets\" : [ { \"startOffset\" : 4, \"endOffset\" : 38 } ], \"entityId\" : \"Q953944\", \"confidence\" : 0.39934742, \"linkingConfidence\" : 0.67404154 } ] }"; + setupResponse("/rest/v1/entities", entitiesResponse, 200, delay, entitiesRespCount); + String languageResponse = " {\"code\" : \"badRequestFormat\", \"message\" : \"no content provided; must be one of an attachment, an inline \\\"content\\\" field, or an external \\\"contentUri\\\"\" }"; + setupResponse("/rest/v1/language", languageResponse, 400, delay, languageRespCount); + + //requests setup + String entitiesTextData = "The Securities and Exchange Commission today announced the leadership of the agency’s trial unit."; + DocumentRequest entitiesRequestData = DocumentRequest.builder() + .content(entitiesTextData) + .build(); + DocumentRequest languageRequestData = DocumentRequest.builder().build(); + List requests = new ArrayList<>(); + for (int i = 0; i < entitiesRespCount / 2; i++) { + requests.add(this.api.createRosetteRequest(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, entitiesRequestData, EntitiesResponse.class)); + } + for (int i = 0; i < languageRespCount / 2; i++) { + requests.add(this.api.createRosetteRequest(AbstractRosetteAPI.LANGUAGE_SERVICE_PATH, languageRequestData, LanguageResponse.class)); + } + + //run requests + ExecutorService threadPool = Executors.newFixedThreadPool(7); + Date d1 = new Date(); + List> responses = threadPool.invokeAll(requests); + for (int i = 0; i < responses.size(); i++) { + responses.get(i).get(); + } + Date d2 = new Date(); + + assertTrue(d2.getTime() - d1.getTime() > delay * requests.size()); // at least as long as the delay in the request + + //run requests concurrently + int concurrency = 3; + this.api = new HttpRosetteAPI.Builder().url(String.format("http://localhost:%d/rest/v1", mockServer.getPort())) + .connectionConcurrency(3).build(); + + requests = new ArrayList<>(); + for (int i = 0; i < entitiesRespCount / 2; i++) { + requests.add(this.api.createRosetteRequest(AbstractRosetteAPI.ENTITIES_SERVICE_PATH, entitiesRequestData, EntitiesResponse.class)); + } + for (int i = 0; i < entitiesRespCount / 2; i++) { + requests.add(this.api.createRosetteRequest(AbstractRosetteAPI.LANGUAGE_SERVICE_PATH, languageRequestData, LanguageResponse.class)); + } + + + d1 = new Date(); + responses = threadPool.invokeAll(requests); + for (int i = 0; i < responses.size(); i++) { + responses.get(i).get(); + } + d2 = new Date(); + + assertTrue(d2.getTime() - d1.getTime() < delay * requests.size()); // less than serial requests + assertTrue(d2.getTime() - d1.getTime() > requests.size() / concurrency * delay); // running faster than this would suggest it exceeds the maximum concurrency + } + + @AfterEach + void after() throws IOException { + this.api.close(); + } + +} \ No newline at end of file diff --git a/api/src/test/mock-data/mockgen.py b/api/src/test/mock-data/mockgen.py index 5c95b1f417..9cf79248cd 100755 --- a/api/src/test/mock-data/mockgen.py +++ b/api/src/test/mock-data/mockgen.py @@ -5,23 +5,25 @@ import argparse import csv -import feedparser import glob import io import json import os + +import feedparser import requests import sys DOC_ENDPOINTS = ["language", "morphology/complete", "entities", "entities/linked", "categories", "sentiment"] -RNT_ENDPOINTS = ["translated-name"] -RNI_ENDPOINTS = ["matched-name"] +RNT_ENDPOINTS = ["name-translation"] +RNI_ENDPOINTS = ["name-similarity"] GNEWS_LANGS = {"eng": "ned=us&hl=en-US", "zho": "ned=cn&hl=zh-CN", "ara": "ned=ar_me&hl=ar", "spa": "ned=es_mx&hl=es", "fra": "ned=fr&hl=fr"} + def capture(req, endpoints, filename_prefix): for endpoint in endpoints: resp = requests.post(args.endpoint + "/" + endpoint + "?debug=true", @@ -38,19 +40,17 @@ def capture(req, endpoints, filename_prefix): req_file.write(json.dumps(req, ensure_ascii=False, indent=2, sort_keys=True, encoding="utf8")) resp_file.write(json.dumps(resp.json(), ensure_ascii=False, indent=2, sort_keys=True, encoding="utf8")) resp_status_file.write(unicode(resp.status_code)) - req_file.close() - resp_file.close() print "created mock req/resp files for %s" % (filename_prefix + "-" + endpoint) parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="create RosApi mocked test data") parser.add_argument("--endpoint", default="http://jugmaster.basistech.net/rest/v1", help="RosApi endpoint") -parser.add_argument("--user-key", help="RosApi user_key") +parser.add_argument("--api-key", help="RosApi Key") args = parser.parse_args() headers = {"Content-Type": "application/json"} -if args.user_key: - headers['user_key'] = args.user_key +if args.api_key: + headers['X-BabelStreetAPI-Key'] = args.api_key # prep & clean up for folder in ["request", "response"]: @@ -63,15 +63,13 @@ def capture(req, endpoints, filename_prefix): # store some info resp = requests.get(args.endpoint + "/info", headers=headers) if resp.status_code != 200: - print "info call failed - abord" + print "info call failed - abort" sys.exit(1) else: with io.open("response/info.json", "w", encoding="utf8") as resp_file,\ - io.open("response/info.status", "w", encoding="utf8") as resp_status_file: + io.open("response/info.status", "w", encoding="utf8") as resp_status_file: resp_file.write(json.dumps(resp.json(), ensure_ascii=False, indent=2, sort_keys=True, encoding="utf8")) resp_status_file.write(unicode(resp.status_code)) - resp_file.close() - resp_status_file.clse() # deal with local docs with open("source/doc-strings.tsv", "r") as tsvfile: @@ -84,17 +82,12 @@ def capture(req, endpoints, filename_prefix): filename_prefix = row["language"] else: filename_prefix = "xxx" - if row["unit"]: - req["unit"] = row["unit"] - filename_prefix += "-" + row["unit"] - else: - filename_prefix += "-null" + filename_prefix += "-doc" if row["content"]: req["content"] = row["content"] else: continue capture(req, DOC_ENDPOINTS, filename_prefix) - tsvfile.close() # deal with URLs for key in GNEWS_LANGS.keys(): @@ -113,7 +106,6 @@ def capture(req, endpoints, filename_prefix): i += 1 filename_prefix = "rnt-" + str(i) capture(row, RNT_ENDPOINTS, filename_prefix) - tsvfile.close() # deal with RNI with open("source/rni.tsv", "r") as tsvfile: @@ -134,5 +126,4 @@ def capture(req, endpoints, filename_prefix): print "bad column heading %s - abort" % column_name sys.exit(1) capture({"name1": name1, "name2": name2}, RNI_ENDPOINTS, filename_prefix) - tsvfile.close() diff --git a/api/src/test/mock-data/request/ara-doc-categories.json b/api/src/test/mock-data/request/ara-doc-categories.json index e5bec9e662..f356c4f24e 100644 --- a/api/src/test/mock-data/request/ara-doc-categories.json +++ b/api/src/test/mock-data/request/ara-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش)\n\nناتو يفكر بمسؤول مدني لأفغانستان\n\nيخطط حلف شمال الأطلسي (ناتو) لتعيين مسؤول مدني كبير في أفغانستان، وسط دعوات لتحسين التنسيق السياسي والتنموي في البلاد وفق ما نقلته صحيفة وول ستريت. وقالت الصحيفة إن السفير البريطاني في كابل في مقدمة المرشحين لهذا المنصب والذي من المحتمل أن يعلن بالتزامن مع مؤتمر دولي عن مستقبل أفغانستان المقرر عقده في لندن في 28 يناير/كانون الثاني المقبل.\n وأضافت الصحيفة -في تقرير لها من كابل- أن المسؤول الجديد سيترأس دعامة مدنية للتحالف الذي تقوده الولايات المتحدة لإدارة التمويل والمساعدات للولايات الأفغانية لتحاشي المؤسسات الأفغانية الفاسدة\". وكان الأمين العام للأمم المتحدة بان كي مون دعا هذا الشهر لتعيين مسؤول مدني رفيع ضمن قوة المساعدة الدولية لإرساء الأمن في أفغانستان (إيساف) التي يقودها حلف الأطلسي للمساعدة في تنسيق الجهود السياسية والتنموية في الحرب التي دخلت عامها التاسع. وأضاف أن تعيين هذا المسؤول سيتيح تحسين التنسيق بين العمل السياسي والتنموي وخصوصا عبر فرق إعادة البناء في الولايات الأفغانية. وقالت جورنال ستريت إن المنصب الجديد سيكون نظيرا للأميركي ستانلي ماكريستال قائد القوات الأميركية وقوات حلف الأطلسي في أفغانستان. ويتوقع وصول أربعين ألف جندي آخرين لأفغانستان في الأشهر القليلة المقبلة في إطار إستراتيجية لمجابهة العمليات المسلحة لحركة طالبان. وأشارت الصحيفة إلى أن خطة تعيين السفير البريطاني مارك سيدويل وجدت تأييد الولايات المتحدة ومن المرجح أن يصادق عليها باقي الحلفاء.", - "language": "ara", - "unit": "doc" -} \ No newline at end of file + + "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", + "language": "ara" +} diff --git a/api/src/test/mock-data/request/ara-doc-entities.json b/api/src/test/mock-data/request/ara-doc-entities.json index e5bec9e662..f356c4f24e 100644 --- a/api/src/test/mock-data/request/ara-doc-entities.json +++ b/api/src/test/mock-data/request/ara-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش)\n\nناتو يفكر بمسؤول مدني لأفغانستان\n\nيخطط حلف شمال الأطلسي (ناتو) لتعيين مسؤول مدني كبير في أفغانستان، وسط دعوات لتحسين التنسيق السياسي والتنموي في البلاد وفق ما نقلته صحيفة وول ستريت. وقالت الصحيفة إن السفير البريطاني في كابل في مقدمة المرشحين لهذا المنصب والذي من المحتمل أن يعلن بالتزامن مع مؤتمر دولي عن مستقبل أفغانستان المقرر عقده في لندن في 28 يناير/كانون الثاني المقبل.\n وأضافت الصحيفة -في تقرير لها من كابل- أن المسؤول الجديد سيترأس دعامة مدنية للتحالف الذي تقوده الولايات المتحدة لإدارة التمويل والمساعدات للولايات الأفغانية لتحاشي المؤسسات الأفغانية الفاسدة\". وكان الأمين العام للأمم المتحدة بان كي مون دعا هذا الشهر لتعيين مسؤول مدني رفيع ضمن قوة المساعدة الدولية لإرساء الأمن في أفغانستان (إيساف) التي يقودها حلف الأطلسي للمساعدة في تنسيق الجهود السياسية والتنموية في الحرب التي دخلت عامها التاسع. وأضاف أن تعيين هذا المسؤول سيتيح تحسين التنسيق بين العمل السياسي والتنموي وخصوصا عبر فرق إعادة البناء في الولايات الأفغانية. وقالت جورنال ستريت إن المنصب الجديد سيكون نظيرا للأميركي ستانلي ماكريستال قائد القوات الأميركية وقوات حلف الأطلسي في أفغانستان. ويتوقع وصول أربعين ألف جندي آخرين لأفغانستان في الأشهر القليلة المقبلة في إطار إستراتيجية لمجابهة العمليات المسلحة لحركة طالبان. وأشارت الصحيفة إلى أن خطة تعيين السفير البريطاني مارك سيدويل وجدت تأييد الولايات المتحدة ومن المرجح أن يصادق عليها باقي الحلفاء.", - "language": "ara", - "unit": "doc" -} \ No newline at end of file + + "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", + "language": "ara" +} diff --git a/api/src/test/mock-data/request/ara-doc-entities_linked.json b/api/src/test/mock-data/request/ara-doc-entities_linked.json index e5bec9e662..f356c4f24e 100644 --- a/api/src/test/mock-data/request/ara-doc-entities_linked.json +++ b/api/src/test/mock-data/request/ara-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش)\n\nناتو يفكر بمسؤول مدني لأفغانستان\n\nيخطط حلف شمال الأطلسي (ناتو) لتعيين مسؤول مدني كبير في أفغانستان، وسط دعوات لتحسين التنسيق السياسي والتنموي في البلاد وفق ما نقلته صحيفة وول ستريت. وقالت الصحيفة إن السفير البريطاني في كابل في مقدمة المرشحين لهذا المنصب والذي من المحتمل أن يعلن بالتزامن مع مؤتمر دولي عن مستقبل أفغانستان المقرر عقده في لندن في 28 يناير/كانون الثاني المقبل.\n وأضافت الصحيفة -في تقرير لها من كابل- أن المسؤول الجديد سيترأس دعامة مدنية للتحالف الذي تقوده الولايات المتحدة لإدارة التمويل والمساعدات للولايات الأفغانية لتحاشي المؤسسات الأفغانية الفاسدة\". وكان الأمين العام للأمم المتحدة بان كي مون دعا هذا الشهر لتعيين مسؤول مدني رفيع ضمن قوة المساعدة الدولية لإرساء الأمن في أفغانستان (إيساف) التي يقودها حلف الأطلسي للمساعدة في تنسيق الجهود السياسية والتنموية في الحرب التي دخلت عامها التاسع. وأضاف أن تعيين هذا المسؤول سيتيح تحسين التنسيق بين العمل السياسي والتنموي وخصوصا عبر فرق إعادة البناء في الولايات الأفغانية. وقالت جورنال ستريت إن المنصب الجديد سيكون نظيرا للأميركي ستانلي ماكريستال قائد القوات الأميركية وقوات حلف الأطلسي في أفغانستان. ويتوقع وصول أربعين ألف جندي آخرين لأفغانستان في الأشهر القليلة المقبلة في إطار إستراتيجية لمجابهة العمليات المسلحة لحركة طالبان. وأشارت الصحيفة إلى أن خطة تعيين السفير البريطاني مارك سيدويل وجدت تأييد الولايات المتحدة ومن المرجح أن يصادق عليها باقي الحلفاء.", - "language": "ara", - "unit": "doc" -} \ No newline at end of file + + "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", + "language": "ara" +} diff --git a/api/src/test/mock-data/request/ara-doc-language.json b/api/src/test/mock-data/request/ara-doc-language.json index e5bec9e662..f356c4f24e 100644 --- a/api/src/test/mock-data/request/ara-doc-language.json +++ b/api/src/test/mock-data/request/ara-doc-language.json @@ -1,5 +1,5 @@ { - "content": "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش)\n\nناتو يفكر بمسؤول مدني لأفغانستان\n\nيخطط حلف شمال الأطلسي (ناتو) لتعيين مسؤول مدني كبير في أفغانستان، وسط دعوات لتحسين التنسيق السياسي والتنموي في البلاد وفق ما نقلته صحيفة وول ستريت. وقالت الصحيفة إن السفير البريطاني في كابل في مقدمة المرشحين لهذا المنصب والذي من المحتمل أن يعلن بالتزامن مع مؤتمر دولي عن مستقبل أفغانستان المقرر عقده في لندن في 28 يناير/كانون الثاني المقبل.\n وأضافت الصحيفة -في تقرير لها من كابل- أن المسؤول الجديد سيترأس دعامة مدنية للتحالف الذي تقوده الولايات المتحدة لإدارة التمويل والمساعدات للولايات الأفغانية لتحاشي المؤسسات الأفغانية الفاسدة\". وكان الأمين العام للأمم المتحدة بان كي مون دعا هذا الشهر لتعيين مسؤول مدني رفيع ضمن قوة المساعدة الدولية لإرساء الأمن في أفغانستان (إيساف) التي يقودها حلف الأطلسي للمساعدة في تنسيق الجهود السياسية والتنموية في الحرب التي دخلت عامها التاسع. وأضاف أن تعيين هذا المسؤول سيتيح تحسين التنسيق بين العمل السياسي والتنموي وخصوصا عبر فرق إعادة البناء في الولايات الأفغانية. وقالت جورنال ستريت إن المنصب الجديد سيكون نظيرا للأميركي ستانلي ماكريستال قائد القوات الأميركية وقوات حلف الأطلسي في أفغانستان. ويتوقع وصول أربعين ألف جندي آخرين لأفغانستان في الأشهر القليلة المقبلة في إطار إستراتيجية لمجابهة العمليات المسلحة لحركة طالبان. وأشارت الصحيفة إلى أن خطة تعيين السفير البريطاني مارك سيدويل وجدت تأييد الولايات المتحدة ومن المرجح أن يصادق عليها باقي الحلفاء.", - "language": "ara", - "unit": "doc" -} \ No newline at end of file + + "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", + "language": "ara" +} diff --git a/api/src/test/mock-data/request/ara-doc-morphology_complete.json b/api/src/test/mock-data/request/ara-doc-morphology_complete.json index e5bec9e662..f356c4f24e 100644 --- a/api/src/test/mock-data/request/ara-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/ara-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش)\n\nناتو يفكر بمسؤول مدني لأفغانستان\n\nيخطط حلف شمال الأطلسي (ناتو) لتعيين مسؤول مدني كبير في أفغانستان، وسط دعوات لتحسين التنسيق السياسي والتنموي في البلاد وفق ما نقلته صحيفة وول ستريت. وقالت الصحيفة إن السفير البريطاني في كابل في مقدمة المرشحين لهذا المنصب والذي من المحتمل أن يعلن بالتزامن مع مؤتمر دولي عن مستقبل أفغانستان المقرر عقده في لندن في 28 يناير/كانون الثاني المقبل.\n وأضافت الصحيفة -في تقرير لها من كابل- أن المسؤول الجديد سيترأس دعامة مدنية للتحالف الذي تقوده الولايات المتحدة لإدارة التمويل والمساعدات للولايات الأفغانية لتحاشي المؤسسات الأفغانية الفاسدة\". وكان الأمين العام للأمم المتحدة بان كي مون دعا هذا الشهر لتعيين مسؤول مدني رفيع ضمن قوة المساعدة الدولية لإرساء الأمن في أفغانستان (إيساف) التي يقودها حلف الأطلسي للمساعدة في تنسيق الجهود السياسية والتنموية في الحرب التي دخلت عامها التاسع. وأضاف أن تعيين هذا المسؤول سيتيح تحسين التنسيق بين العمل السياسي والتنموي وخصوصا عبر فرق إعادة البناء في الولايات الأفغانية. وقالت جورنال ستريت إن المنصب الجديد سيكون نظيرا للأميركي ستانلي ماكريستال قائد القوات الأميركية وقوات حلف الأطلسي في أفغانستان. ويتوقع وصول أربعين ألف جندي آخرين لأفغانستان في الأشهر القليلة المقبلة في إطار إستراتيجية لمجابهة العمليات المسلحة لحركة طالبان. وأشارت الصحيفة إلى أن خطة تعيين السفير البريطاني مارك سيدويل وجدت تأييد الولايات المتحدة ومن المرجح أن يصادق عليها باقي الحلفاء.", - "language": "ara", - "unit": "doc" -} \ No newline at end of file + + "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", + "language": "ara" +} diff --git a/api/src/test/mock-data/request/ara-doc-sentiment.json b/api/src/test/mock-data/request/ara-doc-sentiment.json index e5bec9e662..f356c4f24e 100644 --- a/api/src/test/mock-data/request/ara-doc-sentiment.json +++ b/api/src/test/mock-data/request/ara-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش)\n\nناتو يفكر بمسؤول مدني لأفغانستان\n\nيخطط حلف شمال الأطلسي (ناتو) لتعيين مسؤول مدني كبير في أفغانستان، وسط دعوات لتحسين التنسيق السياسي والتنموي في البلاد وفق ما نقلته صحيفة وول ستريت. وقالت الصحيفة إن السفير البريطاني في كابل في مقدمة المرشحين لهذا المنصب والذي من المحتمل أن يعلن بالتزامن مع مؤتمر دولي عن مستقبل أفغانستان المقرر عقده في لندن في 28 يناير/كانون الثاني المقبل.\n وأضافت الصحيفة -في تقرير لها من كابل- أن المسؤول الجديد سيترأس دعامة مدنية للتحالف الذي تقوده الولايات المتحدة لإدارة التمويل والمساعدات للولايات الأفغانية لتحاشي المؤسسات الأفغانية الفاسدة\". وكان الأمين العام للأمم المتحدة بان كي مون دعا هذا الشهر لتعيين مسؤول مدني رفيع ضمن قوة المساعدة الدولية لإرساء الأمن في أفغانستان (إيساف) التي يقودها حلف الأطلسي للمساعدة في تنسيق الجهود السياسية والتنموية في الحرب التي دخلت عامها التاسع. وأضاف أن تعيين هذا المسؤول سيتيح تحسين التنسيق بين العمل السياسي والتنموي وخصوصا عبر فرق إعادة البناء في الولايات الأفغانية. وقالت جورنال ستريت إن المنصب الجديد سيكون نظيرا للأميركي ستانلي ماكريستال قائد القوات الأميركية وقوات حلف الأطلسي في أفغانستان. ويتوقع وصول أربعين ألف جندي آخرين لأفغانستان في الأشهر القليلة المقبلة في إطار إستراتيجية لمجابهة العمليات المسلحة لحركة طالبان. وأشارت الصحيفة إلى أن خطة تعيين السفير البريطاني مارك سيدويل وجدت تأييد الولايات المتحدة ومن المرجح أن يصادق عليها باقي الحلفاء.", - "language": "ara", - "unit": "doc" -} \ No newline at end of file + + "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", + "language": "ara" +} diff --git a/api/src/test/mock-data/request/ara-sentence-categories.json b/api/src/test/mock-data/request/ara-sentence-categories.json deleted file mode 100644 index 07f3c5ea20..0000000000 --- a/api/src/test/mock-data/request/ara-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", - "language": "ara", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/ara-sentence-entities.json b/api/src/test/mock-data/request/ara-sentence-entities.json deleted file mode 100644 index 07f3c5ea20..0000000000 --- a/api/src/test/mock-data/request/ara-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", - "language": "ara", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/ara-sentence-entities_linked.json b/api/src/test/mock-data/request/ara-sentence-entities_linked.json deleted file mode 100644 index 07f3c5ea20..0000000000 --- a/api/src/test/mock-data/request/ara-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", - "language": "ara", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/ara-sentence-language.json b/api/src/test/mock-data/request/ara-sentence-language.json deleted file mode 100644 index 07f3c5ea20..0000000000 --- a/api/src/test/mock-data/request/ara-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", - "language": "ara", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/ara-sentence-morphology_complete.json b/api/src/test/mock-data/request/ara-sentence-morphology_complete.json deleted file mode 100644 index 07f3c5ea20..0000000000 --- a/api/src/test/mock-data/request/ara-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", - "language": "ara", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/ara-sentence-sentiment.json b/api/src/test/mock-data/request/ara-sentence-sentiment.json deleted file mode 100644 index 07f3c5ea20..0000000000 --- a/api/src/test/mock-data/request/ara-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا.", - "language": "ara", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/ara-url-categories.json b/api/src/test/mock-data/request/ara-url-categories.json index 50d53cf275..6b61eeb8df 100644 --- a/api/src/test/mock-data/request/ara-url-categories.json +++ b/api/src/test/mock-data/request/ara-url-categories.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHR6DD0ibhzUUYiL3dzGewRaj-3QQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779450477067&ei=YwNNVf2qK5HT3AHmxYCQBQ&url=http://www.aljazeera.net/news/arabic/2015/5/8/%25D8%25A7%25D9%2584%25D8%25AA%25D8%25AD%25D8%25A7%25D9%2584%25D9%2581-%25D9%258A%25D9%2582%25D8%25B5%25D9%2581-%25D9%2585%25D9%2582%25D8%25B1%25D8%25A7%25D8%25AA-%25D9%2584%25D9%2584%25D8%25AD%25D9%2588%25D8%25AB%25D9%258A%25D9%258A%25D9%2586-%25D8%25A8%25D8%25B5%25D8%25B9%25D8%25AF%25D8%25A9-%25D9%2588%25D9%258A%25D8%25AF%25D8%25B9%25D9%2588-%25D8%25A7%25D9%2584%25D8%25B3%25D9%2583%25D8%25A7%25D9%2586-%25D9%2584%25D9%2584%25D9%2585%25D8%25BA%25D8%25A7%25D8%25AF%25D8%25B1%25D8%25A9" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHpNtD_Bd701KlmCsoSJxBG3i2jPg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779884330788&ei=4InMVpiSIcW13gHr-4uYCg&url=http://www.bbc.com/arabic/middleeast/2016/02/160223_lebanon_saudi_uae" +} diff --git a/api/src/test/mock-data/request/ara-url-entities.json b/api/src/test/mock-data/request/ara-url-entities.json index 50d53cf275..6b61eeb8df 100644 --- a/api/src/test/mock-data/request/ara-url-entities.json +++ b/api/src/test/mock-data/request/ara-url-entities.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHR6DD0ibhzUUYiL3dzGewRaj-3QQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779450477067&ei=YwNNVf2qK5HT3AHmxYCQBQ&url=http://www.aljazeera.net/news/arabic/2015/5/8/%25D8%25A7%25D9%2584%25D8%25AA%25D8%25AD%25D8%25A7%25D9%2584%25D9%2581-%25D9%258A%25D9%2582%25D8%25B5%25D9%2581-%25D9%2585%25D9%2582%25D8%25B1%25D8%25A7%25D8%25AA-%25D9%2584%25D9%2584%25D8%25AD%25D9%2588%25D8%25AB%25D9%258A%25D9%258A%25D9%2586-%25D8%25A8%25D8%25B5%25D8%25B9%25D8%25AF%25D8%25A9-%25D9%2588%25D9%258A%25D8%25AF%25D8%25B9%25D9%2588-%25D8%25A7%25D9%2584%25D8%25B3%25D9%2583%25D8%25A7%25D9%2586-%25D9%2584%25D9%2584%25D9%2585%25D8%25BA%25D8%25A7%25D8%25AF%25D8%25B1%25D8%25A9" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHpNtD_Bd701KlmCsoSJxBG3i2jPg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779884330788&ei=4InMVpiSIcW13gHr-4uYCg&url=http://www.bbc.com/arabic/middleeast/2016/02/160223_lebanon_saudi_uae" +} diff --git a/api/src/test/mock-data/request/ara-url-entities_linked.json b/api/src/test/mock-data/request/ara-url-entities_linked.json index 50d53cf275..6b61eeb8df 100644 --- a/api/src/test/mock-data/request/ara-url-entities_linked.json +++ b/api/src/test/mock-data/request/ara-url-entities_linked.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHR6DD0ibhzUUYiL3dzGewRaj-3QQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779450477067&ei=YwNNVf2qK5HT3AHmxYCQBQ&url=http://www.aljazeera.net/news/arabic/2015/5/8/%25D8%25A7%25D9%2584%25D8%25AA%25D8%25AD%25D8%25A7%25D9%2584%25D9%2581-%25D9%258A%25D9%2582%25D8%25B5%25D9%2581-%25D9%2585%25D9%2582%25D8%25B1%25D8%25A7%25D8%25AA-%25D9%2584%25D9%2584%25D8%25AD%25D9%2588%25D8%25AB%25D9%258A%25D9%258A%25D9%2586-%25D8%25A8%25D8%25B5%25D8%25B9%25D8%25AF%25D8%25A9-%25D9%2588%25D9%258A%25D8%25AF%25D8%25B9%25D9%2588-%25D8%25A7%25D9%2584%25D8%25B3%25D9%2583%25D8%25A7%25D9%2586-%25D9%2584%25D9%2584%25D9%2585%25D8%25BA%25D8%25A7%25D8%25AF%25D8%25B1%25D8%25A9" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHpNtD_Bd701KlmCsoSJxBG3i2jPg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779884330788&ei=4InMVpiSIcW13gHr-4uYCg&url=http://www.bbc.com/arabic/middleeast/2016/02/160223_lebanon_saudi_uae" +} diff --git a/api/src/test/mock-data/request/ara-url-language.json b/api/src/test/mock-data/request/ara-url-language.json index 50d53cf275..6b61eeb8df 100644 --- a/api/src/test/mock-data/request/ara-url-language.json +++ b/api/src/test/mock-data/request/ara-url-language.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHR6DD0ibhzUUYiL3dzGewRaj-3QQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779450477067&ei=YwNNVf2qK5HT3AHmxYCQBQ&url=http://www.aljazeera.net/news/arabic/2015/5/8/%25D8%25A7%25D9%2584%25D8%25AA%25D8%25AD%25D8%25A7%25D9%2584%25D9%2581-%25D9%258A%25D9%2582%25D8%25B5%25D9%2581-%25D9%2585%25D9%2582%25D8%25B1%25D8%25A7%25D8%25AA-%25D9%2584%25D9%2584%25D8%25AD%25D9%2588%25D8%25AB%25D9%258A%25D9%258A%25D9%2586-%25D8%25A8%25D8%25B5%25D8%25B9%25D8%25AF%25D8%25A9-%25D9%2588%25D9%258A%25D8%25AF%25D8%25B9%25D9%2588-%25D8%25A7%25D9%2584%25D8%25B3%25D9%2583%25D8%25A7%25D9%2586-%25D9%2584%25D9%2584%25D9%2585%25D8%25BA%25D8%25A7%25D8%25AF%25D8%25B1%25D8%25A9" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHpNtD_Bd701KlmCsoSJxBG3i2jPg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779884330788&ei=4InMVpiSIcW13gHr-4uYCg&url=http://www.bbc.com/arabic/middleeast/2016/02/160223_lebanon_saudi_uae" +} diff --git a/api/src/test/mock-data/request/ara-url-morphology_complete.json b/api/src/test/mock-data/request/ara-url-morphology_complete.json index 50d53cf275..6b61eeb8df 100644 --- a/api/src/test/mock-data/request/ara-url-morphology_complete.json +++ b/api/src/test/mock-data/request/ara-url-morphology_complete.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHR6DD0ibhzUUYiL3dzGewRaj-3QQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779450477067&ei=YwNNVf2qK5HT3AHmxYCQBQ&url=http://www.aljazeera.net/news/arabic/2015/5/8/%25D8%25A7%25D9%2584%25D8%25AA%25D8%25AD%25D8%25A7%25D9%2584%25D9%2581-%25D9%258A%25D9%2582%25D8%25B5%25D9%2581-%25D9%2585%25D9%2582%25D8%25B1%25D8%25A7%25D8%25AA-%25D9%2584%25D9%2584%25D8%25AD%25D9%2588%25D8%25AB%25D9%258A%25D9%258A%25D9%2586-%25D8%25A8%25D8%25B5%25D8%25B9%25D8%25AF%25D8%25A9-%25D9%2588%25D9%258A%25D8%25AF%25D8%25B9%25D9%2588-%25D8%25A7%25D9%2584%25D8%25B3%25D9%2583%25D8%25A7%25D9%2586-%25D9%2584%25D9%2584%25D9%2585%25D8%25BA%25D8%25A7%25D8%25AF%25D8%25B1%25D8%25A9" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHpNtD_Bd701KlmCsoSJxBG3i2jPg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779884330788&ei=4InMVpiSIcW13gHr-4uYCg&url=http://www.bbc.com/arabic/middleeast/2016/02/160223_lebanon_saudi_uae" +} diff --git a/api/src/test/mock-data/request/ara-url-sentiment.json b/api/src/test/mock-data/request/ara-url-sentiment.json index 50d53cf275..6b61eeb8df 100644 --- a/api/src/test/mock-data/request/ara-url-sentiment.json +++ b/api/src/test/mock-data/request/ara-url-sentiment.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHR6DD0ibhzUUYiL3dzGewRaj-3QQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779450477067&ei=YwNNVf2qK5HT3AHmxYCQBQ&url=http://www.aljazeera.net/news/arabic/2015/5/8/%25D8%25A7%25D9%2584%25D8%25AA%25D8%25AD%25D8%25A7%25D9%2584%25D9%2581-%25D9%258A%25D9%2582%25D8%25B5%25D9%2581-%25D9%2585%25D9%2582%25D8%25B1%25D8%25A7%25D8%25AA-%25D9%2584%25D9%2584%25D8%25AD%25D9%2588%25D8%25AB%25D9%258A%25D9%258A%25D9%2586-%25D8%25A8%25D8%25B5%25D8%25B9%25D8%25AF%25D8%25A9-%25D9%2588%25D9%258A%25D8%25AF%25D8%25B9%25D9%2588-%25D8%25A7%25D9%2584%25D8%25B3%25D9%2583%25D8%25A7%25D9%2586-%25D9%2584%25D9%2584%25D9%2585%25D8%25BA%25D8%25A7%25D8%25AF%25D8%25B1%25D8%25A9" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=ar_me&usg=AFQjCNHpNtD_Bd701KlmCsoSJxBG3i2jPg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779884330788&ei=4InMVpiSIcW13gHr-4uYCg&url=http://www.bbc.com/arabic/middleeast/2016/02/160223_lebanon_saudi_uae" +} diff --git a/api/src/test/mock-data/request/eng-doc-categories.json b/api/src/test/mock-data/request/eng-doc-categories.json index 05f50fb2e5..fd9ccc000c 100644 --- a/api/src/test/mock-data/request/eng-doc-categories.json +++ b/api/src/test/mock-data/request/eng-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-entities.json b/api/src/test/mock-data/request/eng-doc-entities.json index 05f50fb2e5..fd9ccc000c 100644 --- a/api/src/test/mock-data/request/eng-doc-entities.json +++ b/api/src/test/mock-data/request/eng-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-entities_linked.json b/api/src/test/mock-data/request/eng-doc-entities_linked.json index 05f50fb2e5..fd9ccc000c 100644 --- a/api/src/test/mock-data/request/eng-doc-entities_linked.json +++ b/api/src/test/mock-data/request/eng-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-entities_permid.json b/api/src/test/mock-data/request/eng-doc-entities_permid.json new file mode 100644 index 0000000000..30babf63d3 --- /dev/null +++ b/api/src/test/mock-data/request/eng-doc-entities_permid.json @@ -0,0 +1,4 @@ +{ + "content": "Toyota and Microsoft are large cap companies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-language.json b/api/src/test/mock-data/request/eng-doc-language.json index 05f50fb2e5..fd9ccc000c 100644 --- a/api/src/test/mock-data/request/eng-doc-language.json +++ b/api/src/test/mock-data/request/eng-doc-language.json @@ -1,5 +1,5 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-morphology_complete.json b/api/src/test/mock-data/request/eng-doc-morphology_complete.json index 05f50fb2e5..fd9ccc000c 100644 --- a/api/src/test/mock-data/request/eng-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/eng-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-relationships.json b/api/src/test/mock-data/request/eng-doc-relationships.json index 05f50fb2e5..a27da88541 100644 --- a/api/src/test/mock-data/request/eng-doc-relationships.json +++ b/api/src/test/mock-data/request/eng-doc-relationships.json @@ -1,5 +1,6 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + "content": "FLIR Systems is headquartered in Oregon and produces thermal imaging, night vision, and infrared cameras and sensor systems. According to the SEC’s order instituting a settled administrative proceeding, FLIR entered into a multi-million dollar contract to provide thermal binoculars to the Saudi government in November 2008. Timms and Ramahi were the primary sales employees responsible for the contract, and also were involved in negotiations to sell FLIR’s security cameras to the same government officials. At the time, Timms was the head of FLIR’s Middle East office in Dubai.", + "language": "eng" +} + + diff --git a/api/src/test/mock-data/request/eng-doc-sentiment.json b/api/src/test/mock-data/request/eng-doc-sentiment.json index 05f50fb2e5..fd9ccc000c 100644 --- a/api/src/test/mock-data/request/eng-doc-sentiment.json +++ b/api/src/test/mock-data/request/eng-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "Samsung Can Sell Its Tablet In The U.S. Market\n\n\nThe war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market.\n\nIn United States, Apple initiated a legal action against Samsung in April, claiming that the South Korean smartphones and tablets “slavishly” copy the iPhone and the iPad. As a result, Apple requested that Samsung will be prohibited from selling the gadgets in the U.S. market. The much expected ruling came late on Friday, as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung.\n\nU.S. District Judge Lucy Koh said that “It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed”. As a result, Koh rejected Apple’s request to bid sales of three Samsung smartphones models and the Samsung Tab 10.1. In the third quarter, Samsung had 23.8 percent of the global smartphone market, nine points higher than Apple.\n\nThe U.S. judge wrote that “Apple has established a likelihood of success on the merits at trial” regarding some of Samsung’s smartphones. Apple would likely prove Samsung infringed one of its tablet patents, but it did not show that it was likely to overcome Samsung’s challenges to the patent’s validity.\n\nAlthough this might be a minor victory for Samsung, as Apple still has high changes of winning the overall lawsuit, Koh’s decision makes it possible for the South Korean company to start Christmas sales.\n\nAnalysts say that global tablet sales are expected to boost to more than 50 million this year, with Apple still the leader of the market. The Silicon Valley based company sold 11.12 million units during the September quarter. So far, Apple sold more than 30 million iPads worldwide.\n\nLast week, a judge in Australia ruled in favor of Apple by extending a ban on Samsung’s iPad sales within the country. Australia is a key market for Samsung Galaxy Tablet and two weeks of banned sales isn’t much, but it can get urgent if Samsung won’t start selling the gadget before Christmas.\n\n\n\nhttp://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html\n2011.12.05", - "language": "eng", - "unit": "doc" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/eng-doc-similar_terms.json b/api/src/test/mock-data/request/eng-doc-similar_terms.json new file mode 100644 index 0000000000..5c93e0b0c7 --- /dev/null +++ b/api/src/test/mock-data/request/eng-doc-similar_terms.json @@ -0,0 +1,5 @@ +{ + "content": "spy", + "resultLanguages": ["spa", "deu", "jpn"], + "language": "eng" +} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-doc-syntax_dependencies.json b/api/src/test/mock-data/request/eng-doc-syntax_dependencies.json new file mode 100644 index 0000000000..0a96833282 --- /dev/null +++ b/api/src/test/mock-data/request/eng-doc-syntax_dependencies.json @@ -0,0 +1,4 @@ +{ + "content": "Yoshinori Ohsumi, a Japanese cell biologist, was awarded the Nobel Prize in Physiology or Medicine on Monday.", + "language": "eng" +} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-sentence-entities.json b/api/src/test/mock-data/request/eng-sentence-entities.json deleted file mode 100644 index fbf7e0e4e2..0000000000 --- a/api/src/test/mock-data/request/eng-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", - "language": "eng", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-sentence-entities_linked.json b/api/src/test/mock-data/request/eng-sentence-entities_linked.json deleted file mode 100644 index fbf7e0e4e2..0000000000 --- a/api/src/test/mock-data/request/eng-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", - "language": "eng", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-sentence-language.json b/api/src/test/mock-data/request/eng-sentence-language.json deleted file mode 100644 index fbf7e0e4e2..0000000000 --- a/api/src/test/mock-data/request/eng-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", - "language": "eng", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-sentence-morphology_complete.json b/api/src/test/mock-data/request/eng-sentence-morphology_complete.json deleted file mode 100644 index fbf7e0e4e2..0000000000 --- a/api/src/test/mock-data/request/eng-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", - "language": "eng", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-sentence-relationships.json b/api/src/test/mock-data/request/eng-sentence-relationships.json deleted file mode 100644 index 4f6ac8355e..0000000000 --- a/api/src/test/mock-data/request/eng-sentence-relationships.json +++ /dev/null @@ -1,4 +0,0 @@ -{ "content": "The first men to reach the moon were Mr. Armstrong and his co-pilot, Col. Edwin E. Aldrin.", - "language": "eng", - "unit": "sentence" -} diff --git a/api/src/test/mock-data/request/eng-sentence-sentiment.json b/api/src/test/mock-data/request/eng-sentence-sentiment.json deleted file mode 100644 index fbf7e0e4e2..0000000000 --- a/api/src/test/mock-data/request/eng-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", - "language": "eng", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/eng-url-categories.json b/api/src/test/mock-data/request/eng-url-categories.json index 980cb256ae..9314f66cfe 100644 --- a/api/src/test/mock-data/request/eng-url-categories.json +++ b/api/src/test/mock-data/request/eng-url-categories.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGFqOZMu0UOnkQTg1BMHm9kFzjvfA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779051168676&ei=8YnMVsijFoTbpwe997ugBQ&url=https://www.washingtonpost.com/world/national-security/white-house-unveils-plan-for-closing-military-prison-at-guantanamo-bay/2016/02/23/3860f408-da35-11e5-81ae-7491b9b9e7df_story.html" +} diff --git a/api/src/test/mock-data/request/eng-url-entities.json b/api/src/test/mock-data/request/eng-url-entities.json index 980cb256ae..9314f66cfe 100644 --- a/api/src/test/mock-data/request/eng-url-entities.json +++ b/api/src/test/mock-data/request/eng-url-entities.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGFqOZMu0UOnkQTg1BMHm9kFzjvfA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779051168676&ei=8YnMVsijFoTbpwe997ugBQ&url=https://www.washingtonpost.com/world/national-security/white-house-unveils-plan-for-closing-military-prison-at-guantanamo-bay/2016/02/23/3860f408-da35-11e5-81ae-7491b9b9e7df_story.html" +} diff --git a/api/src/test/mock-data/request/eng-url-entities_linked.json b/api/src/test/mock-data/request/eng-url-entities_linked.json index 980cb256ae..9314f66cfe 100644 --- a/api/src/test/mock-data/request/eng-url-entities_linked.json +++ b/api/src/test/mock-data/request/eng-url-entities_linked.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGFqOZMu0UOnkQTg1BMHm9kFzjvfA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779051168676&ei=8YnMVsijFoTbpwe997ugBQ&url=https://www.washingtonpost.com/world/national-security/white-house-unveils-plan-for-closing-military-prison-at-guantanamo-bay/2016/02/23/3860f408-da35-11e5-81ae-7491b9b9e7df_story.html" +} diff --git a/api/src/test/mock-data/request/eng-url-language.json b/api/src/test/mock-data/request/eng-url-language.json index 980cb256ae..9314f66cfe 100644 --- a/api/src/test/mock-data/request/eng-url-language.json +++ b/api/src/test/mock-data/request/eng-url-language.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGFqOZMu0UOnkQTg1BMHm9kFzjvfA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779051168676&ei=8YnMVsijFoTbpwe997ugBQ&url=https://www.washingtonpost.com/world/national-security/white-house-unveils-plan-for-closing-military-prison-at-guantanamo-bay/2016/02/23/3860f408-da35-11e5-81ae-7491b9b9e7df_story.html" +} diff --git a/api/src/test/mock-data/request/eng-url-morphology_complete.json b/api/src/test/mock-data/request/eng-url-morphology_complete.json index 980cb256ae..9314f66cfe 100644 --- a/api/src/test/mock-data/request/eng-url-morphology_complete.json +++ b/api/src/test/mock-data/request/eng-url-morphology_complete.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGFqOZMu0UOnkQTg1BMHm9kFzjvfA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779051168676&ei=8YnMVsijFoTbpwe997ugBQ&url=https://www.washingtonpost.com/world/national-security/white-house-unveils-plan-for-closing-military-prison-at-guantanamo-bay/2016/02/23/3860f408-da35-11e5-81ae-7491b9b9e7df_story.html" +} diff --git a/api/src/test/mock-data/request/eng-url-relationships.json b/api/src/test/mock-data/request/eng-url-relationships.json deleted file mode 100644 index 89ec0b0214..0000000000 --- a/api/src/test/mock-data/request/eng-url-relationships.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} diff --git a/api/src/test/mock-data/request/eng-url-sentiment.json b/api/src/test/mock-data/request/eng-url-sentiment.json index 980cb256ae..9314f66cfe 100644 --- a/api/src/test/mock-data/request/eng-url-sentiment.json +++ b/api/src/test/mock-data/request/eng-url-sentiment.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGOuNpkO_3eDYWh76D8lZDl5jI_pQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778830388718&ei=bwNNVfDFItjU3AGy-4HQDQ&url=http://www.usatoday.com/story/news/politics/2015/05/08/obama-nike-visit-free-trade-jobs-protests/26974883/" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNGFqOZMu0UOnkQTg1BMHm9kFzjvfA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779051168676&ei=8YnMVsijFoTbpwe997ugBQ&url=https://www.washingtonpost.com/world/national-security/white-house-unveils-plan-for-closing-military-prison-at-guantanamo-bay/2016/02/23/3860f408-da35-11e5-81ae-7491b9b9e7df_story.html" +} diff --git a/api/src/test/mock-data/request/fra-doc-categories.json b/api/src/test/mock-data/request/fra-doc-categories.json index ffa5fb3cac..dfe0baad81 100644 --- a/api/src/test/mock-data/request/fra-doc-categories.json +++ b/api/src/test/mock-data/request/fra-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "Les Etats-Unis face au défi persistant du chômage\n\nUn chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des \"modifications de comportement\" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une \"transformation fondamentale\" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale.\nDurant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. \"Je me sens comme la lie de la terre\", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur \"honte\" et s'interroge : 10 % de chômage, comment en est-on arrivé là ?\n\nPour beaucoup d'analystes, c'est pour avoir négligé l'impact du chômage alors que se profilaient des signes de reprise économique (et surtout financière) que la Maison Blanche et le Parti démocrate se trouvent confrontés à une forte désaffection de l'opinion à dix mois des élections à mi-mandat de novembre.\n\nAlors que le thème de l'emploi envahissait le champ des préoccupations, M. Obama a continué de donner la priorité à la réforme de la santé, à la lutte contre le réchauffement climatique ou la régulation financière. Tous sujets essentiels mais \"bien moins palpables, dans une période de crise aiguë, que le chômage, qui arase tout\", note Dean Baker, codirecteur du Centre de recherches sur les politiques économiques, un groupe de réflexion démocrate à Washington.\n\nUne étude du département du travail, publiée le 8 janvier, montre une différence essentielle entre l'impact de la crise actuelle sur l'emploi et les précédentes récessions. Lors de celles de 1974-1976 et de 1990-1993, le chômage était moins important, tant en chiffres absolus qu'en durée. Cette comparaison reste valide pour la récession de 1981-1983, qui vit le président républicain Ronald Reagan, un an après son élection, enregistrer son plus bas soutien dans l'opinion.\n\nPour résumer le désastre actuel : les Etats-Unis ont perdu depuis deux ans 5,24 % de leur emploi, alors que la chute n'avait été que de 1,4 % à 3 %, au pire, lors des récessions précédentes. Entre chômage total et partiel, la crise touche le travail de près d' un Américain sur cinq. N'ayant cessé de répéter que son pays affrontait \"la pire crise depuis la Grande Dépression\" des années 1930, Barack Obama avait donné le sentiment d'être très conscient du problème. Or là est le paradoxe : une fois élu, le président est apparu comme un dirigeant qui a fait un diagnostic correct mais n'en a tiré aucune conclusion.\n\nL'Amérique avait perdu 3 078 000 chômeurs lors de la dernière année du mandat de George Bush ; elle en a perdu 4 228 000 en un an de présidence Obama ! Le 10 janvier, invoquant \"l'urgence\", Christina Romer, présidente du conseil économique de M. Obama, a appelé à vite injecter 75 milliards de dollars supplémentaires pour régénérer l'emploi. Nul ne doute que M. Obama privilégiera cette nécessité en 2010.\n\nComment remédier au problème ? La plupart des analystes, constatant le \"découplage\" entre la reprise économique et celle de l'emploi, sont circonspects. Chef économiste de Goldman Sachs, Jan Hatzius, dans un texte intitulé \"10 questions pour 2010\", s'attend \"à un solde positif de 100 000 emplois par mois dès le second trimestre, insuffisant pour modifier significativement le taux de chômage\". Compte tenu de leur évolution démographique, les Etats-Unis doivent en effet créer 100 000 emplois mensuels pour juste stabiliser l'emploi.\n\nDean Baker explique encore que la marge de manoeuvre présidentielle est restreinte : \"Obama a raté le coche en limitant son plan de relance. Maintenant, il lui est politiquement impossible de retourner devant le Congrès pour l'augmenter. Les conséquences sont désastreuses. Même s'il lui reste 200 milliards de dollars à dépenser (sur 787 milliards), l'essentiel de l'impact du plan est passé.\"\n\nLe pire, selon lui, est que le président a fait son choix en toute connaissance de cause, pour \"privilégier la politique\". C'est-à-dire un compromis avec certains républicains qu'il n'a jamais obtenu. Pour M. Baker, cette quête du \"consensus\" a entraîné son parti dans l'état où il est. Et de conclure : \"Les républicains ont une stratégie efficace : ils bloquent tout changement pour dénoncer ensuite un président qui n'agit pas. Il est temps que celui-ci dénonce ce comportement de sabotage de l'économie nationale.\"\n\nMercredi, M. Obama a dit \"regretter d'avoir perdu le sens du contact direct avec les Américains sur leurs valeurs essentielles\". Son principal conseiller, David Axelrod, a évoqué \"les salaires bloqués, les emplois perdus\". Pour autant, changera-t-il d'attitude vis-à-vis du Congrès ? Peu y croient.\n\nLa Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 milliards de dollars non encore adoptée au Sénat. Les républicains assimilent désormais toute dépense publique à une gabegie. Harry Reid, le leader des démocrates au Sénat, négocierait déjà avec eux. Certains imaginent un abandon, pourtant peu probable, du plan d'assurance santé afin de parvenir à un soutien républicain aux embauches dans les PME. D'autres envisagent d'affecter à l'emploi 75 milliards de dollars pris sur le plan de sauvetage de la finance américaine (dit TARP). Plus encore que M. Obama, c'est son parti, tétanisé par la perspective d'une défaite électorale dans dix mois, qui a besoin de mesures rapides.\n\n\n\nhttp://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210\n2010.01.21", - "language": "fra", - "unit": "doc" -} \ No newline at end of file + + "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", + "language": "fra" +} diff --git a/api/src/test/mock-data/request/fra-doc-entities.json b/api/src/test/mock-data/request/fra-doc-entities.json index ffa5fb3cac..dfe0baad81 100644 --- a/api/src/test/mock-data/request/fra-doc-entities.json +++ b/api/src/test/mock-data/request/fra-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "Les Etats-Unis face au défi persistant du chômage\n\nUn chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des \"modifications de comportement\" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une \"transformation fondamentale\" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale.\nDurant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. \"Je me sens comme la lie de la terre\", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur \"honte\" et s'interroge : 10 % de chômage, comment en est-on arrivé là ?\n\nPour beaucoup d'analystes, c'est pour avoir négligé l'impact du chômage alors que se profilaient des signes de reprise économique (et surtout financière) que la Maison Blanche et le Parti démocrate se trouvent confrontés à une forte désaffection de l'opinion à dix mois des élections à mi-mandat de novembre.\n\nAlors que le thème de l'emploi envahissait le champ des préoccupations, M. Obama a continué de donner la priorité à la réforme de la santé, à la lutte contre le réchauffement climatique ou la régulation financière. Tous sujets essentiels mais \"bien moins palpables, dans une période de crise aiguë, que le chômage, qui arase tout\", note Dean Baker, codirecteur du Centre de recherches sur les politiques économiques, un groupe de réflexion démocrate à Washington.\n\nUne étude du département du travail, publiée le 8 janvier, montre une différence essentielle entre l'impact de la crise actuelle sur l'emploi et les précédentes récessions. Lors de celles de 1974-1976 et de 1990-1993, le chômage était moins important, tant en chiffres absolus qu'en durée. Cette comparaison reste valide pour la récession de 1981-1983, qui vit le président républicain Ronald Reagan, un an après son élection, enregistrer son plus bas soutien dans l'opinion.\n\nPour résumer le désastre actuel : les Etats-Unis ont perdu depuis deux ans 5,24 % de leur emploi, alors que la chute n'avait été que de 1,4 % à 3 %, au pire, lors des récessions précédentes. Entre chômage total et partiel, la crise touche le travail de près d' un Américain sur cinq. N'ayant cessé de répéter que son pays affrontait \"la pire crise depuis la Grande Dépression\" des années 1930, Barack Obama avait donné le sentiment d'être très conscient du problème. Or là est le paradoxe : une fois élu, le président est apparu comme un dirigeant qui a fait un diagnostic correct mais n'en a tiré aucune conclusion.\n\nL'Amérique avait perdu 3 078 000 chômeurs lors de la dernière année du mandat de George Bush ; elle en a perdu 4 228 000 en un an de présidence Obama ! Le 10 janvier, invoquant \"l'urgence\", Christina Romer, présidente du conseil économique de M. Obama, a appelé à vite injecter 75 milliards de dollars supplémentaires pour régénérer l'emploi. Nul ne doute que M. Obama privilégiera cette nécessité en 2010.\n\nComment remédier au problème ? La plupart des analystes, constatant le \"découplage\" entre la reprise économique et celle de l'emploi, sont circonspects. Chef économiste de Goldman Sachs, Jan Hatzius, dans un texte intitulé \"10 questions pour 2010\", s'attend \"à un solde positif de 100 000 emplois par mois dès le second trimestre, insuffisant pour modifier significativement le taux de chômage\". Compte tenu de leur évolution démographique, les Etats-Unis doivent en effet créer 100 000 emplois mensuels pour juste stabiliser l'emploi.\n\nDean Baker explique encore que la marge de manoeuvre présidentielle est restreinte : \"Obama a raté le coche en limitant son plan de relance. Maintenant, il lui est politiquement impossible de retourner devant le Congrès pour l'augmenter. Les conséquences sont désastreuses. Même s'il lui reste 200 milliards de dollars à dépenser (sur 787 milliards), l'essentiel de l'impact du plan est passé.\"\n\nLe pire, selon lui, est que le président a fait son choix en toute connaissance de cause, pour \"privilégier la politique\". C'est-à-dire un compromis avec certains républicains qu'il n'a jamais obtenu. Pour M. Baker, cette quête du \"consensus\" a entraîné son parti dans l'état où il est. Et de conclure : \"Les républicains ont une stratégie efficace : ils bloquent tout changement pour dénoncer ensuite un président qui n'agit pas. Il est temps que celui-ci dénonce ce comportement de sabotage de l'économie nationale.\"\n\nMercredi, M. Obama a dit \"regretter d'avoir perdu le sens du contact direct avec les Américains sur leurs valeurs essentielles\". Son principal conseiller, David Axelrod, a évoqué \"les salaires bloqués, les emplois perdus\". Pour autant, changera-t-il d'attitude vis-à-vis du Congrès ? Peu y croient.\n\nLa Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 milliards de dollars non encore adoptée au Sénat. Les républicains assimilent désormais toute dépense publique à une gabegie. Harry Reid, le leader des démocrates au Sénat, négocierait déjà avec eux. Certains imaginent un abandon, pourtant peu probable, du plan d'assurance santé afin de parvenir à un soutien républicain aux embauches dans les PME. D'autres envisagent d'affecter à l'emploi 75 milliards de dollars pris sur le plan de sauvetage de la finance américaine (dit TARP). Plus encore que M. Obama, c'est son parti, tétanisé par la perspective d'une défaite électorale dans dix mois, qui a besoin de mesures rapides.\n\n\n\nhttp://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210\n2010.01.21", - "language": "fra", - "unit": "doc" -} \ No newline at end of file + + "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", + "language": "fra" +} diff --git a/api/src/test/mock-data/request/fra-doc-entities_linked.json b/api/src/test/mock-data/request/fra-doc-entities_linked.json index ffa5fb3cac..dfe0baad81 100644 --- a/api/src/test/mock-data/request/fra-doc-entities_linked.json +++ b/api/src/test/mock-data/request/fra-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "Les Etats-Unis face au défi persistant du chômage\n\nUn chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des \"modifications de comportement\" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une \"transformation fondamentale\" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale.\nDurant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. \"Je me sens comme la lie de la terre\", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur \"honte\" et s'interroge : 10 % de chômage, comment en est-on arrivé là ?\n\nPour beaucoup d'analystes, c'est pour avoir négligé l'impact du chômage alors que se profilaient des signes de reprise économique (et surtout financière) que la Maison Blanche et le Parti démocrate se trouvent confrontés à une forte désaffection de l'opinion à dix mois des élections à mi-mandat de novembre.\n\nAlors que le thème de l'emploi envahissait le champ des préoccupations, M. Obama a continué de donner la priorité à la réforme de la santé, à la lutte contre le réchauffement climatique ou la régulation financière. Tous sujets essentiels mais \"bien moins palpables, dans une période de crise aiguë, que le chômage, qui arase tout\", note Dean Baker, codirecteur du Centre de recherches sur les politiques économiques, un groupe de réflexion démocrate à Washington.\n\nUne étude du département du travail, publiée le 8 janvier, montre une différence essentielle entre l'impact de la crise actuelle sur l'emploi et les précédentes récessions. Lors de celles de 1974-1976 et de 1990-1993, le chômage était moins important, tant en chiffres absolus qu'en durée. Cette comparaison reste valide pour la récession de 1981-1983, qui vit le président républicain Ronald Reagan, un an après son élection, enregistrer son plus bas soutien dans l'opinion.\n\nPour résumer le désastre actuel : les Etats-Unis ont perdu depuis deux ans 5,24 % de leur emploi, alors que la chute n'avait été que de 1,4 % à 3 %, au pire, lors des récessions précédentes. Entre chômage total et partiel, la crise touche le travail de près d' un Américain sur cinq. N'ayant cessé de répéter que son pays affrontait \"la pire crise depuis la Grande Dépression\" des années 1930, Barack Obama avait donné le sentiment d'être très conscient du problème. Or là est le paradoxe : une fois élu, le président est apparu comme un dirigeant qui a fait un diagnostic correct mais n'en a tiré aucune conclusion.\n\nL'Amérique avait perdu 3 078 000 chômeurs lors de la dernière année du mandat de George Bush ; elle en a perdu 4 228 000 en un an de présidence Obama ! Le 10 janvier, invoquant \"l'urgence\", Christina Romer, présidente du conseil économique de M. Obama, a appelé à vite injecter 75 milliards de dollars supplémentaires pour régénérer l'emploi. Nul ne doute que M. Obama privilégiera cette nécessité en 2010.\n\nComment remédier au problème ? La plupart des analystes, constatant le \"découplage\" entre la reprise économique et celle de l'emploi, sont circonspects. Chef économiste de Goldman Sachs, Jan Hatzius, dans un texte intitulé \"10 questions pour 2010\", s'attend \"à un solde positif de 100 000 emplois par mois dès le second trimestre, insuffisant pour modifier significativement le taux de chômage\". Compte tenu de leur évolution démographique, les Etats-Unis doivent en effet créer 100 000 emplois mensuels pour juste stabiliser l'emploi.\n\nDean Baker explique encore que la marge de manoeuvre présidentielle est restreinte : \"Obama a raté le coche en limitant son plan de relance. Maintenant, il lui est politiquement impossible de retourner devant le Congrès pour l'augmenter. Les conséquences sont désastreuses. Même s'il lui reste 200 milliards de dollars à dépenser (sur 787 milliards), l'essentiel de l'impact du plan est passé.\"\n\nLe pire, selon lui, est que le président a fait son choix en toute connaissance de cause, pour \"privilégier la politique\". C'est-à-dire un compromis avec certains républicains qu'il n'a jamais obtenu. Pour M. Baker, cette quête du \"consensus\" a entraîné son parti dans l'état où il est. Et de conclure : \"Les républicains ont une stratégie efficace : ils bloquent tout changement pour dénoncer ensuite un président qui n'agit pas. Il est temps que celui-ci dénonce ce comportement de sabotage de l'économie nationale.\"\n\nMercredi, M. Obama a dit \"regretter d'avoir perdu le sens du contact direct avec les Américains sur leurs valeurs essentielles\". Son principal conseiller, David Axelrod, a évoqué \"les salaires bloqués, les emplois perdus\". Pour autant, changera-t-il d'attitude vis-à-vis du Congrès ? Peu y croient.\n\nLa Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 milliards de dollars non encore adoptée au Sénat. Les républicains assimilent désormais toute dépense publique à une gabegie. Harry Reid, le leader des démocrates au Sénat, négocierait déjà avec eux. Certains imaginent un abandon, pourtant peu probable, du plan d'assurance santé afin de parvenir à un soutien républicain aux embauches dans les PME. D'autres envisagent d'affecter à l'emploi 75 milliards de dollars pris sur le plan de sauvetage de la finance américaine (dit TARP). Plus encore que M. Obama, c'est son parti, tétanisé par la perspective d'une défaite électorale dans dix mois, qui a besoin de mesures rapides.\n\n\n\nhttp://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210\n2010.01.21", - "language": "fra", - "unit": "doc" -} \ No newline at end of file + + "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", + "language": "fra" +} diff --git a/api/src/test/mock-data/request/fra-doc-language.json b/api/src/test/mock-data/request/fra-doc-language.json index ffa5fb3cac..dfe0baad81 100644 --- a/api/src/test/mock-data/request/fra-doc-language.json +++ b/api/src/test/mock-data/request/fra-doc-language.json @@ -1,5 +1,5 @@ { - "content": "Les Etats-Unis face au défi persistant du chômage\n\nUn chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des \"modifications de comportement\" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une \"transformation fondamentale\" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale.\nDurant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. \"Je me sens comme la lie de la terre\", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur \"honte\" et s'interroge : 10 % de chômage, comment en est-on arrivé là ?\n\nPour beaucoup d'analystes, c'est pour avoir négligé l'impact du chômage alors que se profilaient des signes de reprise économique (et surtout financière) que la Maison Blanche et le Parti démocrate se trouvent confrontés à une forte désaffection de l'opinion à dix mois des élections à mi-mandat de novembre.\n\nAlors que le thème de l'emploi envahissait le champ des préoccupations, M. Obama a continué de donner la priorité à la réforme de la santé, à la lutte contre le réchauffement climatique ou la régulation financière. Tous sujets essentiels mais \"bien moins palpables, dans une période de crise aiguë, que le chômage, qui arase tout\", note Dean Baker, codirecteur du Centre de recherches sur les politiques économiques, un groupe de réflexion démocrate à Washington.\n\nUne étude du département du travail, publiée le 8 janvier, montre une différence essentielle entre l'impact de la crise actuelle sur l'emploi et les précédentes récessions. Lors de celles de 1974-1976 et de 1990-1993, le chômage était moins important, tant en chiffres absolus qu'en durée. Cette comparaison reste valide pour la récession de 1981-1983, qui vit le président républicain Ronald Reagan, un an après son élection, enregistrer son plus bas soutien dans l'opinion.\n\nPour résumer le désastre actuel : les Etats-Unis ont perdu depuis deux ans 5,24 % de leur emploi, alors que la chute n'avait été que de 1,4 % à 3 %, au pire, lors des récessions précédentes. Entre chômage total et partiel, la crise touche le travail de près d' un Américain sur cinq. N'ayant cessé de répéter que son pays affrontait \"la pire crise depuis la Grande Dépression\" des années 1930, Barack Obama avait donné le sentiment d'être très conscient du problème. Or là est le paradoxe : une fois élu, le président est apparu comme un dirigeant qui a fait un diagnostic correct mais n'en a tiré aucune conclusion.\n\nL'Amérique avait perdu 3 078 000 chômeurs lors de la dernière année du mandat de George Bush ; elle en a perdu 4 228 000 en un an de présidence Obama ! Le 10 janvier, invoquant \"l'urgence\", Christina Romer, présidente du conseil économique de M. Obama, a appelé à vite injecter 75 milliards de dollars supplémentaires pour régénérer l'emploi. Nul ne doute que M. Obama privilégiera cette nécessité en 2010.\n\nComment remédier au problème ? La plupart des analystes, constatant le \"découplage\" entre la reprise économique et celle de l'emploi, sont circonspects. Chef économiste de Goldman Sachs, Jan Hatzius, dans un texte intitulé \"10 questions pour 2010\", s'attend \"à un solde positif de 100 000 emplois par mois dès le second trimestre, insuffisant pour modifier significativement le taux de chômage\". Compte tenu de leur évolution démographique, les Etats-Unis doivent en effet créer 100 000 emplois mensuels pour juste stabiliser l'emploi.\n\nDean Baker explique encore que la marge de manoeuvre présidentielle est restreinte : \"Obama a raté le coche en limitant son plan de relance. Maintenant, il lui est politiquement impossible de retourner devant le Congrès pour l'augmenter. Les conséquences sont désastreuses. Même s'il lui reste 200 milliards de dollars à dépenser (sur 787 milliards), l'essentiel de l'impact du plan est passé.\"\n\nLe pire, selon lui, est que le président a fait son choix en toute connaissance de cause, pour \"privilégier la politique\". C'est-à-dire un compromis avec certains républicains qu'il n'a jamais obtenu. Pour M. Baker, cette quête du \"consensus\" a entraîné son parti dans l'état où il est. Et de conclure : \"Les républicains ont une stratégie efficace : ils bloquent tout changement pour dénoncer ensuite un président qui n'agit pas. Il est temps que celui-ci dénonce ce comportement de sabotage de l'économie nationale.\"\n\nMercredi, M. Obama a dit \"regretter d'avoir perdu le sens du contact direct avec les Américains sur leurs valeurs essentielles\". Son principal conseiller, David Axelrod, a évoqué \"les salaires bloqués, les emplois perdus\". Pour autant, changera-t-il d'attitude vis-à-vis du Congrès ? Peu y croient.\n\nLa Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 milliards de dollars non encore adoptée au Sénat. Les républicains assimilent désormais toute dépense publique à une gabegie. Harry Reid, le leader des démocrates au Sénat, négocierait déjà avec eux. Certains imaginent un abandon, pourtant peu probable, du plan d'assurance santé afin de parvenir à un soutien républicain aux embauches dans les PME. D'autres envisagent d'affecter à l'emploi 75 milliards de dollars pris sur le plan de sauvetage de la finance américaine (dit TARP). Plus encore que M. Obama, c'est son parti, tétanisé par la perspective d'une défaite électorale dans dix mois, qui a besoin de mesures rapides.\n\n\n\nhttp://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210\n2010.01.21", - "language": "fra", - "unit": "doc" -} \ No newline at end of file + + "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", + "language": "fra" +} diff --git a/api/src/test/mock-data/request/fra-doc-morphology_complete.json b/api/src/test/mock-data/request/fra-doc-morphology_complete.json index ffa5fb3cac..dfe0baad81 100644 --- a/api/src/test/mock-data/request/fra-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/fra-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "Les Etats-Unis face au défi persistant du chômage\n\nUn chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des \"modifications de comportement\" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une \"transformation fondamentale\" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale.\nDurant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. \"Je me sens comme la lie de la terre\", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur \"honte\" et s'interroge : 10 % de chômage, comment en est-on arrivé là ?\n\nPour beaucoup d'analystes, c'est pour avoir négligé l'impact du chômage alors que se profilaient des signes de reprise économique (et surtout financière) que la Maison Blanche et le Parti démocrate se trouvent confrontés à une forte désaffection de l'opinion à dix mois des élections à mi-mandat de novembre.\n\nAlors que le thème de l'emploi envahissait le champ des préoccupations, M. Obama a continué de donner la priorité à la réforme de la santé, à la lutte contre le réchauffement climatique ou la régulation financière. Tous sujets essentiels mais \"bien moins palpables, dans une période de crise aiguë, que le chômage, qui arase tout\", note Dean Baker, codirecteur du Centre de recherches sur les politiques économiques, un groupe de réflexion démocrate à Washington.\n\nUne étude du département du travail, publiée le 8 janvier, montre une différence essentielle entre l'impact de la crise actuelle sur l'emploi et les précédentes récessions. Lors de celles de 1974-1976 et de 1990-1993, le chômage était moins important, tant en chiffres absolus qu'en durée. Cette comparaison reste valide pour la récession de 1981-1983, qui vit le président républicain Ronald Reagan, un an après son élection, enregistrer son plus bas soutien dans l'opinion.\n\nPour résumer le désastre actuel : les Etats-Unis ont perdu depuis deux ans 5,24 % de leur emploi, alors que la chute n'avait été que de 1,4 % à 3 %, au pire, lors des récessions précédentes. Entre chômage total et partiel, la crise touche le travail de près d' un Américain sur cinq. N'ayant cessé de répéter que son pays affrontait \"la pire crise depuis la Grande Dépression\" des années 1930, Barack Obama avait donné le sentiment d'être très conscient du problème. Or là est le paradoxe : une fois élu, le président est apparu comme un dirigeant qui a fait un diagnostic correct mais n'en a tiré aucune conclusion.\n\nL'Amérique avait perdu 3 078 000 chômeurs lors de la dernière année du mandat de George Bush ; elle en a perdu 4 228 000 en un an de présidence Obama ! Le 10 janvier, invoquant \"l'urgence\", Christina Romer, présidente du conseil économique de M. Obama, a appelé à vite injecter 75 milliards de dollars supplémentaires pour régénérer l'emploi. Nul ne doute que M. Obama privilégiera cette nécessité en 2010.\n\nComment remédier au problème ? La plupart des analystes, constatant le \"découplage\" entre la reprise économique et celle de l'emploi, sont circonspects. Chef économiste de Goldman Sachs, Jan Hatzius, dans un texte intitulé \"10 questions pour 2010\", s'attend \"à un solde positif de 100 000 emplois par mois dès le second trimestre, insuffisant pour modifier significativement le taux de chômage\". Compte tenu de leur évolution démographique, les Etats-Unis doivent en effet créer 100 000 emplois mensuels pour juste stabiliser l'emploi.\n\nDean Baker explique encore que la marge de manoeuvre présidentielle est restreinte : \"Obama a raté le coche en limitant son plan de relance. Maintenant, il lui est politiquement impossible de retourner devant le Congrès pour l'augmenter. Les conséquences sont désastreuses. Même s'il lui reste 200 milliards de dollars à dépenser (sur 787 milliards), l'essentiel de l'impact du plan est passé.\"\n\nLe pire, selon lui, est que le président a fait son choix en toute connaissance de cause, pour \"privilégier la politique\". C'est-à-dire un compromis avec certains républicains qu'il n'a jamais obtenu. Pour M. Baker, cette quête du \"consensus\" a entraîné son parti dans l'état où il est. Et de conclure : \"Les républicains ont une stratégie efficace : ils bloquent tout changement pour dénoncer ensuite un président qui n'agit pas. Il est temps que celui-ci dénonce ce comportement de sabotage de l'économie nationale.\"\n\nMercredi, M. Obama a dit \"regretter d'avoir perdu le sens du contact direct avec les Américains sur leurs valeurs essentielles\". Son principal conseiller, David Axelrod, a évoqué \"les salaires bloqués, les emplois perdus\". Pour autant, changera-t-il d'attitude vis-à-vis du Congrès ? Peu y croient.\n\nLa Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 milliards de dollars non encore adoptée au Sénat. Les républicains assimilent désormais toute dépense publique à une gabegie. Harry Reid, le leader des démocrates au Sénat, négocierait déjà avec eux. Certains imaginent un abandon, pourtant peu probable, du plan d'assurance santé afin de parvenir à un soutien républicain aux embauches dans les PME. D'autres envisagent d'affecter à l'emploi 75 milliards de dollars pris sur le plan de sauvetage de la finance américaine (dit TARP). Plus encore que M. Obama, c'est son parti, tétanisé par la perspective d'une défaite électorale dans dix mois, qui a besoin de mesures rapides.\n\n\n\nhttp://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210\n2010.01.21", - "language": "fra", - "unit": "doc" -} \ No newline at end of file + + "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", + "language": "fra" +} diff --git a/api/src/test/mock-data/request/fra-doc-sentiment.json b/api/src/test/mock-data/request/fra-doc-sentiment.json index ffa5fb3cac..dfe0baad81 100644 --- a/api/src/test/mock-data/request/fra-doc-sentiment.json +++ b/api/src/test/mock-data/request/fra-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "Les Etats-Unis face au défi persistant du chômage\n\nUn chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des \"modifications de comportement\" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une \"transformation fondamentale\" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale.\nDurant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. \"Je me sens comme la lie de la terre\", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur \"honte\" et s'interroge : 10 % de chômage, comment en est-on arrivé là ?\n\nPour beaucoup d'analystes, c'est pour avoir négligé l'impact du chômage alors que se profilaient des signes de reprise économique (et surtout financière) que la Maison Blanche et le Parti démocrate se trouvent confrontés à une forte désaffection de l'opinion à dix mois des élections à mi-mandat de novembre.\n\nAlors que le thème de l'emploi envahissait le champ des préoccupations, M. Obama a continué de donner la priorité à la réforme de la santé, à la lutte contre le réchauffement climatique ou la régulation financière. Tous sujets essentiels mais \"bien moins palpables, dans une période de crise aiguë, que le chômage, qui arase tout\", note Dean Baker, codirecteur du Centre de recherches sur les politiques économiques, un groupe de réflexion démocrate à Washington.\n\nUne étude du département du travail, publiée le 8 janvier, montre une différence essentielle entre l'impact de la crise actuelle sur l'emploi et les précédentes récessions. Lors de celles de 1974-1976 et de 1990-1993, le chômage était moins important, tant en chiffres absolus qu'en durée. Cette comparaison reste valide pour la récession de 1981-1983, qui vit le président républicain Ronald Reagan, un an après son élection, enregistrer son plus bas soutien dans l'opinion.\n\nPour résumer le désastre actuel : les Etats-Unis ont perdu depuis deux ans 5,24 % de leur emploi, alors que la chute n'avait été que de 1,4 % à 3 %, au pire, lors des récessions précédentes. Entre chômage total et partiel, la crise touche le travail de près d' un Américain sur cinq. N'ayant cessé de répéter que son pays affrontait \"la pire crise depuis la Grande Dépression\" des années 1930, Barack Obama avait donné le sentiment d'être très conscient du problème. Or là est le paradoxe : une fois élu, le président est apparu comme un dirigeant qui a fait un diagnostic correct mais n'en a tiré aucune conclusion.\n\nL'Amérique avait perdu 3 078 000 chômeurs lors de la dernière année du mandat de George Bush ; elle en a perdu 4 228 000 en un an de présidence Obama ! Le 10 janvier, invoquant \"l'urgence\", Christina Romer, présidente du conseil économique de M. Obama, a appelé à vite injecter 75 milliards de dollars supplémentaires pour régénérer l'emploi. Nul ne doute que M. Obama privilégiera cette nécessité en 2010.\n\nComment remédier au problème ? La plupart des analystes, constatant le \"découplage\" entre la reprise économique et celle de l'emploi, sont circonspects. Chef économiste de Goldman Sachs, Jan Hatzius, dans un texte intitulé \"10 questions pour 2010\", s'attend \"à un solde positif de 100 000 emplois par mois dès le second trimestre, insuffisant pour modifier significativement le taux de chômage\". Compte tenu de leur évolution démographique, les Etats-Unis doivent en effet créer 100 000 emplois mensuels pour juste stabiliser l'emploi.\n\nDean Baker explique encore que la marge de manoeuvre présidentielle est restreinte : \"Obama a raté le coche en limitant son plan de relance. Maintenant, il lui est politiquement impossible de retourner devant le Congrès pour l'augmenter. Les conséquences sont désastreuses. Même s'il lui reste 200 milliards de dollars à dépenser (sur 787 milliards), l'essentiel de l'impact du plan est passé.\"\n\nLe pire, selon lui, est que le président a fait son choix en toute connaissance de cause, pour \"privilégier la politique\". C'est-à-dire un compromis avec certains républicains qu'il n'a jamais obtenu. Pour M. Baker, cette quête du \"consensus\" a entraîné son parti dans l'état où il est. Et de conclure : \"Les républicains ont une stratégie efficace : ils bloquent tout changement pour dénoncer ensuite un président qui n'agit pas. Il est temps que celui-ci dénonce ce comportement de sabotage de l'économie nationale.\"\n\nMercredi, M. Obama a dit \"regretter d'avoir perdu le sens du contact direct avec les Américains sur leurs valeurs essentielles\". Son principal conseiller, David Axelrod, a évoqué \"les salaires bloqués, les emplois perdus\". Pour autant, changera-t-il d'attitude vis-à-vis du Congrès ? Peu y croient.\n\nLa Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 milliards de dollars non encore adoptée au Sénat. Les républicains assimilent désormais toute dépense publique à une gabegie. Harry Reid, le leader des démocrates au Sénat, négocierait déjà avec eux. Certains imaginent un abandon, pourtant peu probable, du plan d'assurance santé afin de parvenir à un soutien républicain aux embauches dans les PME. D'autres envisagent d'affecter à l'emploi 75 milliards de dollars pris sur le plan de sauvetage de la finance américaine (dit TARP). Plus encore que M. Obama, c'est son parti, tétanisé par la perspective d'une défaite électorale dans dix mois, qui a besoin de mesures rapides.\n\n\n\nhttp://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210\n2010.01.21", - "language": "fra", - "unit": "doc" -} \ No newline at end of file + + "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", + "language": "fra" +} diff --git a/api/src/test/mock-data/request/fra-sentence-categories.json b/api/src/test/mock-data/request/fra-sentence-categories.json deleted file mode 100644 index 58e5d39a42..0000000000 --- a/api/src/test/mock-data/request/fra-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", - "language": "fra", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/fra-sentence-entities.json b/api/src/test/mock-data/request/fra-sentence-entities.json deleted file mode 100644 index 58e5d39a42..0000000000 --- a/api/src/test/mock-data/request/fra-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", - "language": "fra", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/fra-sentence-entities_linked.json b/api/src/test/mock-data/request/fra-sentence-entities_linked.json deleted file mode 100644 index 58e5d39a42..0000000000 --- a/api/src/test/mock-data/request/fra-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", - "language": "fra", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/fra-sentence-language.json b/api/src/test/mock-data/request/fra-sentence-language.json deleted file mode 100644 index 58e5d39a42..0000000000 --- a/api/src/test/mock-data/request/fra-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", - "language": "fra", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/fra-sentence-morphology_complete.json b/api/src/test/mock-data/request/fra-sentence-morphology_complete.json deleted file mode 100644 index 58e5d39a42..0000000000 --- a/api/src/test/mock-data/request/fra-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", - "language": "fra", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/fra-sentence-sentiment.json b/api/src/test/mock-data/request/fra-sentence-sentiment.json deleted file mode 100644 index 58e5d39a42..0000000000 --- a/api/src/test/mock-data/request/fra-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un \"intense processus diplomatique\" pour prendre en compte la dimension régionale du conflit en Afghanistan. \"Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays\", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis.", - "language": "fra", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/fra-url-categories.json b/api/src/test/mock-data/request/fra-url-categories.json index ffc0840bc5..9cd3d7e462 100644 --- a/api/src/test/mock-data/request/fra-url-categories.json +++ b/api/src/test/mock-data/request/fra-url-categories.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNGx9U_7Ggby5-rrhbrITDDnWavJrQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779379029255&ei=ZwNNVcDDKILd3QHIhYDIBg&url=http://www.challenges.fr/europe/20150508.CHA5663/elections-britanniques-le-triomphe-de-david-cameron.html" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNG3UU6F7Zs4EX41DSLVhk6aRD1A_Q&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779792537690&ei=5YnMVpGsNdOO3QGuk5mYDg&url=http://www.lepoint.fr/sante/rappel-massif-de-mars-snickers-et-confiseries-celebrations-en-france-23-02-2016-2020502_40.php" +} diff --git a/api/src/test/mock-data/request/fra-url-entities.json b/api/src/test/mock-data/request/fra-url-entities.json index ffc0840bc5..9cd3d7e462 100644 --- a/api/src/test/mock-data/request/fra-url-entities.json +++ b/api/src/test/mock-data/request/fra-url-entities.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNGx9U_7Ggby5-rrhbrITDDnWavJrQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779379029255&ei=ZwNNVcDDKILd3QHIhYDIBg&url=http://www.challenges.fr/europe/20150508.CHA5663/elections-britanniques-le-triomphe-de-david-cameron.html" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNG3UU6F7Zs4EX41DSLVhk6aRD1A_Q&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779792537690&ei=5YnMVpGsNdOO3QGuk5mYDg&url=http://www.lepoint.fr/sante/rappel-massif-de-mars-snickers-et-confiseries-celebrations-en-france-23-02-2016-2020502_40.php" +} diff --git a/api/src/test/mock-data/request/fra-url-entities_linked.json b/api/src/test/mock-data/request/fra-url-entities_linked.json index ffc0840bc5..9cd3d7e462 100644 --- a/api/src/test/mock-data/request/fra-url-entities_linked.json +++ b/api/src/test/mock-data/request/fra-url-entities_linked.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNGx9U_7Ggby5-rrhbrITDDnWavJrQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779379029255&ei=ZwNNVcDDKILd3QHIhYDIBg&url=http://www.challenges.fr/europe/20150508.CHA5663/elections-britanniques-le-triomphe-de-david-cameron.html" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNG3UU6F7Zs4EX41DSLVhk6aRD1A_Q&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779792537690&ei=5YnMVpGsNdOO3QGuk5mYDg&url=http://www.lepoint.fr/sante/rappel-massif-de-mars-snickers-et-confiseries-celebrations-en-france-23-02-2016-2020502_40.php" +} diff --git a/api/src/test/mock-data/request/fra-url-language.json b/api/src/test/mock-data/request/fra-url-language.json index ffc0840bc5..9cd3d7e462 100644 --- a/api/src/test/mock-data/request/fra-url-language.json +++ b/api/src/test/mock-data/request/fra-url-language.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNGx9U_7Ggby5-rrhbrITDDnWavJrQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779379029255&ei=ZwNNVcDDKILd3QHIhYDIBg&url=http://www.challenges.fr/europe/20150508.CHA5663/elections-britanniques-le-triomphe-de-david-cameron.html" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNG3UU6F7Zs4EX41DSLVhk6aRD1A_Q&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779792537690&ei=5YnMVpGsNdOO3QGuk5mYDg&url=http://www.lepoint.fr/sante/rappel-massif-de-mars-snickers-et-confiseries-celebrations-en-france-23-02-2016-2020502_40.php" +} diff --git a/api/src/test/mock-data/request/fra-url-morphology_complete.json b/api/src/test/mock-data/request/fra-url-morphology_complete.json index ffc0840bc5..9cd3d7e462 100644 --- a/api/src/test/mock-data/request/fra-url-morphology_complete.json +++ b/api/src/test/mock-data/request/fra-url-morphology_complete.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNGx9U_7Ggby5-rrhbrITDDnWavJrQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779379029255&ei=ZwNNVcDDKILd3QHIhYDIBg&url=http://www.challenges.fr/europe/20150508.CHA5663/elections-britanniques-le-triomphe-de-david-cameron.html" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNG3UU6F7Zs4EX41DSLVhk6aRD1A_Q&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779792537690&ei=5YnMVpGsNdOO3QGuk5mYDg&url=http://www.lepoint.fr/sante/rappel-massif-de-mars-snickers-et-confiseries-celebrations-en-france-23-02-2016-2020502_40.php" +} diff --git a/api/src/test/mock-data/request/fra-url-sentiment.json b/api/src/test/mock-data/request/fra-url-sentiment.json index ffc0840bc5..9cd3d7e462 100644 --- a/api/src/test/mock-data/request/fra-url-sentiment.json +++ b/api/src/test/mock-data/request/fra-url-sentiment.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNGx9U_7Ggby5-rrhbrITDDnWavJrQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779379029255&ei=ZwNNVcDDKILd3QHIhYDIBg&url=http://www.challenges.fr/europe/20150508.CHA5663/elections-britanniques-le-triomphe-de-david-cameron.html" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=fr&usg=AFQjCNG3UU6F7Zs4EX41DSLVhk6aRD1A_Q&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779792537690&ei=5YnMVpGsNdOO3QGuk5mYDg&url=http://www.lepoint.fr/sante/rappel-massif-de-mars-snickers-et-confiseries-celebrations-en-france-23-02-2016-2020502_40.php" +} diff --git a/api/src/test/mock-data/request/jpn-doc-categories.json b/api/src/test/mock-data/request/jpn-doc-categories.json index 65b95575aa..f5ab3b78ad 100644 --- a/api/src/test/mock-data/request/jpn-doc-categories.json +++ b/api/src/test/mock-data/request/jpn-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。\n\n1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。\n\n第二次世界大戦後、彼は戦死した兄ジョセフ・P・ケネディ・ジュニアに代わり政界に入った。1946年にジェームズ・M・カーレイがボストン市長になるために民主党下院議員を辞職した時、ケネディはその議席をかけた補欠選挙に立候補した。父のジョセフが実業家であったこともあり、政治資金には困らなかったので、実現不可能な公約をする必要はなく理想主義を語ることができた。長く精力的なキャンペーンの末に、大差で共和党候補に勝ち、29歳で下院議員となった。当初は父のジョセフとコネがあった同じアイルランド系のジョセフ・マッカーシー上院議員の赤狩りに協力していた。リベラル派のエレノア・ルーズヴェルトはそのことを忘れず、後々までケネディを嫌っていた。下院3期目の1952年には上院議員選挙に出馬し、約70,000票の大差で共和党候補ヘンリー・カボット・ロッジ・ジュニアを破った。以後の彼の支持基盤は北部都市圏のリベラル派インテリ層となる。\n\nケネディは1953年9月12日にフランス系移民の名門の娘であるジャクリーン・リー・ブーヴィエと結婚した。彼はその後2年間に多数回の脊柱の手術を受け上院本会議を長期にわたって欠席したが、手術から回復するまでの間、8名の上院議員の政治的に勇敢であった行為についての本『勇気ある人々』を出版した。この本はその後ピューリツァー賞を受賞した。賞金は黒人の通う学校へ寄付したと言われている。\n\n\n\nhttp://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3\n2010.01.26", - "language": "jpn", - "unit": "doc" -} \ No newline at end of file + + "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", + "language": "jpn" +} diff --git a/api/src/test/mock-data/request/jpn-doc-entities.json b/api/src/test/mock-data/request/jpn-doc-entities.json index 65b95575aa..f5ab3b78ad 100644 --- a/api/src/test/mock-data/request/jpn-doc-entities.json +++ b/api/src/test/mock-data/request/jpn-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。\n\n1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。\n\n第二次世界大戦後、彼は戦死した兄ジョセフ・P・ケネディ・ジュニアに代わり政界に入った。1946年にジェームズ・M・カーレイがボストン市長になるために民主党下院議員を辞職した時、ケネディはその議席をかけた補欠選挙に立候補した。父のジョセフが実業家であったこともあり、政治資金には困らなかったので、実現不可能な公約をする必要はなく理想主義を語ることができた。長く精力的なキャンペーンの末に、大差で共和党候補に勝ち、29歳で下院議員となった。当初は父のジョセフとコネがあった同じアイルランド系のジョセフ・マッカーシー上院議員の赤狩りに協力していた。リベラル派のエレノア・ルーズヴェルトはそのことを忘れず、後々までケネディを嫌っていた。下院3期目の1952年には上院議員選挙に出馬し、約70,000票の大差で共和党候補ヘンリー・カボット・ロッジ・ジュニアを破った。以後の彼の支持基盤は北部都市圏のリベラル派インテリ層となる。\n\nケネディは1953年9月12日にフランス系移民の名門の娘であるジャクリーン・リー・ブーヴィエと結婚した。彼はその後2年間に多数回の脊柱の手術を受け上院本会議を長期にわたって欠席したが、手術から回復するまでの間、8名の上院議員の政治的に勇敢であった行為についての本『勇気ある人々』を出版した。この本はその後ピューリツァー賞を受賞した。賞金は黒人の通う学校へ寄付したと言われている。\n\n\n\nhttp://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3\n2010.01.26", - "language": "jpn", - "unit": "doc" -} \ No newline at end of file + + "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", + "language": "jpn" +} diff --git a/api/src/test/mock-data/request/jpn-doc-entities_linked.json b/api/src/test/mock-data/request/jpn-doc-entities_linked.json index 65b95575aa..f5ab3b78ad 100644 --- a/api/src/test/mock-data/request/jpn-doc-entities_linked.json +++ b/api/src/test/mock-data/request/jpn-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。\n\n1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。\n\n第二次世界大戦後、彼は戦死した兄ジョセフ・P・ケネディ・ジュニアに代わり政界に入った。1946年にジェームズ・M・カーレイがボストン市長になるために民主党下院議員を辞職した時、ケネディはその議席をかけた補欠選挙に立候補した。父のジョセフが実業家であったこともあり、政治資金には困らなかったので、実現不可能な公約をする必要はなく理想主義を語ることができた。長く精力的なキャンペーンの末に、大差で共和党候補に勝ち、29歳で下院議員となった。当初は父のジョセフとコネがあった同じアイルランド系のジョセフ・マッカーシー上院議員の赤狩りに協力していた。リベラル派のエレノア・ルーズヴェルトはそのことを忘れず、後々までケネディを嫌っていた。下院3期目の1952年には上院議員選挙に出馬し、約70,000票の大差で共和党候補ヘンリー・カボット・ロッジ・ジュニアを破った。以後の彼の支持基盤は北部都市圏のリベラル派インテリ層となる。\n\nケネディは1953年9月12日にフランス系移民の名門の娘であるジャクリーン・リー・ブーヴィエと結婚した。彼はその後2年間に多数回の脊柱の手術を受け上院本会議を長期にわたって欠席したが、手術から回復するまでの間、8名の上院議員の政治的に勇敢であった行為についての本『勇気ある人々』を出版した。この本はその後ピューリツァー賞を受賞した。賞金は黒人の通う学校へ寄付したと言われている。\n\n\n\nhttp://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3\n2010.01.26", - "language": "jpn", - "unit": "doc" -} \ No newline at end of file + + "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", + "language": "jpn" +} diff --git a/api/src/test/mock-data/request/jpn-doc-language.json b/api/src/test/mock-data/request/jpn-doc-language.json index 65b95575aa..f5ab3b78ad 100644 --- a/api/src/test/mock-data/request/jpn-doc-language.json +++ b/api/src/test/mock-data/request/jpn-doc-language.json @@ -1,5 +1,5 @@ { - "content": "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。\n\n1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。\n\n第二次世界大戦後、彼は戦死した兄ジョセフ・P・ケネディ・ジュニアに代わり政界に入った。1946年にジェームズ・M・カーレイがボストン市長になるために民主党下院議員を辞職した時、ケネディはその議席をかけた補欠選挙に立候補した。父のジョセフが実業家であったこともあり、政治資金には困らなかったので、実現不可能な公約をする必要はなく理想主義を語ることができた。長く精力的なキャンペーンの末に、大差で共和党候補に勝ち、29歳で下院議員となった。当初は父のジョセフとコネがあった同じアイルランド系のジョセフ・マッカーシー上院議員の赤狩りに協力していた。リベラル派のエレノア・ルーズヴェルトはそのことを忘れず、後々までケネディを嫌っていた。下院3期目の1952年には上院議員選挙に出馬し、約70,000票の大差で共和党候補ヘンリー・カボット・ロッジ・ジュニアを破った。以後の彼の支持基盤は北部都市圏のリベラル派インテリ層となる。\n\nケネディは1953年9月12日にフランス系移民の名門の娘であるジャクリーン・リー・ブーヴィエと結婚した。彼はその後2年間に多数回の脊柱の手術を受け上院本会議を長期にわたって欠席したが、手術から回復するまでの間、8名の上院議員の政治的に勇敢であった行為についての本『勇気ある人々』を出版した。この本はその後ピューリツァー賞を受賞した。賞金は黒人の通う学校へ寄付したと言われている。\n\n\n\nhttp://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3\n2010.01.26", - "language": "jpn", - "unit": "doc" -} \ No newline at end of file + + "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", + "language": "jpn" +} diff --git a/api/src/test/mock-data/request/jpn-doc-morphology_complete.json b/api/src/test/mock-data/request/jpn-doc-morphology_complete.json index 65b95575aa..f5ab3b78ad 100644 --- a/api/src/test/mock-data/request/jpn-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/jpn-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。\n\n1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。\n\n第二次世界大戦後、彼は戦死した兄ジョセフ・P・ケネディ・ジュニアに代わり政界に入った。1946年にジェームズ・M・カーレイがボストン市長になるために民主党下院議員を辞職した時、ケネディはその議席をかけた補欠選挙に立候補した。父のジョセフが実業家であったこともあり、政治資金には困らなかったので、実現不可能な公約をする必要はなく理想主義を語ることができた。長く精力的なキャンペーンの末に、大差で共和党候補に勝ち、29歳で下院議員となった。当初は父のジョセフとコネがあった同じアイルランド系のジョセフ・マッカーシー上院議員の赤狩りに協力していた。リベラル派のエレノア・ルーズヴェルトはそのことを忘れず、後々までケネディを嫌っていた。下院3期目の1952年には上院議員選挙に出馬し、約70,000票の大差で共和党候補ヘンリー・カボット・ロッジ・ジュニアを破った。以後の彼の支持基盤は北部都市圏のリベラル派インテリ層となる。\n\nケネディは1953年9月12日にフランス系移民の名門の娘であるジャクリーン・リー・ブーヴィエと結婚した。彼はその後2年間に多数回の脊柱の手術を受け上院本会議を長期にわたって欠席したが、手術から回復するまでの間、8名の上院議員の政治的に勇敢であった行為についての本『勇気ある人々』を出版した。この本はその後ピューリツァー賞を受賞した。賞金は黒人の通う学校へ寄付したと言われている。\n\n\n\nhttp://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3\n2010.01.26", - "language": "jpn", - "unit": "doc" -} \ No newline at end of file + + "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", + "language": "jpn" +} diff --git a/api/src/test/mock-data/request/jpn-doc-sentiment.json b/api/src/test/mock-data/request/jpn-doc-sentiment.json index 65b95575aa..f5ab3b78ad 100644 --- a/api/src/test/mock-data/request/jpn-doc-sentiment.json +++ b/api/src/test/mock-data/request/jpn-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。\n\n1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。\n\n第二次世界大戦後、彼は戦死した兄ジョセフ・P・ケネディ・ジュニアに代わり政界に入った。1946年にジェームズ・M・カーレイがボストン市長になるために民主党下院議員を辞職した時、ケネディはその議席をかけた補欠選挙に立候補した。父のジョセフが実業家であったこともあり、政治資金には困らなかったので、実現不可能な公約をする必要はなく理想主義を語ることができた。長く精力的なキャンペーンの末に、大差で共和党候補に勝ち、29歳で下院議員となった。当初は父のジョセフとコネがあった同じアイルランド系のジョセフ・マッカーシー上院議員の赤狩りに協力していた。リベラル派のエレノア・ルーズヴェルトはそのことを忘れず、後々までケネディを嫌っていた。下院3期目の1952年には上院議員選挙に出馬し、約70,000票の大差で共和党候補ヘンリー・カボット・ロッジ・ジュニアを破った。以後の彼の支持基盤は北部都市圏のリベラル派インテリ層となる。\n\nケネディは1953年9月12日にフランス系移民の名門の娘であるジャクリーン・リー・ブーヴィエと結婚した。彼はその後2年間に多数回の脊柱の手術を受け上院本会議を長期にわたって欠席したが、手術から回復するまでの間、8名の上院議員の政治的に勇敢であった行為についての本『勇気ある人々』を出版した。この本はその後ピューリツァー賞を受賞した。賞金は黒人の通う学校へ寄付したと言われている。\n\n\n\nhttp://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3\n2010.01.26", - "language": "jpn", - "unit": "doc" -} \ No newline at end of file + + "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", + "language": "jpn" +} diff --git a/api/src/test/mock-data/request/jpn-sentence-categories.json b/api/src/test/mock-data/request/jpn-sentence-categories.json deleted file mode 100644 index 927f86db89..0000000000 --- a/api/src/test/mock-data/request/jpn-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", - "language": "jpn", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/jpn-sentence-entities.json b/api/src/test/mock-data/request/jpn-sentence-entities.json deleted file mode 100644 index 927f86db89..0000000000 --- a/api/src/test/mock-data/request/jpn-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", - "language": "jpn", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/jpn-sentence-entities_linked.json b/api/src/test/mock-data/request/jpn-sentence-entities_linked.json deleted file mode 100644 index 927f86db89..0000000000 --- a/api/src/test/mock-data/request/jpn-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", - "language": "jpn", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/jpn-sentence-language.json b/api/src/test/mock-data/request/jpn-sentence-language.json deleted file mode 100644 index 927f86db89..0000000000 --- a/api/src/test/mock-data/request/jpn-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", - "language": "jpn", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/jpn-sentence-morphology_complete.json b/api/src/test/mock-data/request/jpn-sentence-morphology_complete.json deleted file mode 100644 index 927f86db89..0000000000 --- a/api/src/test/mock-data/request/jpn-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", - "language": "jpn", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/jpn-sentence-sentiment.json b/api/src/test/mock-data/request/jpn-sentence-sentiment.json deleted file mode 100644 index 927f86db89..0000000000 --- a/api/src/test/mock-data/request/jpn-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。", - "language": "jpn", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/pus-doc-categories.json b/api/src/test/mock-data/request/pus-doc-categories.json index 5cad05453e..779323af28 100644 --- a/api/src/test/mock-data/request/pus-doc-categories.json +++ b/api/src/test/mock-data/request/pus-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "د افغانستان د كابيني لوي لست\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\n\n\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\nنن د نوموړي هيواد د ولسمشر مرستيال كريم خليلي په پارلمان كي د نوي كابيني د ۱۶ تنو وزيرانو نومونه ولوستل . همداشان كريم خليلي د پاتو دوه تنو وزيرانو د نومونو په اړه څه ونه ويل .\nد ويلو ده چي په نوموړي نوي لست كي د هغه وزيرانو نومونه هم شامل دي چي تيره اووني يي د پارلمان نه د اعتماد رايي نوي ترلاسه كړي .\nد يادولو وړ ده چي د افغانستان پارلمان تيره اووني په خپله عمومي ناسته كي د ۲۴ تنو وزيرانو د جمع نه ۷ تنو ته د اعتماد راي وركړه . ۱- د بهرنيو چارو نوماند وزير: زلمی رسول نوموړی د ولسمشر امنيتي سلاکار دی او په طب کې دوکتورا لري . ٢- د عدليې نوماند وزير : حبيب الله غالب غالب په شرعياتو کې دوکتورا لري چې ويل کېږي چې د عبدرب رسول سياف لخوا معرفي شوی دی . ٣- د لوړو زده کړو نوماند وزير : محمد هاشم عصمت الهي په اړيکو او ورځپاڼه ليکلوو ليکلو کې دوکتورا لري او د اصف محسني کس دی . ٤- د حج او ارشاد نوماند وزير : ډاکټر محمد يوسف نيازی ښاغلی نيازی په اسلامي زده کړو کې دوکتورا لري . ٥- د فوايد عامې نوماند وزير : محمد بشير لعلي ٦- د عامې روغتيا نوماند وزير: ډاکټر ثريا دليل د طب په مديريتي برخه کې دوکتورا لري، په قام ازبکه ده او په کينيا او افغانستان کې يې يونيسف کې کارکړی دی . ٧- د اقتصاد نوماند وزير : عبدالهادي ارغنديوال ښاغلی ارغنديوال په اقتصاد کې ليسانس لري . ٨- د سوداګرۍ او صنايعو نوماند وزير : محمد هادي حکيمي ښاغلی حکيمي په حقوقو او نړيواله سوداګرۍ کې يې زده کړې کړې دي . ٩- د کليو د پراختيا او بيا رغاونې نوماند وزير: جارالله منصوري منصوري په سياسي علومو کې يې لوړې زده کړې کړې دي . ١٠ - د ټولنيزو چارو، شهيدانو او معلولينو نوماند وزير: امنه افضلي اغلې افضلي په چاپېريال ساتنه کې لوړې زده کړې لري . ١١- د ترانسپورت او هوايي چلند وزير : عبدالرحيم اوراز ښاغلی اوراز ساختماني انجنير او په بهرنيو چارو وزارت کې يې کار کړی، ويل کېږي چې د ملی جنبش لخوا معرفي شوی . ١٢- د ښځو چارو نومانده وزيره : پلوشه حسن اغلې حسن د بيارغاونې په چارو کې ليسانس لري . ١٣- د کډوالو او راستنېدونکو چارو نوماند وزير : انجنير عبدالرحيم نوموړی انجنير دی . ١٤- د سرحدونو چارو، قامونو او قبايلو نوماند وزير : ارسلا جمال ښاغلی جمال په اقتصاد کې ليسانس لري او مخکې د خوست والي و . ١٥- له نشه يي توکيو سره د مبارزې نوماند وزير: ضرار احمد مقبل ښاغلی مقبل د کرزي په تېره دوره کې د څه مودې لپاره د کورنيو چار وزير و . ١٦- د ښاري پراختيا نوماند وزير : انجنير سلطان حسين حصاري ښاغلی حصاري د ښار جوړونې په برخه کې دوکتورا لري\n\n\n\nhttp://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62\n2010.01.24", - "language": "pus", - "unit": "doc" -} \ No newline at end of file + + "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", + "language": "pus" +} diff --git a/api/src/test/mock-data/request/pus-doc-entities.json b/api/src/test/mock-data/request/pus-doc-entities.json index 5cad05453e..779323af28 100644 --- a/api/src/test/mock-data/request/pus-doc-entities.json +++ b/api/src/test/mock-data/request/pus-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "د افغانستان د كابيني لوي لست\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\n\n\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\nنن د نوموړي هيواد د ولسمشر مرستيال كريم خليلي په پارلمان كي د نوي كابيني د ۱۶ تنو وزيرانو نومونه ولوستل . همداشان كريم خليلي د پاتو دوه تنو وزيرانو د نومونو په اړه څه ونه ويل .\nد ويلو ده چي په نوموړي نوي لست كي د هغه وزيرانو نومونه هم شامل دي چي تيره اووني يي د پارلمان نه د اعتماد رايي نوي ترلاسه كړي .\nد يادولو وړ ده چي د افغانستان پارلمان تيره اووني په خپله عمومي ناسته كي د ۲۴ تنو وزيرانو د جمع نه ۷ تنو ته د اعتماد راي وركړه . ۱- د بهرنيو چارو نوماند وزير: زلمی رسول نوموړی د ولسمشر امنيتي سلاکار دی او په طب کې دوکتورا لري . ٢- د عدليې نوماند وزير : حبيب الله غالب غالب په شرعياتو کې دوکتورا لري چې ويل کېږي چې د عبدرب رسول سياف لخوا معرفي شوی دی . ٣- د لوړو زده کړو نوماند وزير : محمد هاشم عصمت الهي په اړيکو او ورځپاڼه ليکلوو ليکلو کې دوکتورا لري او د اصف محسني کس دی . ٤- د حج او ارشاد نوماند وزير : ډاکټر محمد يوسف نيازی ښاغلی نيازی په اسلامي زده کړو کې دوکتورا لري . ٥- د فوايد عامې نوماند وزير : محمد بشير لعلي ٦- د عامې روغتيا نوماند وزير: ډاکټر ثريا دليل د طب په مديريتي برخه کې دوکتورا لري، په قام ازبکه ده او په کينيا او افغانستان کې يې يونيسف کې کارکړی دی . ٧- د اقتصاد نوماند وزير : عبدالهادي ارغنديوال ښاغلی ارغنديوال په اقتصاد کې ليسانس لري . ٨- د سوداګرۍ او صنايعو نوماند وزير : محمد هادي حکيمي ښاغلی حکيمي په حقوقو او نړيواله سوداګرۍ کې يې زده کړې کړې دي . ٩- د کليو د پراختيا او بيا رغاونې نوماند وزير: جارالله منصوري منصوري په سياسي علومو کې يې لوړې زده کړې کړې دي . ١٠ - د ټولنيزو چارو، شهيدانو او معلولينو نوماند وزير: امنه افضلي اغلې افضلي په چاپېريال ساتنه کې لوړې زده کړې لري . ١١- د ترانسپورت او هوايي چلند وزير : عبدالرحيم اوراز ښاغلی اوراز ساختماني انجنير او په بهرنيو چارو وزارت کې يې کار کړی، ويل کېږي چې د ملی جنبش لخوا معرفي شوی . ١٢- د ښځو چارو نومانده وزيره : پلوشه حسن اغلې حسن د بيارغاونې په چارو کې ليسانس لري . ١٣- د کډوالو او راستنېدونکو چارو نوماند وزير : انجنير عبدالرحيم نوموړی انجنير دی . ١٤- د سرحدونو چارو، قامونو او قبايلو نوماند وزير : ارسلا جمال ښاغلی جمال په اقتصاد کې ليسانس لري او مخکې د خوست والي و . ١٥- له نشه يي توکيو سره د مبارزې نوماند وزير: ضرار احمد مقبل ښاغلی مقبل د کرزي په تېره دوره کې د څه مودې لپاره د کورنيو چار وزير و . ١٦- د ښاري پراختيا نوماند وزير : انجنير سلطان حسين حصاري ښاغلی حصاري د ښار جوړونې په برخه کې دوکتورا لري\n\n\n\nhttp://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62\n2010.01.24", - "language": "pus", - "unit": "doc" -} \ No newline at end of file + + "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", + "language": "pus" +} diff --git a/api/src/test/mock-data/request/pus-doc-entities_linked.json b/api/src/test/mock-data/request/pus-doc-entities_linked.json index 5cad05453e..779323af28 100644 --- a/api/src/test/mock-data/request/pus-doc-entities_linked.json +++ b/api/src/test/mock-data/request/pus-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "د افغانستان د كابيني لوي لست\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\n\n\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\nنن د نوموړي هيواد د ولسمشر مرستيال كريم خليلي په پارلمان كي د نوي كابيني د ۱۶ تنو وزيرانو نومونه ولوستل . همداشان كريم خليلي د پاتو دوه تنو وزيرانو د نومونو په اړه څه ونه ويل .\nد ويلو ده چي په نوموړي نوي لست كي د هغه وزيرانو نومونه هم شامل دي چي تيره اووني يي د پارلمان نه د اعتماد رايي نوي ترلاسه كړي .\nد يادولو وړ ده چي د افغانستان پارلمان تيره اووني په خپله عمومي ناسته كي د ۲۴ تنو وزيرانو د جمع نه ۷ تنو ته د اعتماد راي وركړه . ۱- د بهرنيو چارو نوماند وزير: زلمی رسول نوموړی د ولسمشر امنيتي سلاکار دی او په طب کې دوکتورا لري . ٢- د عدليې نوماند وزير : حبيب الله غالب غالب په شرعياتو کې دوکتورا لري چې ويل کېږي چې د عبدرب رسول سياف لخوا معرفي شوی دی . ٣- د لوړو زده کړو نوماند وزير : محمد هاشم عصمت الهي په اړيکو او ورځپاڼه ليکلوو ليکلو کې دوکتورا لري او د اصف محسني کس دی . ٤- د حج او ارشاد نوماند وزير : ډاکټر محمد يوسف نيازی ښاغلی نيازی په اسلامي زده کړو کې دوکتورا لري . ٥- د فوايد عامې نوماند وزير : محمد بشير لعلي ٦- د عامې روغتيا نوماند وزير: ډاکټر ثريا دليل د طب په مديريتي برخه کې دوکتورا لري، په قام ازبکه ده او په کينيا او افغانستان کې يې يونيسف کې کارکړی دی . ٧- د اقتصاد نوماند وزير : عبدالهادي ارغنديوال ښاغلی ارغنديوال په اقتصاد کې ليسانس لري . ٨- د سوداګرۍ او صنايعو نوماند وزير : محمد هادي حکيمي ښاغلی حکيمي په حقوقو او نړيواله سوداګرۍ کې يې زده کړې کړې دي . ٩- د کليو د پراختيا او بيا رغاونې نوماند وزير: جارالله منصوري منصوري په سياسي علومو کې يې لوړې زده کړې کړې دي . ١٠ - د ټولنيزو چارو، شهيدانو او معلولينو نوماند وزير: امنه افضلي اغلې افضلي په چاپېريال ساتنه کې لوړې زده کړې لري . ١١- د ترانسپورت او هوايي چلند وزير : عبدالرحيم اوراز ښاغلی اوراز ساختماني انجنير او په بهرنيو چارو وزارت کې يې کار کړی، ويل کېږي چې د ملی جنبش لخوا معرفي شوی . ١٢- د ښځو چارو نومانده وزيره : پلوشه حسن اغلې حسن د بيارغاونې په چارو کې ليسانس لري . ١٣- د کډوالو او راستنېدونکو چارو نوماند وزير : انجنير عبدالرحيم نوموړی انجنير دی . ١٤- د سرحدونو چارو، قامونو او قبايلو نوماند وزير : ارسلا جمال ښاغلی جمال په اقتصاد کې ليسانس لري او مخکې د خوست والي و . ١٥- له نشه يي توکيو سره د مبارزې نوماند وزير: ضرار احمد مقبل ښاغلی مقبل د کرزي په تېره دوره کې د څه مودې لپاره د کورنيو چار وزير و . ١٦- د ښاري پراختيا نوماند وزير : انجنير سلطان حسين حصاري ښاغلی حصاري د ښار جوړونې په برخه کې دوکتورا لري\n\n\n\nhttp://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62\n2010.01.24", - "language": "pus", - "unit": "doc" -} \ No newline at end of file + + "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", + "language": "pus" +} diff --git a/api/src/test/mock-data/request/pus-doc-language.json b/api/src/test/mock-data/request/pus-doc-language.json index 5cad05453e..779323af28 100644 --- a/api/src/test/mock-data/request/pus-doc-language.json +++ b/api/src/test/mock-data/request/pus-doc-language.json @@ -1,5 +1,5 @@ { - "content": "د افغانستان د كابيني لوي لست\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\n\n\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\nنن د نوموړي هيواد د ولسمشر مرستيال كريم خليلي په پارلمان كي د نوي كابيني د ۱۶ تنو وزيرانو نومونه ولوستل . همداشان كريم خليلي د پاتو دوه تنو وزيرانو د نومونو په اړه څه ونه ويل .\nد ويلو ده چي په نوموړي نوي لست كي د هغه وزيرانو نومونه هم شامل دي چي تيره اووني يي د پارلمان نه د اعتماد رايي نوي ترلاسه كړي .\nد يادولو وړ ده چي د افغانستان پارلمان تيره اووني په خپله عمومي ناسته كي د ۲۴ تنو وزيرانو د جمع نه ۷ تنو ته د اعتماد راي وركړه . ۱- د بهرنيو چارو نوماند وزير: زلمی رسول نوموړی د ولسمشر امنيتي سلاکار دی او په طب کې دوکتورا لري . ٢- د عدليې نوماند وزير : حبيب الله غالب غالب په شرعياتو کې دوکتورا لري چې ويل کېږي چې د عبدرب رسول سياف لخوا معرفي شوی دی . ٣- د لوړو زده کړو نوماند وزير : محمد هاشم عصمت الهي په اړيکو او ورځپاڼه ليکلوو ليکلو کې دوکتورا لري او د اصف محسني کس دی . ٤- د حج او ارشاد نوماند وزير : ډاکټر محمد يوسف نيازی ښاغلی نيازی په اسلامي زده کړو کې دوکتورا لري . ٥- د فوايد عامې نوماند وزير : محمد بشير لعلي ٦- د عامې روغتيا نوماند وزير: ډاکټر ثريا دليل د طب په مديريتي برخه کې دوکتورا لري، په قام ازبکه ده او په کينيا او افغانستان کې يې يونيسف کې کارکړی دی . ٧- د اقتصاد نوماند وزير : عبدالهادي ارغنديوال ښاغلی ارغنديوال په اقتصاد کې ليسانس لري . ٨- د سوداګرۍ او صنايعو نوماند وزير : محمد هادي حکيمي ښاغلی حکيمي په حقوقو او نړيواله سوداګرۍ کې يې زده کړې کړې دي . ٩- د کليو د پراختيا او بيا رغاونې نوماند وزير: جارالله منصوري منصوري په سياسي علومو کې يې لوړې زده کړې کړې دي . ١٠ - د ټولنيزو چارو، شهيدانو او معلولينو نوماند وزير: امنه افضلي اغلې افضلي په چاپېريال ساتنه کې لوړې زده کړې لري . ١١- د ترانسپورت او هوايي چلند وزير : عبدالرحيم اوراز ښاغلی اوراز ساختماني انجنير او په بهرنيو چارو وزارت کې يې کار کړی، ويل کېږي چې د ملی جنبش لخوا معرفي شوی . ١٢- د ښځو چارو نومانده وزيره : پلوشه حسن اغلې حسن د بيارغاونې په چارو کې ليسانس لري . ١٣- د کډوالو او راستنېدونکو چارو نوماند وزير : انجنير عبدالرحيم نوموړی انجنير دی . ١٤- د سرحدونو چارو، قامونو او قبايلو نوماند وزير : ارسلا جمال ښاغلی جمال په اقتصاد کې ليسانس لري او مخکې د خوست والي و . ١٥- له نشه يي توکيو سره د مبارزې نوماند وزير: ضرار احمد مقبل ښاغلی مقبل د کرزي په تېره دوره کې د څه مودې لپاره د کورنيو چار وزير و . ١٦- د ښاري پراختيا نوماند وزير : انجنير سلطان حسين حصاري ښاغلی حصاري د ښار جوړونې په برخه کې دوکتورا لري\n\n\n\nhttp://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62\n2010.01.24", - "language": "pus", - "unit": "doc" -} \ No newline at end of file + + "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", + "language": "pus" +} diff --git a/api/src/test/mock-data/request/pus-doc-morphology_complete.json b/api/src/test/mock-data/request/pus-doc-morphology_complete.json index 5cad05453e..779323af28 100644 --- a/api/src/test/mock-data/request/pus-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/pus-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "د افغانستان د كابيني لوي لست\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\n\n\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\nنن د نوموړي هيواد د ولسمشر مرستيال كريم خليلي په پارلمان كي د نوي كابيني د ۱۶ تنو وزيرانو نومونه ولوستل . همداشان كريم خليلي د پاتو دوه تنو وزيرانو د نومونو په اړه څه ونه ويل .\nد ويلو ده چي په نوموړي نوي لست كي د هغه وزيرانو نومونه هم شامل دي چي تيره اووني يي د پارلمان نه د اعتماد رايي نوي ترلاسه كړي .\nد يادولو وړ ده چي د افغانستان پارلمان تيره اووني په خپله عمومي ناسته كي د ۲۴ تنو وزيرانو د جمع نه ۷ تنو ته د اعتماد راي وركړه . ۱- د بهرنيو چارو نوماند وزير: زلمی رسول نوموړی د ولسمشر امنيتي سلاکار دی او په طب کې دوکتورا لري . ٢- د عدليې نوماند وزير : حبيب الله غالب غالب په شرعياتو کې دوکتورا لري چې ويل کېږي چې د عبدرب رسول سياف لخوا معرفي شوی دی . ٣- د لوړو زده کړو نوماند وزير : محمد هاشم عصمت الهي په اړيکو او ورځپاڼه ليکلوو ليکلو کې دوکتورا لري او د اصف محسني کس دی . ٤- د حج او ارشاد نوماند وزير : ډاکټر محمد يوسف نيازی ښاغلی نيازی په اسلامي زده کړو کې دوکتورا لري . ٥- د فوايد عامې نوماند وزير : محمد بشير لعلي ٦- د عامې روغتيا نوماند وزير: ډاکټر ثريا دليل د طب په مديريتي برخه کې دوکتورا لري، په قام ازبکه ده او په کينيا او افغانستان کې يې يونيسف کې کارکړی دی . ٧- د اقتصاد نوماند وزير : عبدالهادي ارغنديوال ښاغلی ارغنديوال په اقتصاد کې ليسانس لري . ٨- د سوداګرۍ او صنايعو نوماند وزير : محمد هادي حکيمي ښاغلی حکيمي په حقوقو او نړيواله سوداګرۍ کې يې زده کړې کړې دي . ٩- د کليو د پراختيا او بيا رغاونې نوماند وزير: جارالله منصوري منصوري په سياسي علومو کې يې لوړې زده کړې کړې دي . ١٠ - د ټولنيزو چارو، شهيدانو او معلولينو نوماند وزير: امنه افضلي اغلې افضلي په چاپېريال ساتنه کې لوړې زده کړې لري . ١١- د ترانسپورت او هوايي چلند وزير : عبدالرحيم اوراز ښاغلی اوراز ساختماني انجنير او په بهرنيو چارو وزارت کې يې کار کړی، ويل کېږي چې د ملی جنبش لخوا معرفي شوی . ١٢- د ښځو چارو نومانده وزيره : پلوشه حسن اغلې حسن د بيارغاونې په چارو کې ليسانس لري . ١٣- د کډوالو او راستنېدونکو چارو نوماند وزير : انجنير عبدالرحيم نوموړی انجنير دی . ١٤- د سرحدونو چارو، قامونو او قبايلو نوماند وزير : ارسلا جمال ښاغلی جمال په اقتصاد کې ليسانس لري او مخکې د خوست والي و . ١٥- له نشه يي توکيو سره د مبارزې نوماند وزير: ضرار احمد مقبل ښاغلی مقبل د کرزي په تېره دوره کې د څه مودې لپاره د کورنيو چار وزير و . ١٦- د ښاري پراختيا نوماند وزير : انجنير سلطان حسين حصاري ښاغلی حصاري د ښار جوړونې په برخه کې دوکتورا لري\n\n\n\nhttp://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62\n2010.01.24", - "language": "pus", - "unit": "doc" -} \ No newline at end of file + + "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", + "language": "pus" +} diff --git a/api/src/test/mock-data/request/pus-doc-sentiment.json b/api/src/test/mock-data/request/pus-doc-sentiment.json index 5cad05453e..779323af28 100644 --- a/api/src/test/mock-data/request/pus-doc-sentiment.json +++ b/api/src/test/mock-data/request/pus-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "د افغانستان د كابيني لوي لست\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\n\n\nد افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي .\nنن د نوموړي هيواد د ولسمشر مرستيال كريم خليلي په پارلمان كي د نوي كابيني د ۱۶ تنو وزيرانو نومونه ولوستل . همداشان كريم خليلي د پاتو دوه تنو وزيرانو د نومونو په اړه څه ونه ويل .\nد ويلو ده چي په نوموړي نوي لست كي د هغه وزيرانو نومونه هم شامل دي چي تيره اووني يي د پارلمان نه د اعتماد رايي نوي ترلاسه كړي .\nد يادولو وړ ده چي د افغانستان پارلمان تيره اووني په خپله عمومي ناسته كي د ۲۴ تنو وزيرانو د جمع نه ۷ تنو ته د اعتماد راي وركړه . ۱- د بهرنيو چارو نوماند وزير: زلمی رسول نوموړی د ولسمشر امنيتي سلاکار دی او په طب کې دوکتورا لري . ٢- د عدليې نوماند وزير : حبيب الله غالب غالب په شرعياتو کې دوکتورا لري چې ويل کېږي چې د عبدرب رسول سياف لخوا معرفي شوی دی . ٣- د لوړو زده کړو نوماند وزير : محمد هاشم عصمت الهي په اړيکو او ورځپاڼه ليکلوو ليکلو کې دوکتورا لري او د اصف محسني کس دی . ٤- د حج او ارشاد نوماند وزير : ډاکټر محمد يوسف نيازی ښاغلی نيازی په اسلامي زده کړو کې دوکتورا لري . ٥- د فوايد عامې نوماند وزير : محمد بشير لعلي ٦- د عامې روغتيا نوماند وزير: ډاکټر ثريا دليل د طب په مديريتي برخه کې دوکتورا لري، په قام ازبکه ده او په کينيا او افغانستان کې يې يونيسف کې کارکړی دی . ٧- د اقتصاد نوماند وزير : عبدالهادي ارغنديوال ښاغلی ارغنديوال په اقتصاد کې ليسانس لري . ٨- د سوداګرۍ او صنايعو نوماند وزير : محمد هادي حکيمي ښاغلی حکيمي په حقوقو او نړيواله سوداګرۍ کې يې زده کړې کړې دي . ٩- د کليو د پراختيا او بيا رغاونې نوماند وزير: جارالله منصوري منصوري په سياسي علومو کې يې لوړې زده کړې کړې دي . ١٠ - د ټولنيزو چارو، شهيدانو او معلولينو نوماند وزير: امنه افضلي اغلې افضلي په چاپېريال ساتنه کې لوړې زده کړې لري . ١١- د ترانسپورت او هوايي چلند وزير : عبدالرحيم اوراز ښاغلی اوراز ساختماني انجنير او په بهرنيو چارو وزارت کې يې کار کړی، ويل کېږي چې د ملی جنبش لخوا معرفي شوی . ١٢- د ښځو چارو نومانده وزيره : پلوشه حسن اغلې حسن د بيارغاونې په چارو کې ليسانس لري . ١٣- د کډوالو او راستنېدونکو چارو نوماند وزير : انجنير عبدالرحيم نوموړی انجنير دی . ١٤- د سرحدونو چارو، قامونو او قبايلو نوماند وزير : ارسلا جمال ښاغلی جمال په اقتصاد کې ليسانس لري او مخکې د خوست والي و . ١٥- له نشه يي توکيو سره د مبارزې نوماند وزير: ضرار احمد مقبل ښاغلی مقبل د کرزي په تېره دوره کې د څه مودې لپاره د کورنيو چار وزير و . ١٦- د ښاري پراختيا نوماند وزير : انجنير سلطان حسين حصاري ښاغلی حصاري د ښار جوړونې په برخه کې دوکتورا لري\n\n\n\nhttp://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62\n2010.01.24", - "language": "pus", - "unit": "doc" -} \ No newline at end of file + + "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", + "language": "pus" +} diff --git a/api/src/test/mock-data/request/pus-sentence-categories.json b/api/src/test/mock-data/request/pus-sentence-categories.json deleted file mode 100644 index e210391754..0000000000 --- a/api/src/test/mock-data/request/pus-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", - "language": "pus", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/pus-sentence-entities.json b/api/src/test/mock-data/request/pus-sentence-entities.json deleted file mode 100644 index e210391754..0000000000 --- a/api/src/test/mock-data/request/pus-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", - "language": "pus", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/pus-sentence-entities_linked.json b/api/src/test/mock-data/request/pus-sentence-entities_linked.json deleted file mode 100644 index e210391754..0000000000 --- a/api/src/test/mock-data/request/pus-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", - "language": "pus", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/pus-sentence-language.json b/api/src/test/mock-data/request/pus-sentence-language.json deleted file mode 100644 index e210391754..0000000000 --- a/api/src/test/mock-data/request/pus-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", - "language": "pus", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/pus-sentence-morphology_complete.json b/api/src/test/mock-data/request/pus-sentence-morphology_complete.json deleted file mode 100644 index e210391754..0000000000 --- a/api/src/test/mock-data/request/pus-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", - "language": "pus", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/pus-sentence-sentiment.json b/api/src/test/mock-data/request/pus-sentence-sentiment.json deleted file mode 100644 index e210391754..0000000000 --- a/api/src/test/mock-data/request/pus-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي .", - "language": "pus", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/rni-1-address-similarity.json b/api/src/test/mock-data/request/rni-1-address-similarity.json new file mode 100644 index 0000000000..9e070798a7 --- /dev/null +++ b/api/src/test/mock-data/request/rni-1-address-similarity.json @@ -0,0 +1,16 @@ +{ + "address1": { + "houseNumber" : "1600", + "road" : "Pennsylvania Ave NW", + "city" : "Washington", + "state" : "DC", + "postCode" : "20500" + }, + "address2": { + "houseNumber" : "160", + "road" : "Pennsilvana Ave", + "city" : "Washington", + "state" : "D.C.", + "postCode" : "20500" + } +} \ No newline at end of file diff --git a/api/src/test/mock-data/request/rni-1-name-deduplication.json b/api/src/test/mock-data/request/rni-1-name-deduplication.json new file mode 100644 index 0000000000..b0ed81ad9f --- /dev/null +++ b/api/src/test/mock-data/request/rni-1-name-deduplication.json @@ -0,0 +1,7 @@ +{ + "names": [ + {"text": "Joe"}, + {"text": "Smith"} + ], + "threshold": 0.8 +} \ No newline at end of file diff --git a/api/src/test/mock-data/request/rni-1-matched-name.json b/api/src/test/mock-data/request/rni-1-name-similarity.json similarity index 99% rename from api/src/test/mock-data/request/rni-1-matched-name.json rename to api/src/test/mock-data/request/rni-1-name-similarity.json index 32089e68ac..44d5768f8d 100644 --- a/api/src/test/mock-data/request/rni-1-matched-name.json +++ b/api/src/test/mock-data/request/rni-1-name-similarity.json @@ -11,4 +11,4 @@ "script": "Latn", "text": "Jane Doe" } -} \ No newline at end of file +} diff --git a/api/src/test/mock-data/request/rni-1-record-similarity-missing-field.json b/api/src/test/mock-data/request/rni-1-record-similarity-missing-field.json new file mode 100644 index 0000000000..dfe1dfa3c3 --- /dev/null +++ b/api/src/test/mock-data/request/rni-1-record-similarity-missing-field.json @@ -0,0 +1,53 @@ +{ + "fields": { + "homeAddress": { + "type": "rni_address", + "weight": 0.5 + }, + "dob": { + "type": "rni_date", + "weight": 0.2 + }, + "dob2": { + "type": "rni_date", + "weight": 0.1 + }, + "addr": { + "type": "rni_address", + "weight": 0.5 + } + }, + "properties": { + "threshold": 0.7 + }, + "records": { + "left": [ + { + "primaryName": { + "data": "Ethan R", + "language": "eng", + "entityType": "PERSON" + }, + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + }, + { + "primaryName": "Evan R", + "dob": "1993-04-16" + } + ], + "right": [ + { + "primaryName": "Seth R", + "dob": "1993-04-16" + }, + { + "primaryName": "Ivan R", + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + } + ] + } +} \ No newline at end of file diff --git a/api/src/test/mock-data/request/rni-1-record-similarity-null-field.json b/api/src/test/mock-data/request/rni-1-record-similarity-null-field.json new file mode 100644 index 0000000000..5802f2f91e --- /dev/null +++ b/api/src/test/mock-data/request/rni-1-record-similarity-null-field.json @@ -0,0 +1,53 @@ +{ + "fields": { + "primaryName": { + "type": null, + "weight": 0.5 + }, + "dob": { + "type": "rni_date", + "weight": 0.2 + }, + "dob2": { + "type": "rni_date", + "weight": 0.1 + }, + "addr": { + "type": "rni_address", + "weight": 0.5 + } + }, + "properties": { + "threshold": 0.7 + }, + "records": { + "left": [ + { + "primaryName": { + "data": "Ethan R", + "language": "eng", + "entityType": "PERSON" + }, + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + }, + { + "primaryName": "Evan R", + "dob": "1993-04-16" + } + ], + "right": [ + { + "primaryName": "Seth R", + "dob": "1993-04-16" + }, + { + "primaryName": "Ivan R", + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + } + ] + } +} \ No newline at end of file diff --git a/api/src/test/mock-data/request/rni-1-record-similarity.json b/api/src/test/mock-data/request/rni-1-record-similarity.json new file mode 100644 index 0000000000..ff91c578fc --- /dev/null +++ b/api/src/test/mock-data/request/rni-1-record-similarity.json @@ -0,0 +1,59 @@ +{ + "fields": { + "primaryName": { + "type": "rni_name", + "weight": 0.5 + }, + "dob": { + "type": "rni_date", + "weight": 0.2 + }, + "dob2": { + "type": "rni_date", + "weight": 0.1 + }, + "addr": { + "type": "rni_address", + "weight": 0.5 + } + }, + "properties": { + "threshold": 0.7 + }, + "records": { + "left": [ + { + "primaryName": { + "text": "Ethan R", + "language": "eng", + "entityType": "PERSON" + }, + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + }, + { + "primaryName": { + "text": "Evan R" + }, + "dob": "1993-04-16" + } + ], + "right": [ + { + "primaryName": { + "text": "Seth R" + }, + "dob": "1993-04-16" + }, + { + "primaryName": { + "text": "Ivan R" + }, + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + } + ] + } +} diff --git a/api/src/test/mock-data/request/rni-2-name-deduplication.json b/api/src/test/mock-data/request/rni-2-name-deduplication.json new file mode 100644 index 0000000000..085af17d65 --- /dev/null +++ b/api/src/test/mock-data/request/rni-2-name-deduplication.json @@ -0,0 +1,7 @@ +{ + "names": [ + {"text": "Joe", "entityType":"PERSON", "script":"Latn", "language":"eng"}, + {"text": "Smith", "entityType":"PERSON", "script":"Latn", "language":"eng"} + ], + "threshold": 0.8 +} diff --git a/api/src/test/mock-data/request/rnt-1-multi-name-translation.json b/api/src/test/mock-data/request/rnt-1-multi-name-translation.json new file mode 100644 index 0000000000..4f17c3b1d7 --- /dev/null +++ b/api/src/test/mock-data/request/rnt-1-multi-name-translation.json @@ -0,0 +1,11 @@ +{ + "entityType": "PERSON", + "name": "معمر محمد أبو منيار القذاف", + "sourceLanguageOfOrigin": "ara", + "sourceLanguageOfUse": "ara", + "sourceScript": "Arab", + "targetLanguage": "eng", + "targetScheme": "IC", + "targetScript": "Latn", + "maximumResults": 10 +} diff --git a/api/src/test/mock-data/request/rnt-1-translated-name.json b/api/src/test/mock-data/request/rnt-1-name-translation.json similarity index 88% rename from api/src/test/mock-data/request/rnt-1-translated-name.json rename to api/src/test/mock-data/request/rnt-1-name-translation.json index 36731c83ff..fae4df3e7f 100644 --- a/api/src/test/mock-data/request/rnt-1-translated-name.json +++ b/api/src/test/mock-data/request/rnt-1-name-translation.json @@ -1,5 +1,5 @@ { - "entityType": "PERSON", + "entityType": "PERSON", "name": "毛泽东", "sourceLanguageOfOrigin": "zho", "sourceLanguageOfUse": "zho", @@ -7,4 +7,4 @@ "targetLanguage": "eng", "targetScheme": "HYPY_TONED", "targetScript": "Latn" -} \ No newline at end of file +} diff --git a/api/src/test/mock-data/request/spa-doc-categories.json b/api/src/test/mock-data/request/spa-doc-categories.json index 2bf8706adf..7bd751ce48 100644 --- a/api/src/test/mock-data/request/spa-doc-categories.json +++ b/api/src/test/mock-data/request/spa-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "\"Entrega el mar, devuelve el mar...\", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país.\nLa Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que \"hemos hecho progresos importantes\". \"Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola\", agregó.\nAludía así a la agenda que, en su punto sexto, contempla el \"tema marítimo\", pero cuyos detalles son poco conocidos.\nPor lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. \"Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común\", dijo la Mandataria.\nLa postura asumida ayer por Bachelet se produjo sólo días después de que Evo Morales dejara entrever su inquietud por la actitud que tendrá Piñera ante la aspiración boliviana de una salida al mar. En La Paz creen que el nuevo gobernante chileno restringirá al máximo el diálogo sobre este punto.\nDicha inquietud tuvo su origen en el debate presidencial de hace dos semanas entre Piñera y Eduardo Frei, cuando el actual Presidente electo dijo que no conversaría sobre cesión de soberanía y que sólo tenía en carpeta mejorar el acceso boliviano al Pacífico, frase que es leída en la diplomacia boliviana como \"simples facilidades portuarias\". Morales respondió el martes que \"cualquier compromiso es de Estado a Estado\", y su canciller, David Choquehuanca, pidió mantener la agenda bilateral.\n\n\n\nhttp://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}\n2010.01.23", - "language": "spa", - "unit": "doc" -} \ No newline at end of file + + "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", + "language": "spa" +} diff --git a/api/src/test/mock-data/request/spa-doc-entities.json b/api/src/test/mock-data/request/spa-doc-entities.json index 2bf8706adf..7bd751ce48 100644 --- a/api/src/test/mock-data/request/spa-doc-entities.json +++ b/api/src/test/mock-data/request/spa-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "\"Entrega el mar, devuelve el mar...\", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país.\nLa Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que \"hemos hecho progresos importantes\". \"Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola\", agregó.\nAludía así a la agenda que, en su punto sexto, contempla el \"tema marítimo\", pero cuyos detalles son poco conocidos.\nPor lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. \"Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común\", dijo la Mandataria.\nLa postura asumida ayer por Bachelet se produjo sólo días después de que Evo Morales dejara entrever su inquietud por la actitud que tendrá Piñera ante la aspiración boliviana de una salida al mar. En La Paz creen que el nuevo gobernante chileno restringirá al máximo el diálogo sobre este punto.\nDicha inquietud tuvo su origen en el debate presidencial de hace dos semanas entre Piñera y Eduardo Frei, cuando el actual Presidente electo dijo que no conversaría sobre cesión de soberanía y que sólo tenía en carpeta mejorar el acceso boliviano al Pacífico, frase que es leída en la diplomacia boliviana como \"simples facilidades portuarias\". Morales respondió el martes que \"cualquier compromiso es de Estado a Estado\", y su canciller, David Choquehuanca, pidió mantener la agenda bilateral.\n\n\n\nhttp://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}\n2010.01.23", - "language": "spa", - "unit": "doc" -} \ No newline at end of file + + "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", + "language": "spa" +} diff --git a/api/src/test/mock-data/request/spa-doc-entities_linked.json b/api/src/test/mock-data/request/spa-doc-entities_linked.json index 2bf8706adf..7bd751ce48 100644 --- a/api/src/test/mock-data/request/spa-doc-entities_linked.json +++ b/api/src/test/mock-data/request/spa-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "\"Entrega el mar, devuelve el mar...\", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país.\nLa Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que \"hemos hecho progresos importantes\". \"Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola\", agregó.\nAludía así a la agenda que, en su punto sexto, contempla el \"tema marítimo\", pero cuyos detalles son poco conocidos.\nPor lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. \"Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común\", dijo la Mandataria.\nLa postura asumida ayer por Bachelet se produjo sólo días después de que Evo Morales dejara entrever su inquietud por la actitud que tendrá Piñera ante la aspiración boliviana de una salida al mar. En La Paz creen que el nuevo gobernante chileno restringirá al máximo el diálogo sobre este punto.\nDicha inquietud tuvo su origen en el debate presidencial de hace dos semanas entre Piñera y Eduardo Frei, cuando el actual Presidente electo dijo que no conversaría sobre cesión de soberanía y que sólo tenía en carpeta mejorar el acceso boliviano al Pacífico, frase que es leída en la diplomacia boliviana como \"simples facilidades portuarias\". Morales respondió el martes que \"cualquier compromiso es de Estado a Estado\", y su canciller, David Choquehuanca, pidió mantener la agenda bilateral.\n\n\n\nhttp://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}\n2010.01.23", - "language": "spa", - "unit": "doc" -} \ No newline at end of file + + "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", + "language": "spa" +} diff --git a/api/src/test/mock-data/request/spa-doc-language.json b/api/src/test/mock-data/request/spa-doc-language.json index 2bf8706adf..7bd751ce48 100644 --- a/api/src/test/mock-data/request/spa-doc-language.json +++ b/api/src/test/mock-data/request/spa-doc-language.json @@ -1,5 +1,5 @@ { - "content": "\"Entrega el mar, devuelve el mar...\", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país.\nLa Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que \"hemos hecho progresos importantes\". \"Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola\", agregó.\nAludía así a la agenda que, en su punto sexto, contempla el \"tema marítimo\", pero cuyos detalles son poco conocidos.\nPor lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. \"Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común\", dijo la Mandataria.\nLa postura asumida ayer por Bachelet se produjo sólo días después de que Evo Morales dejara entrever su inquietud por la actitud que tendrá Piñera ante la aspiración boliviana de una salida al mar. En La Paz creen que el nuevo gobernante chileno restringirá al máximo el diálogo sobre este punto.\nDicha inquietud tuvo su origen en el debate presidencial de hace dos semanas entre Piñera y Eduardo Frei, cuando el actual Presidente electo dijo que no conversaría sobre cesión de soberanía y que sólo tenía en carpeta mejorar el acceso boliviano al Pacífico, frase que es leída en la diplomacia boliviana como \"simples facilidades portuarias\". Morales respondió el martes que \"cualquier compromiso es de Estado a Estado\", y su canciller, David Choquehuanca, pidió mantener la agenda bilateral.\n\n\n\nhttp://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}\n2010.01.23", - "language": "spa", - "unit": "doc" -} \ No newline at end of file + + "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", + "language": "spa" +} diff --git a/api/src/test/mock-data/request/spa-doc-morphology_complete.json b/api/src/test/mock-data/request/spa-doc-morphology_complete.json index 2bf8706adf..7bd751ce48 100644 --- a/api/src/test/mock-data/request/spa-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/spa-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "\"Entrega el mar, devuelve el mar...\", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país.\nLa Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que \"hemos hecho progresos importantes\". \"Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola\", agregó.\nAludía así a la agenda que, en su punto sexto, contempla el \"tema marítimo\", pero cuyos detalles son poco conocidos.\nPor lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. \"Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común\", dijo la Mandataria.\nLa postura asumida ayer por Bachelet se produjo sólo días después de que Evo Morales dejara entrever su inquietud por la actitud que tendrá Piñera ante la aspiración boliviana de una salida al mar. En La Paz creen que el nuevo gobernante chileno restringirá al máximo el diálogo sobre este punto.\nDicha inquietud tuvo su origen en el debate presidencial de hace dos semanas entre Piñera y Eduardo Frei, cuando el actual Presidente electo dijo que no conversaría sobre cesión de soberanía y que sólo tenía en carpeta mejorar el acceso boliviano al Pacífico, frase que es leída en la diplomacia boliviana como \"simples facilidades portuarias\". Morales respondió el martes que \"cualquier compromiso es de Estado a Estado\", y su canciller, David Choquehuanca, pidió mantener la agenda bilateral.\n\n\n\nhttp://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}\n2010.01.23", - "language": "spa", - "unit": "doc" -} \ No newline at end of file + + "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", + "language": "spa" +} diff --git a/api/src/test/mock-data/request/spa-doc-sentiment.json b/api/src/test/mock-data/request/spa-doc-sentiment.json index 2bf8706adf..7bd751ce48 100644 --- a/api/src/test/mock-data/request/spa-doc-sentiment.json +++ b/api/src/test/mock-data/request/spa-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "\"Entrega el mar, devuelve el mar...\", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país.\nLa Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que \"hemos hecho progresos importantes\". \"Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola\", agregó.\nAludía así a la agenda que, en su punto sexto, contempla el \"tema marítimo\", pero cuyos detalles son poco conocidos.\nPor lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. \"Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común\", dijo la Mandataria.\nLa postura asumida ayer por Bachelet se produjo sólo días después de que Evo Morales dejara entrever su inquietud por la actitud que tendrá Piñera ante la aspiración boliviana de una salida al mar. En La Paz creen que el nuevo gobernante chileno restringirá al máximo el diálogo sobre este punto.\nDicha inquietud tuvo su origen en el debate presidencial de hace dos semanas entre Piñera y Eduardo Frei, cuando el actual Presidente electo dijo que no conversaría sobre cesión de soberanía y que sólo tenía en carpeta mejorar el acceso boliviano al Pacífico, frase que es leída en la diplomacia boliviana como \"simples facilidades portuarias\". Morales respondió el martes que \"cualquier compromiso es de Estado a Estado\", y su canciller, David Choquehuanca, pidió mantener la agenda bilateral.\n\n\n\nhttp://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}\n2010.01.23", - "language": "spa", - "unit": "doc" -} \ No newline at end of file + + "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", + "language": "spa" +} diff --git a/api/src/test/mock-data/request/spa-sentence-categories.json b/api/src/test/mock-data/request/spa-sentence-categories.json deleted file mode 100644 index 97519c78f3..0000000000 --- a/api/src/test/mock-data/request/spa-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", - "language": "spa", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/spa-sentence-entities.json b/api/src/test/mock-data/request/spa-sentence-entities.json deleted file mode 100644 index 97519c78f3..0000000000 --- a/api/src/test/mock-data/request/spa-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", - "language": "spa", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/spa-sentence-entities_linked.json b/api/src/test/mock-data/request/spa-sentence-entities_linked.json deleted file mode 100644 index 97519c78f3..0000000000 --- a/api/src/test/mock-data/request/spa-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", - "language": "spa", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/spa-sentence-language.json b/api/src/test/mock-data/request/spa-sentence-language.json deleted file mode 100644 index 97519c78f3..0000000000 --- a/api/src/test/mock-data/request/spa-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", - "language": "spa", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/spa-sentence-morphology_complete.json b/api/src/test/mock-data/request/spa-sentence-morphology_complete.json deleted file mode 100644 index 97519c78f3..0000000000 --- a/api/src/test/mock-data/request/spa-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", - "language": "spa", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/spa-sentence-sentiment.json b/api/src/test/mock-data/request/spa-sentence-sentiment.json deleted file mode 100644 index 97519c78f3..0000000000 --- a/api/src/test/mock-data/request/spa-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos.", - "language": "spa", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/spa-url-categories.json b/api/src/test/mock-data/request/spa-url-categories.json index 87683ef687..00f7f50ff5 100644 --- a/api/src/test/mock-data/request/spa-url-categories.json +++ b/api/src/test/mock-data/request/spa-url-categories.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNGyGPteDB3v0v5HPmqBDVQ3CYDPRA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779247028501&ei=XQNNVfrXD9qs3AHr-4CADg&url=http://eleconomista.com.mx/sociedad/2015/05/08/mexico-colombia-naciones-objetivos-comunes-epn" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNE3L9jK8Q5HmuPH90WQKCqrh1oNuw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779590551015&ei=2onMVtimL4_M3QHw_6fgBA&url=http://eleconomista.com.mx/finanzas-publicas/2016/02/23/economia-mexicana-crecio-su-mayor-ritmo-tres-anos-4t" +} diff --git a/api/src/test/mock-data/request/spa-url-entities.json b/api/src/test/mock-data/request/spa-url-entities.json index 87683ef687..00f7f50ff5 100644 --- a/api/src/test/mock-data/request/spa-url-entities.json +++ b/api/src/test/mock-data/request/spa-url-entities.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNGyGPteDB3v0v5HPmqBDVQ3CYDPRA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779247028501&ei=XQNNVfrXD9qs3AHr-4CADg&url=http://eleconomista.com.mx/sociedad/2015/05/08/mexico-colombia-naciones-objetivos-comunes-epn" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNE3L9jK8Q5HmuPH90WQKCqrh1oNuw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779590551015&ei=2onMVtimL4_M3QHw_6fgBA&url=http://eleconomista.com.mx/finanzas-publicas/2016/02/23/economia-mexicana-crecio-su-mayor-ritmo-tres-anos-4t" +} diff --git a/api/src/test/mock-data/request/spa-url-entities_linked.json b/api/src/test/mock-data/request/spa-url-entities_linked.json index 87683ef687..00f7f50ff5 100644 --- a/api/src/test/mock-data/request/spa-url-entities_linked.json +++ b/api/src/test/mock-data/request/spa-url-entities_linked.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNGyGPteDB3v0v5HPmqBDVQ3CYDPRA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779247028501&ei=XQNNVfrXD9qs3AHr-4CADg&url=http://eleconomista.com.mx/sociedad/2015/05/08/mexico-colombia-naciones-objetivos-comunes-epn" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNE3L9jK8Q5HmuPH90WQKCqrh1oNuw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779590551015&ei=2onMVtimL4_M3QHw_6fgBA&url=http://eleconomista.com.mx/finanzas-publicas/2016/02/23/economia-mexicana-crecio-su-mayor-ritmo-tres-anos-4t" +} diff --git a/api/src/test/mock-data/request/spa-url-language.json b/api/src/test/mock-data/request/spa-url-language.json index 87683ef687..00f7f50ff5 100644 --- a/api/src/test/mock-data/request/spa-url-language.json +++ b/api/src/test/mock-data/request/spa-url-language.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNGyGPteDB3v0v5HPmqBDVQ3CYDPRA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779247028501&ei=XQNNVfrXD9qs3AHr-4CADg&url=http://eleconomista.com.mx/sociedad/2015/05/08/mexico-colombia-naciones-objetivos-comunes-epn" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNE3L9jK8Q5HmuPH90WQKCqrh1oNuw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779590551015&ei=2onMVtimL4_M3QHw_6fgBA&url=http://eleconomista.com.mx/finanzas-publicas/2016/02/23/economia-mexicana-crecio-su-mayor-ritmo-tres-anos-4t" +} diff --git a/api/src/test/mock-data/request/spa-url-morphology_complete.json b/api/src/test/mock-data/request/spa-url-morphology_complete.json index 87683ef687..00f7f50ff5 100644 --- a/api/src/test/mock-data/request/spa-url-morphology_complete.json +++ b/api/src/test/mock-data/request/spa-url-morphology_complete.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNGyGPteDB3v0v5HPmqBDVQ3CYDPRA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779247028501&ei=XQNNVfrXD9qs3AHr-4CADg&url=http://eleconomista.com.mx/sociedad/2015/05/08/mexico-colombia-naciones-objetivos-comunes-epn" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNE3L9jK8Q5HmuPH90WQKCqrh1oNuw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779590551015&ei=2onMVtimL4_M3QHw_6fgBA&url=http://eleconomista.com.mx/finanzas-publicas/2016/02/23/economia-mexicana-crecio-su-mayor-ritmo-tres-anos-4t" +} diff --git a/api/src/test/mock-data/request/spa-url-sentiment.json b/api/src/test/mock-data/request/spa-url-sentiment.json index 87683ef687..00f7f50ff5 100644 --- a/api/src/test/mock-data/request/spa-url-sentiment.json +++ b/api/src/test/mock-data/request/spa-url-sentiment.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNGyGPteDB3v0v5HPmqBDVQ3CYDPRA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779247028501&ei=XQNNVfrXD9qs3AHr-4CADg&url=http://eleconomista.com.mx/sociedad/2015/05/08/mexico-colombia-naciones-objetivos-comunes-epn" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=es_mx&usg=AFQjCNE3L9jK8Q5HmuPH90WQKCqrh1oNuw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779590551015&ei=2onMVtimL4_M3QHw_6fgBA&url=http://eleconomista.com.mx/finanzas-publicas/2016/02/23/economia-mexicana-crecio-su-mayor-ritmo-tres-anos-4t" +} diff --git a/api/src/test/mock-data/request/eng-sentence-categories.json b/api/src/test/mock-data/request/unknown-field-entities.json similarity index 72% rename from api/src/test/mock-data/request/eng-sentence-categories.json rename to api/src/test/mock-data/request/unknown-field-entities.json index fbf7e0e4e2..7549afddcc 100644 --- a/api/src/test/mock-data/request/eng-sentence-categories.json +++ b/api/src/test/mock-data/request/unknown-field-entities.json @@ -1,5 +1,5 @@ { - "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", - "language": "eng", - "unit": "sentence" -} \ No newline at end of file + + "content": "He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the \"commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people\" and U.S. allies.", + "language": "eng" +} diff --git a/api/src/test/mock-data/request/xxx-doc-categories.json b/api/src/test/mock-data/request/xxx-doc-categories.json index 8702c149bc..7a493a0bcb 100644 --- a/api/src/test/mock-data/request/xxx-doc-categories.json +++ b/api/src/test/mock-data/request/xxx-doc-categories.json @@ -1,4 +1,4 @@ { - "content": "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder.\n\nDie Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: \"Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa.\"\n\nDoch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: \"In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.\"", - "unit": "doc" -} \ No newline at end of file + + "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." +} diff --git a/api/src/test/mock-data/request/xxx-doc-entities.json b/api/src/test/mock-data/request/xxx-doc-entities.json index 8702c149bc..7a493a0bcb 100644 --- a/api/src/test/mock-data/request/xxx-doc-entities.json +++ b/api/src/test/mock-data/request/xxx-doc-entities.json @@ -1,4 +1,4 @@ { - "content": "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder.\n\nDie Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: \"Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa.\"\n\nDoch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: \"In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.\"", - "unit": "doc" -} \ No newline at end of file + + "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." +} diff --git a/api/src/test/mock-data/request/xxx-doc-entities_linked.json b/api/src/test/mock-data/request/xxx-doc-entities_linked.json index 8702c149bc..7a493a0bcb 100644 --- a/api/src/test/mock-data/request/xxx-doc-entities_linked.json +++ b/api/src/test/mock-data/request/xxx-doc-entities_linked.json @@ -1,4 +1,4 @@ { - "content": "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder.\n\nDie Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: \"Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa.\"\n\nDoch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: \"In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.\"", - "unit": "doc" -} \ No newline at end of file + + "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." +} diff --git a/api/src/test/mock-data/request/xxx-doc-language.json b/api/src/test/mock-data/request/xxx-doc-language.json index 8702c149bc..7a493a0bcb 100644 --- a/api/src/test/mock-data/request/xxx-doc-language.json +++ b/api/src/test/mock-data/request/xxx-doc-language.json @@ -1,4 +1,4 @@ { - "content": "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder.\n\nDie Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: \"Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa.\"\n\nDoch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: \"In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.\"", - "unit": "doc" -} \ No newline at end of file + + "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." +} diff --git a/api/src/test/mock-data/request/xxx-doc-morphology_complete.json b/api/src/test/mock-data/request/xxx-doc-morphology_complete.json index 8702c149bc..7a493a0bcb 100644 --- a/api/src/test/mock-data/request/xxx-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/xxx-doc-morphology_complete.json @@ -1,4 +1,4 @@ { - "content": "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder.\n\nDie Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: \"Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa.\"\n\nDoch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: \"In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.\"", - "unit": "doc" -} \ No newline at end of file + + "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." +} diff --git a/api/src/test/mock-data/request/xxx-doc-sentiment.json b/api/src/test/mock-data/request/xxx-doc-sentiment.json index 8702c149bc..7a493a0bcb 100644 --- a/api/src/test/mock-data/request/xxx-doc-sentiment.json +++ b/api/src/test/mock-data/request/xxx-doc-sentiment.json @@ -1,4 +1,4 @@ { - "content": "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder.\n\nDie Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: \"Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa.\"\n\nDoch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: \"In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.\"", - "unit": "doc" -} \ No newline at end of file + + "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." +} diff --git a/api/src/test/mock-data/request/xxx-null-categories.json b/api/src/test/mock-data/request/xxx-null-categories.json deleted file mode 100644 index 1fc9c48f65..0000000000 --- a/api/src/test/mock-data/request/xxx-null-categories.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\n인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-null-entities.json b/api/src/test/mock-data/request/xxx-null-entities.json deleted file mode 100644 index 1fc9c48f65..0000000000 --- a/api/src/test/mock-data/request/xxx-null-entities.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\n인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-null-entities_linked.json b/api/src/test/mock-data/request/xxx-null-entities_linked.json deleted file mode 100644 index 1fc9c48f65..0000000000 --- a/api/src/test/mock-data/request/xxx-null-entities_linked.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\n인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-null-language.json b/api/src/test/mock-data/request/xxx-null-language.json deleted file mode 100644 index 1fc9c48f65..0000000000 --- a/api/src/test/mock-data/request/xxx-null-language.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\n인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-null-morphology_complete.json b/api/src/test/mock-data/request/xxx-null-morphology_complete.json deleted file mode 100644 index 1fc9c48f65..0000000000 --- a/api/src/test/mock-data/request/xxx-null-morphology_complete.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\n인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-null-sentiment.json b/api/src/test/mock-data/request/xxx-null-sentiment.json deleted file mode 100644 index 1fc9c48f65..0000000000 --- a/api/src/test/mock-data/request/xxx-null-sentiment.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "content": "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의\n인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970\n년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선\n되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인\n평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승\n계하였다.\n\n\n어린 시절과 가계 [편집]\n\n김일성의 생가\n김일성은 1912년 4월 15일에 평안남도 대동군 고평면(古平面) 하리 칠곡(외가가 있었던 곳으로, 오늘날 평양 만경대)[6]에서 아버지 김형직(金亨稷, 1894년 7월 10일~1926년)과 어머니 강반석(康盤石,[7] 1892년~1932년)의 삼형제의 맏아들로 태어났다. 김일성의 전주 김씨 12대조 김계상이 전라북도 전\n주에서 평양으로 이주하였으며,[6][8] 이후 농업에 종사하였으며, 증조부 김응우는 제너럴 셔먼호 사건에 종군하였다. 북조선에서는 김응우가 제너럴 셔먼 호 격퇴의 지휘관이라 주장한다. 그의 생가는 만경대라는 이름으로 보존, 관리되고 있다. 김형직은 할아버지 이래로 지주 집안의 묘지기였으며,[9] 일본 제국주의에 대항하여 항일무장투쟁을 벌인 한국의 독립 운동가로 알려져 있다.[3] 어머니 강반석은 기독교 장로교 신도였고, 외할아버지 강돈욱[9]는 칠골교회의 장로[10]였다.[3] 김일성의 외가\n는 큰 외삼촌 강진석(康晋錫)을 비롯하여 일찍부터 항일 민족운동과 관련을 맺고 있었으며, 강돈욱은 평생을 교육사업에 헌신한 기독교인이었다.[9] 아버지 김형직 또는 할아버지 김보현이 기둥이 되라\n는 뜻에서 그의 이름을 성주(成柱) 또는 성주(聖柱)라 지었다고 한다.\n어려서 부모를 따라 만주 지린성(吉林省) 무송(撫松)으로 이사했다. 1919년 일곱 살이었던 김일성은 민족주의 계열의 독립운동을 하던 아버지 김형직을 따라 만주로 건너가 장백현 팔도구에서 팔도구소\n학교를 다녔다. 그 뒤 자식의 장래를 생각한 김형직의 결심에 따라 1923년 초부터 1925년 초까지 평\n안도 대동군 용산면 하리(下里) 칠골에 있는 외가에서 머물면서 창덕소학교에 다녔다.[9] 창덕학교는 1907년 하리 장로교회가 중심이 되어 세운 5년제 학교인데, 김일성의 외할아버지인 강돈욱도 설립자 가운데 한 사람이며, 한때 창덕학교의 교감과 교장을 맡기도 했다. 아버지 김형직의 권고로 중국말\n을 배우고 중국인소학교에서 중어공부를 하여 중어를 자유롭게 구사할수 있었다.[11]\n창덕학교로의 진학과정에 대하여 략력에서는 아버지 김형직이 '혁명을 하자면 자기 나라를 알아야 한다고 말한 권고를 받고 1923년 3월 중국 팔도구로부터 만경대까지배움의 천리길을 걸어 통학하며 외\n가집이 있는 칠골 창덕학교에서 공부하였다는 것이다." -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-sentence-categories.json b/api/src/test/mock-data/request/xxx-sentence-categories.json deleted file mode 100644 index f1c6b4d333..0000000000 --- a/api/src/test/mock-data/request/xxx-sentence-categories.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "content": "Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. \"Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер\", - сообщил он.", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-sentence-entities.json b/api/src/test/mock-data/request/xxx-sentence-entities.json deleted file mode 100644 index f1c6b4d333..0000000000 --- a/api/src/test/mock-data/request/xxx-sentence-entities.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "content": "Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. \"Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер\", - сообщил он.", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-sentence-entities_linked.json b/api/src/test/mock-data/request/xxx-sentence-entities_linked.json deleted file mode 100644 index f1c6b4d333..0000000000 --- a/api/src/test/mock-data/request/xxx-sentence-entities_linked.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "content": "Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. \"Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер\", - сообщил он.", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-sentence-language.json b/api/src/test/mock-data/request/xxx-sentence-language.json deleted file mode 100644 index f1c6b4d333..0000000000 --- a/api/src/test/mock-data/request/xxx-sentence-language.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "content": "Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. \"Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер\", - сообщил он.", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-sentence-morphology_complete.json b/api/src/test/mock-data/request/xxx-sentence-morphology_complete.json deleted file mode 100644 index f1c6b4d333..0000000000 --- a/api/src/test/mock-data/request/xxx-sentence-morphology_complete.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "content": "Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. \"Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер\", - сообщил он.", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/xxx-sentence-sentiment.json b/api/src/test/mock-data/request/xxx-sentence-sentiment.json deleted file mode 100644 index f1c6b4d333..0000000000 --- a/api/src/test/mock-data/request/xxx-sentence-sentiment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "content": "Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. \"Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер\", - сообщил он.", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-doc-categories.json b/api/src/test/mock-data/request/zho-doc-categories.json index 0682505671..d35df9ea0c 100644 --- a/api/src/test/mock-data/request/zho-doc-categories.json +++ b/api/src/test/mock-data/request/zho-doc-categories.json @@ -1,5 +1,5 @@ { - "content": "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。\n\n联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。\n\n她说,海底地震后,国际社会立即做出反应,对海地人民和政府予以声援和支持。已交付的人道主义援助物资满足了海地人民的一些迫切需求,但还有许多工作要做。\n\n\n\nhttp://news.xinhuanet.com/world/2010-01/23/content_12860329.htm\n2010.01.24", - "language": "zho", - "unit": "doc" -} \ No newline at end of file + + "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", + "language": "zho" +} diff --git a/api/src/test/mock-data/request/zho-doc-entities.json b/api/src/test/mock-data/request/zho-doc-entities.json index 0682505671..d35df9ea0c 100644 --- a/api/src/test/mock-data/request/zho-doc-entities.json +++ b/api/src/test/mock-data/request/zho-doc-entities.json @@ -1,5 +1,5 @@ { - "content": "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。\n\n联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。\n\n她说,海底地震后,国际社会立即做出反应,对海地人民和政府予以声援和支持。已交付的人道主义援助物资满足了海地人民的一些迫切需求,但还有许多工作要做。\n\n\n\nhttp://news.xinhuanet.com/world/2010-01/23/content_12860329.htm\n2010.01.24", - "language": "zho", - "unit": "doc" -} \ No newline at end of file + + "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", + "language": "zho" +} diff --git a/api/src/test/mock-data/request/zho-doc-entities_linked.json b/api/src/test/mock-data/request/zho-doc-entities_linked.json index 0682505671..d35df9ea0c 100644 --- a/api/src/test/mock-data/request/zho-doc-entities_linked.json +++ b/api/src/test/mock-data/request/zho-doc-entities_linked.json @@ -1,5 +1,5 @@ { - "content": "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。\n\n联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。\n\n她说,海底地震后,国际社会立即做出反应,对海地人民和政府予以声援和支持。已交付的人道主义援助物资满足了海地人民的一些迫切需求,但还有许多工作要做。\n\n\n\nhttp://news.xinhuanet.com/world/2010-01/23/content_12860329.htm\n2010.01.24", - "language": "zho", - "unit": "doc" -} \ No newline at end of file + + "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", + "language": "zho" +} diff --git a/api/src/test/mock-data/request/zho-doc-language.json b/api/src/test/mock-data/request/zho-doc-language.json index 0682505671..d35df9ea0c 100644 --- a/api/src/test/mock-data/request/zho-doc-language.json +++ b/api/src/test/mock-data/request/zho-doc-language.json @@ -1,5 +1,5 @@ { - "content": "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。\n\n联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。\n\n她说,海底地震后,国际社会立即做出反应,对海地人民和政府予以声援和支持。已交付的人道主义援助物资满足了海地人民的一些迫切需求,但还有许多工作要做。\n\n\n\nhttp://news.xinhuanet.com/world/2010-01/23/content_12860329.htm\n2010.01.24", - "language": "zho", - "unit": "doc" -} \ No newline at end of file + + "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", + "language": "zho" +} diff --git a/api/src/test/mock-data/request/zho-doc-morphology_complete.json b/api/src/test/mock-data/request/zho-doc-morphology_complete.json index 0682505671..d35df9ea0c 100644 --- a/api/src/test/mock-data/request/zho-doc-morphology_complete.json +++ b/api/src/test/mock-data/request/zho-doc-morphology_complete.json @@ -1,5 +1,5 @@ { - "content": "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。\n\n联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。\n\n她说,海底地震后,国际社会立即做出反应,对海地人民和政府予以声援和支持。已交付的人道主义援助物资满足了海地人民的一些迫切需求,但还有许多工作要做。\n\n\n\nhttp://news.xinhuanet.com/world/2010-01/23/content_12860329.htm\n2010.01.24", - "language": "zho", - "unit": "doc" -} \ No newline at end of file + + "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", + "language": "zho" +} diff --git a/api/src/test/mock-data/request/zho-doc-sentiment.json b/api/src/test/mock-data/request/zho-doc-sentiment.json index 0682505671..d35df9ea0c 100644 --- a/api/src/test/mock-data/request/zho-doc-sentiment.json +++ b/api/src/test/mock-data/request/zho-doc-sentiment.json @@ -1,5 +1,5 @@ { - "content": "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。\n\n联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。\n\n她说,海底地震后,国际社会立即做出反应,对海地人民和政府予以声援和支持。已交付的人道主义援助物资满足了海地人民的一些迫切需求,但还有许多工作要做。\n\n\n\nhttp://news.xinhuanet.com/world/2010-01/23/content_12860329.htm\n2010.01.24", - "language": "zho", - "unit": "doc" -} \ No newline at end of file + + "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", + "language": "zho" +} diff --git a/api/src/test/mock-data/request/zho-sentence-categories.json b/api/src/test/mock-data/request/zho-sentence-categories.json deleted file mode 100644 index d902d32a26..0000000000 --- a/api/src/test/mock-data/request/zho-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", - "language": "zho", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-sentence-entities.json b/api/src/test/mock-data/request/zho-sentence-entities.json deleted file mode 100644 index d902d32a26..0000000000 --- a/api/src/test/mock-data/request/zho-sentence-entities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", - "language": "zho", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-sentence-entities_linked.json b/api/src/test/mock-data/request/zho-sentence-entities_linked.json deleted file mode 100644 index d902d32a26..0000000000 --- a/api/src/test/mock-data/request/zho-sentence-entities_linked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", - "language": "zho", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-sentence-language.json b/api/src/test/mock-data/request/zho-sentence-language.json deleted file mode 100644 index d902d32a26..0000000000 --- a/api/src/test/mock-data/request/zho-sentence-language.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", - "language": "zho", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-sentence-morphology_complete.json b/api/src/test/mock-data/request/zho-sentence-morphology_complete.json deleted file mode 100644 index d902d32a26..0000000000 --- a/api/src/test/mock-data/request/zho-sentence-morphology_complete.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", - "language": "zho", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-sentence-sentiment.json b/api/src/test/mock-data/request/zho-sentence-sentiment.json deleted file mode 100644 index d902d32a26..0000000000 --- a/api/src/test/mock-data/request/zho-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "content": "5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。", - "language": "zho", - "unit": "sentence" -} \ No newline at end of file diff --git a/api/src/test/mock-data/request/zho-url-categories.json b/api/src/test/mock-data/request/zho-url-categories.json index 219280fa6e..7b6b9693f4 100644 --- a/api/src/test/mock-data/request/zho-url-categories.json +++ b/api/src/test/mock-data/request/zho-url-categories.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNH5oqwj5vM9tKXcryaZYQt4j52GYA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779210797701&ei=awNNVbCiGc_p3AGt7oCoDg&url=http://news.ifeng.com/a/20150508/43720010_0.shtml" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNHcGbgDBdE7LLNErTT8lBQX9VzAXg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779592180762&ei=7YnMVuj6LZPD3gGB9bnQCA&url=http://news.ifeng.com/a/20160223/47554835_0.shtml" +} diff --git a/api/src/test/mock-data/request/zho-url-entities.json b/api/src/test/mock-data/request/zho-url-entities.json index 219280fa6e..7b6b9693f4 100644 --- a/api/src/test/mock-data/request/zho-url-entities.json +++ b/api/src/test/mock-data/request/zho-url-entities.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNH5oqwj5vM9tKXcryaZYQt4j52GYA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779210797701&ei=awNNVbCiGc_p3AGt7oCoDg&url=http://news.ifeng.com/a/20150508/43720010_0.shtml" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNHcGbgDBdE7LLNErTT8lBQX9VzAXg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779592180762&ei=7YnMVuj6LZPD3gGB9bnQCA&url=http://news.ifeng.com/a/20160223/47554835_0.shtml" +} diff --git a/api/src/test/mock-data/request/zho-url-entities_linked.json b/api/src/test/mock-data/request/zho-url-entities_linked.json index 219280fa6e..7b6b9693f4 100644 --- a/api/src/test/mock-data/request/zho-url-entities_linked.json +++ b/api/src/test/mock-data/request/zho-url-entities_linked.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNH5oqwj5vM9tKXcryaZYQt4j52GYA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779210797701&ei=awNNVbCiGc_p3AGt7oCoDg&url=http://news.ifeng.com/a/20150508/43720010_0.shtml" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNHcGbgDBdE7LLNErTT8lBQX9VzAXg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779592180762&ei=7YnMVuj6LZPD3gGB9bnQCA&url=http://news.ifeng.com/a/20160223/47554835_0.shtml" +} diff --git a/api/src/test/mock-data/request/zho-url-language.json b/api/src/test/mock-data/request/zho-url-language.json index 219280fa6e..7b6b9693f4 100644 --- a/api/src/test/mock-data/request/zho-url-language.json +++ b/api/src/test/mock-data/request/zho-url-language.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNH5oqwj5vM9tKXcryaZYQt4j52GYA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779210797701&ei=awNNVbCiGc_p3AGt7oCoDg&url=http://news.ifeng.com/a/20150508/43720010_0.shtml" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNHcGbgDBdE7LLNErTT8lBQX9VzAXg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779592180762&ei=7YnMVuj6LZPD3gGB9bnQCA&url=http://news.ifeng.com/a/20160223/47554835_0.shtml" +} diff --git a/api/src/test/mock-data/request/zho-url-morphology_complete.json b/api/src/test/mock-data/request/zho-url-morphology_complete.json index 219280fa6e..7b6b9693f4 100644 --- a/api/src/test/mock-data/request/zho-url-morphology_complete.json +++ b/api/src/test/mock-data/request/zho-url-morphology_complete.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNH5oqwj5vM9tKXcryaZYQt4j52GYA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779210797701&ei=awNNVbCiGc_p3AGt7oCoDg&url=http://news.ifeng.com/a/20150508/43720010_0.shtml" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNHcGbgDBdE7LLNErTT8lBQX9VzAXg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779592180762&ei=7YnMVuj6LZPD3gGB9bnQCA&url=http://news.ifeng.com/a/20160223/47554835_0.shtml" +} diff --git a/api/src/test/mock-data/request/zho-url-sentiment.json b/api/src/test/mock-data/request/zho-url-sentiment.json index 219280fa6e..7b6b9693f4 100644 --- a/api/src/test/mock-data/request/zho-url-sentiment.json +++ b/api/src/test/mock-data/request/zho-url-sentiment.json @@ -1,3 +1,4 @@ { - "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNH5oqwj5vM9tKXcryaZYQt4j52GYA&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779210797701&ei=awNNVbCiGc_p3AGt7oCoDg&url=http://news.ifeng.com/a/20150508/43720010_0.shtml" -} \ No newline at end of file + + "contentUri": "http://news.google.com/news/url?sa=t&fd=R&ct2=cn&usg=AFQjCNHcGbgDBdE7LLNErTT8lBQX9VzAXg&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52779592180762&ei=7YnMVuj6LZPD3gGB9bnQCA&url=http://news.ifeng.com/a/20160223/47554835_0.shtml" +} diff --git a/api/src/test/mock-data/response/ara-doc-categories.json b/api/src/test/mock-data/response/ara-doc-categories.json index ddd5da01fa..ebe43cb0ea 100644 --- a/api/src/test/mock-data/response/ara-doc-categories.json +++ b/api/src/test/mock-data/response/ara-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Arabic is not supported by Rosette Categorizer", - "requestId": "de587a1c-a23a-4d4a-a52e-1fa96fe13f33" + "message": "ARABIC is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-doc-entities.json b/api/src/test/mock-data/response/ara-doc-entities.json index bfac52a463..1bad9f7867 100644 --- a/api/src/test/mock-data/response/ara-doc-entities.json +++ b/api/src/test/mock-data/response/ara-doc-entities.json @@ -1,210 +1,60 @@ { "entities": [ { - "confidence": 0.020943284034729004, - "count": 4, - "indocChainId": 6, - "mention": "أفغانستان", - "normalized": "أفغانستان", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 3, - "indocChainId": 15, - "mention": "الأفغانية", - "normalized": "الأفغانية", - "type": "NATIONALITY" - }, - { - "confidence": 0.013337045907974243, - "count": 2, - "indocChainId": 2, - "mention": "ناتو", - "normalized": "ناتو", - "type": "ORGANIZATION" - }, - { - "confidence": 0.021363019943237305, - "count": 2, - "indocChainId": 3, - "mention": "لأفغانستان", - "normalized": "لأفغانستان", - "type": "LOCATION" - }, - { - "confidence": 0.03828367590904236, - "count": 2, - "indocChainId": 8, - "mention": "السفير", - "normalized": "السفير", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 9, - "mention": "البريطاني", - "normalized": "البريطاني", - "type": "NATIONALITY" - }, - { - "confidence": 0.03427225351333618, - "count": 2, - "indocChainId": 10, - "mention": "كابل", - "normalized": "كابل", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 14, - "mention": "الولايات المتحدة", - "normalized": "الولايات المتحدة", - "type": "LOCATION" - }, - { - "confidence": 0.009779423475265503, - "count": 2, - "indocChainId": 22, - "mention": "حلف الأطلسي", - "normalized": "حلف الأطلسي", - "type": "ORGANIZATION" - }, - { - "confidence": 0.01446753740310669, - "count": 1, + "count": 2, "indocChainId": 0, - "mention": "مكة المكرمة", - "normalized": "مكة المكرمة", + "mention": "دبي", + "normalized": "دبي", "type": "LOCATION" }, { - "confidence": 0.01943296194076538, - "count": 1, + "count": 1, "indocChainId": 1, - "mention": "غرينتش", - "normalized": "غرينتش", - "type": "LOCATION" - }, - { - "confidence": 0.012137770652770996, - "count": 1, - "indocChainId": 4, - "mention": "حلف شمال الأطلسي", - "normalized": "حلف شمال الأطلسي", - "type": "ORGANIZATION" - }, - { - "confidence": 0.0020059943199157715, - "count": 1, - "indocChainId": 7, - "mention": "وول ستريت", - "normalized": "وول ستريت", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03418374061584473, - "count": 1, - "indocChainId": 12, - "mention": "لندن", - "normalized": "لندن", - "type": "LOCATION" + "mention": "أميركي", + "normalized": "أميركي", + "type": "NATIONALITY" }, { - "confidence": 0.00932997465133667, - "count": 1, - "indocChainId": 17, - "mention": "الأمين العام", - "normalized": "الأمين العام", + "count": 1, + "indocChainId": 2, + "mention": "الشيخ", + "normalized": "الشيخ", "type": "TITLE" }, { - "confidence": 0.01955312490463257, - "count": 1, - "indocChainId": 18, - "mention": "للأمم المتحدة", - "normalized": "لأمم المتحدة", - "type": "ORGANIZATION" - }, - { - "confidence": 0.008319079875946045, - "count": 1, - "indocChainId": 19, - "mention": "بان كي مون", - "normalized": "بان كي مون", + "count": 1, + "indocChainId": 3, + "mention": "محمد بن راشد آل مكتوم", + "normalized": "محمد بن راشد آل مكتوم", "type": "PERSON" }, { - "confidence": 0.02144944667816162, - "count": 1, - "indocChainId": 21, - "mention": "إيساف", - "normalized": "إيساف", + "count": 1, + "indocChainId": 5, + "mention": "Samsung C", + "normalized": "Samsung C", "type": "ORGANIZATION" }, { - "confidence": 0.006335079669952393, - "count": 1, - "indocChainId": 23, - "mention": "الولايات", - "normalized": "الولايات", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 25, - "mention": "للأميركي", - "normalized": "لأميركي", - "type": "NATIONALITY" - }, - { - "confidence": 0.0270041823387146, - "count": 1, - "indocChainId": 26, - "mention": "ستانلي ماكريستال", - "normalized": "ستانلي ماكريستال", + "count": 1, + "indocChainId": 6, + "mention": "روبرت بوث", + "normalized": "روبرت بوث", "type": "PERSON" }, { - "confidence": 0.03057950735092163, - "count": 1, - "indocChainId": 27, - "mention": "قائد", - "normalized": "قائد", + "count": 1, + "indocChainId": 7, + "mention": "المدير التنفيذي", + "normalized": "المدير التنفيذي", "type": "TITLE" }, { - "confidence": 1.0, - "count": 1, - "indocChainId": 28, - "mention": "الأميركية", - "normalized": "الأميركية", + "count": 1, + "indocChainId": 8, + "mention": "الإماراتية", + "normalized": "الإماراتية", "type": "NATIONALITY" - }, - { - "confidence": 0.015597224235534668, - "count": 1, - "indocChainId": 32, - "mention": "لحركة طالبان", - "normalized": "حركة طالبان", - "type": "ORGANIZATION" - }, - { - "confidence": 0.05023258924484253, - "count": 1, - "indocChainId": 35, - "mention": "مارك سيدويل", - "normalized": "مارك سيدويل", - "type": "PERSON" } - ], - "requestId": "f1c7d4d6-a219-42b2-9b30-b636a80d3746", - "timers": { - "rblJe": 84, - "rexJe": 59, - "rliJe": 3 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/ara-doc-entities_linked.json b/api/src/test/mock-data/response/ara-doc-entities_linked.json index b019de66bd..6f3866c6d4 100644 --- a/api/src/test/mock-data/response/ara-doc-entities_linked.json +++ b/api/src/test/mock-data/response/ara-doc-entities_linked.json @@ -1,119 +1,16 @@ { "entities": [ { - "confidence": 0.39940380363670086, - "entityId": "NEW-CLUSTER", + "confidence": 0.7226944884175504, + "entityId": "Q613", "indocChainId": 0, - "mention": "مكة المكرمة" + "mention": "دبي" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 1, - "mention": "غرينتش" - }, - { - "confidence": 0.29350423961888833, - "entityId": "NEW-CLUSTER", - "indocChainId": 2, - "mention": "ناتو" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.9021738411146646, + "entityId": "Q57655", "indocChainId": 3, - "mention": "لأفغانستان" - }, - { - "confidence": 0.35041779388669325, - "entityId": "NEW-CLUSTER", - "indocChainId": 4, - "mention": "حلف شمال الأطلسي" - }, - { - "confidence": 0.10983116823066236, - "entityId": "Q889", - "indocChainId": 6, - "mention": "أفغانستان" - }, - { - "confidence": 0.030689190138138037, - "entityId": "NEW-CLUSTER", - "indocChainId": 7, - "mention": "وول ستريت" - }, - { - "confidence": 0.03803483756221173, - "entityId": "NEW-CLUSTER", - "indocChainId": 10, - "mention": "كابل" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 12, - "mention": "لندن" - }, - { - "confidence": 0.040624368693206604, - "entityId": "NEW-CLUSTER", - "indocChainId": 14, - "mention": "الولايات المتحدة" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 18, - "mention": "لأمم المتحدة" - }, - { - "confidence": 0.08879232079319452, - "entityId": "NEW-CLUSTER", - "indocChainId": 19, - "mention": "بان كي مون" - }, - { - "confidence": 0.10803231598208785, - "entityId": "NEW-CLUSTER", - "indocChainId": 21, - "mention": "إيساف" - }, - { - "confidence": 0.4570567600989213, - "entityId": "NEW-CLUSTER", - "indocChainId": 22, - "mention": "حلف الأطلسي" - }, - { - "confidence": 0.690947400428972, - "entityId": "NEW-CLUSTER", - "indocChainId": 23, - "mention": "الولايات" - }, - { - "confidence": 0.08819493903532481, - "entityId": "NEW-CLUSTER", - "indocChainId": 26, - "mention": "ستانلي ماكريستال" - }, - { - "confidence": 0.3024394928526506, - "entityId": "NEW-CLUSTER", - "indocChainId": 32, - "mention": "حركة طالبان" - }, - { - "confidence": 0.11780238382065118, - "entityId": "NEW-CLUSTER", - "indocChainId": 35, - "mention": "مارك سيدويل" + "mention": "محمد بن راشد آل مكتوم" } - ], - "requestId": "25ccf022-1278-483b-9c99-5dd6af4b692d", - "timers": { - "rblJe": 65, - "res": 1485, - "rexJe": 18, - "rliJe": 3 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-doc-language.json b/api/src/test/mock-data/response/ara-doc-language.json index 7921465ab8..328535ce51 100644 --- a/api/src/test/mock-data/response/ara-doc-language.json +++ b/api/src/test/mock-data/response/ara-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.09657184540132002, + "confidence": 1.0, "language": "ara" - }, - { - "confidence": 0.03240820376340581, - "language": "fas" - }, - { - "confidence": 0.028112492087846386, - "language": "urd" - }, - { - "confidence": 0.018090782073154954, - "language": "kur" - }, - { - "confidence": 0.016795236230892185, - "language": "pus" } - ], - "requestId": "e8fdda60-83a2-4366-beeb-c1d10bb24027", - "timers": { - "rliJe": 4 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-doc-morphology_complete.json b/api/src/test/mock-data/response/ara-doc-morphology_complete.json index 1d05eb2c68..cdefa3fd31 100644 --- a/api/src/test/mock-data/response/ara-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/ara-doc-morphology_complete.json @@ -1,2069 +1,862 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "خَمِيس", - "text": "الخميس" - }, - { - "lemma": "5", - "text": "5" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "1431", - "text": "1431" - }, - { - "lemma": "ه", - "text": "هـ" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "مُوافِق", - "text": "الموافق" - }, - { - "lemma": "21", - "text": "21" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "1", - "text": "1" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "م", - "text": "م" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "آخِر", - "text": "آخر" - }, - { - "lemma": "تَحْدِيث", - "text": "تحديث" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "ساعَة", - "text": "الساعة" - }, - { - "lemma": "10:01", - "text": "10:01" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "مَكَّة", - "text": "مكة" - }, - { - "lemma": "مُكَرَّم", - "text": "المكرمة" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "7:01", - "text": "7:01" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "جرِينِتْش", - "text": "غرينتش" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "ناتُو", - "text": "ناتو" - }, - { - "lemma": "فَكَّر", - "text": "يفكر" - }, - { - "lemma": "مَسْؤُول", - "text": "بمسؤول" - }, - { - "lemma": "مَدَنِيّ", - "text": "مدني" - }, - { - "lemma": "لأفغانستان", - "text": "لأفغانستان" - }, - { - "lemma": "خَطَّط", - "text": "يخطط" - }, - { - "lemma": "حَلْف", - "text": "حلف" - }, - { - "lemma": "شَمال", - "text": "شمال" - }, - { - "lemma": "أَطْلَسِيّ", - "text": "الأطلسي" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "ناتُو", - "text": "ناتو" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "تَعْيِين", - "text": "لتعيين" - }, - { - "lemma": "مَسْؤُول", - "text": "مسؤول" - }, - { - "lemma": "مَدَنِيّ", - "text": "مدني" - }, - { - "lemma": "كَبِير", - "text": "كبير" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "أَفْغانِسْتان", - "text": "أفغانستان" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "وَسْطَ", - "text": "وسط" - }, - { - "lemma": "دَعْوَة", - "text": "دعوات" - }, - { - "lemma": "تَحْسِين", - "text": "لتحسين" - }, - { - "lemma": "تَنْسِيق", - "text": "التنسيق" - }, - { - "lemma": "سِياسِيّ", - "text": "السياسي" - }, - { - "lemma": "تَنْمَوِيّ", - "text": "والتنموي" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "بَلَد", - "text": "البلاد" - }, - { - "lemma": "وِفْقَ", - "text": "وفق" - }, - { - "lemma": "ما", - "text": "ما" - }, - { - "lemma": "نَقَل", - "text": "نقلته" - }, - { - "lemma": "صَحِيفَة", - "text": "صحيفة" - }, - { - "lemma": "وُول", - "text": "وول" - }, - { - "lemma": "سترِيت", - "text": "ستريت" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "قال", - "text": "وقالت" - }, - { - "lemma": "صَحِيفَة", - "text": "الصحيفة" - }, - { - "lemma": "إِن", - "text": "إن" - }, - { - "lemma": "سَفِير", - "text": "السفير" - }, - { - "lemma": "برِيطانِيّ", - "text": "البريطاني" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "كابِل", - "text": "كابل" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مُقَدِّم", - "text": "مقدمة" - }, - { - "lemma": "مُرَشَّح", - "text": "المرشحين" - }, - { - "lemma": "هٰذا", - "text": "لهذا" - }, - { - "lemma": "مَنْصِب", - "text": "المنصب" - }, - { - "lemma": "الَّذِي", - "text": "والذي" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "مُحْتَمَل", - "text": "المحتمل" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "أَعْلَن", - "text": "يعلن" - }, - { - "lemma": "تَزامُن", - "text": "بالتزامن" - }, - { - "lemma": "مَعَ", - "text": "مع" - }, - { - "lemma": "مُؤْتَمَر", - "text": "مؤتمر" - }, - { - "lemma": "دَوْلِيّ", - "text": "دولي" - }, - { - "lemma": "عَن", - "text": "عن" - }, - { - "lemma": "مُسْتَقْبِل", - "text": "مستقبل" - }, - { - "lemma": "أَفْغانِسْتان", - "text": "أفغانستان" - }, - { - "lemma": "مُقَرَّر", - "text": "المقرر" - }, - { - "lemma": "عَقَد", - "text": "عقده" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "لَنْدَن", - "text": "لندن" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "28", - "text": "28" - }, - { - "lemma": "يَنايِر", - "text": "يناير" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "كانُون", - "text": "كانون" - }, - { - "lemma": "ثانِي", - "text": "الثاني" - }, - { - "lemma": "مُقْبِل", - "text": "المقبل" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَضاف", - "text": "وأضافت" - }, - { - "lemma": "صَحِيفَة", - "text": "الصحيفة" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "تَقْرِير", - "text": "تقرير" - }, - { - "lemma": "لِ", - "text": "لها" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "كابِل", - "text": "كابل" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "مَسْؤُول", - "text": "المسؤول" - }, - { - "lemma": "جَدِيد", - "text": "الجديد" - }, - { - "lemma": "تَرَأَّس", - "text": "سيترأس" - }, - { - "lemma": "دِعامَة", - "text": "دعامة" - }, - { - "lemma": "مَدَنِيّ", - "text": "مدنية" - }, - { - "lemma": "تَحالُف", - "text": "للتحالف" - }, - { - "lemma": "الَّذِي", - "text": "الذي" - }, - { - "lemma": "قاد", - "text": "تقوده" - }, - { - "lemma": "وِلايَة", - "text": "الولايات" - }, - { - "lemma": "مُتَّحِد", - "text": "المتحدة" - }, - { - "lemma": "إِدارَة", - "text": "لإدارة" - }, - { - "lemma": "تَمْوِيل", - "text": "التمويل" - }, - { - "lemma": "مُساعِد", - "text": "والمساعدات" - }, - { - "lemma": "وِلايَة", - "text": "للولايات" - }, - { - "lemma": "أَفْغانِيّ", - "text": "الأفغانية" - }, - { - "lemma": "تَحاشِي", - "text": "لتحاشي" - }, - { - "lemma": "مُؤَسَّسَة", - "text": "المؤسسات" - }, - { - "lemma": "أَفْغانِيّ", - "text": "الأفغانية" - }, - { - "lemma": "فاسِد", - "text": "الفاسدة" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "كان", - "text": "وكان" - }, - { - "lemma": "أَمِين", - "text": "الأمين" - }, - { - "lemma": "عامّ", - "text": "العام" - }, - { - "lemma": "أُمَّة", - "text": "للأمم" - }, - { - "lemma": "مُتَّحِد", - "text": "المتحدة" - }, - { - "lemma": "أَن", - "text": "بان" - }, - { - "lemma": "كَي", - "text": "كي" - }, - { - "lemma": "مَوَّن", - "text": "مون" - }, - { - "lemma": "دَعا", - "text": "دعا" - }, - { - "lemma": "هٰذا", - "text": "هذا" - }, - { - "lemma": "شَهْر", - "text": "الشهر" - }, - { - "lemma": "تَعْيِين", - "text": "لتعيين" - }, - { - "lemma": "مَسْؤُول", - "text": "مسؤول" - }, - { - "lemma": "مَدَنِيّ", - "text": "مدني" - }, - { - "lemma": "رَفِيع", - "text": "رفيع" - }, - { - "lemma": "ضِمْنَ", - "text": "ضمن" - }, - { - "lemma": "قُوَّة", - "text": "قوة" - }, - { - "lemma": "مُساعِد", - "text": "المساعدة" - }, - { - "lemma": "دَوْلِيّ", - "text": "الدولية" - }, - { - "lemma": "إِرْساء", - "text": "لإرساء" - }, - { - "lemma": "أَمَنّ", - "text": "الأمن" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "أَفْغانِسْتان", - "text": "أفغانستان" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "إِيساف", - "text": "إيساف" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "الَّذِي", - "text": "التي" - }, - { - "lemma": "قاد", - "text": "يقودها" - }, - { - "lemma": "حَلْف", - "text": "حلف" - }, - { - "lemma": "أَطْلَسِيّ", - "text": "الأطلسي" - }, - { - "lemma": "مُساعِد", - "text": "للمساعدة" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "تَنْسِيق", - "text": "تنسيق" - }, - { - "lemma": "جَهْد", - "text": "الجهود" - }, - { - "lemma": "سِياسِيّ", - "text": "السياسية" - }, - { - "lemma": "تَنْمَوِيّ", - "text": "والتنموية" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "حَرْب", - "text": "الحرب" - }, - { - "lemma": "الَّذِي", - "text": "التي" - }, - { - "lemma": "دَخَل", - "text": "دخلت" - }, - { - "lemma": "عام", - "text": "عامها" - }, - { - "lemma": "تاسِع", - "text": "التاسع" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَضاف", - "text": "وأضاف" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "تَعْيِين", - "text": "تعيين" - }, - { - "lemma": "هٰذا", - "text": "هذا" - }, - { - "lemma": "مَسْؤُول", - "text": "المسؤول" - }, - { - "lemma": "أَتاح", - "text": "سيتيح" - }, - { - "lemma": "تَحْسِين", - "text": "تحسين" - }, - { - "lemma": "تَنْسِيق", - "text": "التنسيق" - }, - { - "lemma": "بَيْنَ", - "text": "بين" - }, - { - "lemma": "عَمَل", - "text": "العمل" - }, - { - "lemma": "سِياسِيّ", - "text": "السياسي" - }, - { - "lemma": "تَنْمَوِيّ", - "text": "والتنموي" - }, - { - "lemma": "خُصُوص", - "text": "وخصوصا" - }, - { - "lemma": "عَبْرَ", - "text": "عبر" - }, - { - "lemma": "فَرْق", - "text": "فرق" - }, - { - "lemma": "إِعادَة", - "text": "إعادة" - }, - { - "lemma": "بِناء", - "text": "البناء" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "وِلايَة", - "text": "الولايات" - }, - { - "lemma": "أَفْغانِيّ", - "text": "الأفغانية" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "قال", - "text": "وقالت" - }, - { - "lemma": "جُورْنال", - "text": "جورنال" - }, - { - "lemma": "سترِيت", - "text": "ستريت" - }, - { - "lemma": "إِن", - "text": "إن" - }, - { - "lemma": "مَنْصِب", - "text": "المنصب" - }, - { - "lemma": "جَدِيد", - "text": "الجديد" - }, - { - "lemma": "كان", - "text": "سيكون" - }, - { - "lemma": "نَظِير", - "text": "نظيرا" - }, - { - "lemma": "أَمْرِيكِيّ", - "text": "للأميركي" - }, - { - "lemma": "ستانْلِي", - "text": "ستانلي" - }, - { - "lemma": "ماكرِيسْتال", - "text": "ماكريستال" - }, - { - "lemma": "قائِد", - "text": "قائد" - }, - { - "lemma": "قُوَّة", - "text": "القوات" - }, - { - "lemma": "أَمْرِيكِيّ", - "text": "الأميركية" - }, - { - "lemma": "قُوَّة", - "text": "وقوات" - }, - { - "lemma": "حَلْف", - "text": "حلف" - }, - { - "lemma": "أَطْلَسِيّ", - "text": "الأطلسي" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "أَفْغانِسْتان", - "text": "أفغانستان" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "تَوَقَّع", - "text": "ويتوقع" - }, - { - "lemma": "وُصُول", - "text": "وصول" - }, - { - "lemma": "أَرْبَعُون", - "text": "أربعين" - }, - { - "lemma": "أَلْف", - "text": "ألف" - }, - { - "lemma": "جُنْدِيّ", - "text": "جندي" - }, - { - "lemma": "آخِر", - "text": "آخرين" - }, - { - "lemma": "أَفْغانِسْتان", - "text": "لأفغانستان" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "شَهْر", - "text": "الأشهر" - }, - { - "lemma": "قَلِيل", - "text": "القليلة" - }, - { - "lemma": "مُقْبِل", - "text": "المقبلة" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "إِطار", - "text": "إطار" - }, - { - "lemma": "إِسْتراتِيجِيّ", - "text": "إستراتيجية" - }, - { - "lemma": "مُجابَهَة", - "text": "لمجابهة" - }, - { - "lemma": "عَمَلِيَّة", - "text": "العمليات" - }, - { - "lemma": "مُسَلَّح", - "text": "المسلحة" - }, - { - "lemma": "حَرَكَة", - "text": "لحركة" - }, - { - "lemma": "طالِبان", - "text": "طالبان" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَشار", - "text": "وأشارت" - }, - { - "lemma": "صَحِيفَة", - "text": "الصحيفة" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "خُطَّة", - "text": "خطة" - }, - { - "lemma": "تَعْيِين", - "text": "تعيين" - }, - { - "lemma": "سَفِير", - "text": "السفير" - }, - { - "lemma": "برِيطانِيّ", - "text": "البريطاني" - }, - { - "lemma": "مارْك", - "text": "مارك" - }, - { - "lemma": "سيدويل", - "text": "سيدويل" - }, - { - "lemma": "جَدّ", - "text": "وجدت" - }, - { - "lemma": "تَأْيِيد", - "text": "تأييد" - }, - { - "lemma": "وِلايَة", - "text": "الولايات" - }, - { - "lemma": "مُتَّحِد", - "text": "المتحدة" - }, - { - "lemma": "مِن", - "text": "ومن" - }, - { - "lemma": "مُرَجِّح", - "text": "المرجح" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "صادَق", - "text": "يصادق" - }, - { - "lemma": "عَلَى", - "text": "عليها" - }, - { - "lemma": "باقِي", - "text": "باقي" - }, - { - "lemma": "حَلِيف", - "text": "الحلفاء" - }, - { - "lemma": ".", - "text": "." - } + "بَدَأ", + "عَمَل", + "فِي", + "يَنايِر", + "2004", + "الَّذِي", + "تَمّ", + "بِناء", + "فِي", + "وَسْطَ", + "دُبَيّ", + "بَلَغ", + "تَكْلِيف", + "إِجْمالِيّ", + "1.5", + "مِلْيار", + "دُولار", + "أَمْرِيكِيّ", + "[", + "5", + "]", + "؛", + "تَمّ", + "اِفْتِتاح", + "فِي", + "4", + "يَنايِر", + "2010", + "حُضُور", + "شَيْخ", + "مُحَمَّد", + "بِن", + "راشِد", + "آل", + "مَكْتُوم", + "حاكِم", + "دُبِّيّ", + ".", + "بَلُغ", + "طُول", + "بُرْج", + "828", + "مِتْر", + "كان", + "مَسّاح", + "إِجْمالِيّ", + "4000000", + "مِتْر", + "مُرَبَّع", + "ضَمّ", + "37", + "طابِق", + "فُنْدُق", + "ضَمّ", + "403", + "جُناح", + "فُنْدُقِيّ", + "،", + "ضَمّ", + "57", + "مِصْعَد", + "كَهْرَبائِيّ", + "كان", + "أَسْرَع", + "10م", + "/", + "ثانِي", + "،", + "وُصُول", + "إِلَى", + "500", + "م", + "اِحْتاج", + "إِلَى", + "55", + "ثانِي", + "اِمْتَلَك", + "شَرِكَة", + "إِعْمار", + "عَقارِيّ", + "عَدّ", + "واحِد", + "مِن", + "أَكْبَر", + "شَرِكَة", + "عَقارِيّ", + "فِي", + "العالم.و", + "قَد", + "تَوَلَّى", + "عَمَلِيَّة", + "بِناء", + "شَرِكَة", + "Samsung", + "C", + "&", + "T.", + "هٰذا", + "بُرْج", + "الَّذِي", + "اِرْتَفَع", + "سُرْعَة", + "طابِق", + "كُلّ", + "ثَلاث", + "يَوْم", + "(", + "تَقْرِيب", + ")", + "شَكَل", + "بِناء", + "رَئِيسِيّ", + "فِي", + "مَشْرُوع", + "عُمْرانِيّ", + "ضَخْم", + "قَيِّم", + "20", + "مِلْيار", + "دُولار", + "تَوَقَّع", + "أَن", + "أَغار", + "مَلْمَح", + "مُدِين", + ".", + "أَوْضَح", + "رُوبِرْت", + "بوث", + "مُدِير", + "تَنْفِيذِيّ", + "فِي", + "شَرِكَة", + "إِماراتِيّ", + "الَّذِي", + "نَفَذ", + "مَشْرُوع", + "أَنَّ", + "تَمّ", + "اِسْتِخْدام", + "مَبْنَى", + "غَرَض", + "مُتَعَدِّد", + "،", + "ضَمّ", + "مَبْنَى", + "مَحَلَّة", + "تِجارِيّ", + "مَكان", + "تَرْفِيه", + "فُنْدُق", + "وَحْدَة", + "سَكَنِيّ", + "جَناح", + "خاصّ", + "مُؤَسَّسَة", + "حَدِيقَة", + "بانُورامِيّ", + ".", + "تَمّ", + "اِفْتِتاح", + "فِي", + "4", + "يَنايِر", + "2010", + "مُكَوِّن", + "مِن", + "124", + "طابِق", + "." ], "posTags": [ - { - "pos": "NOUN", - "text": "الخميس" - }, - { - "pos": "NUM", - "text": "5" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "2" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "1431" - }, - { - "pos": "ABBREV", - "text": "هـ" - }, - { - "pos": "PUNC", - "text": "-" - }, - { - "pos": "ADJ", - "text": "الموافق" - }, - { - "pos": "NUM", - "text": "21" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "1" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "ABBREV", - "text": "م" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "ADJ", - "text": "آخر" - }, - { - "pos": "NOUN", - "text": "تحديث" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "NOUN", - "text": "الساعة" - }, - { - "pos": "NON_ARABIC", - "text": "10:01" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN_PROP", - "text": "مكة" - }, - { - "pos": "ADJ", - "text": "المكرمة" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "NON_ARABIC", - "text": "7:01" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN_PROP", - "text": "غرينتش" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "NOUN_PROP", - "text": "ناتو" - }, - { - "pos": "IV", - "text": "يفكر" - }, - { - "pos": "NOUN", - "text": "بمسؤول" - }, - { - "pos": "NOUN", - "text": "مدني" - }, - { - "pos": "NOUN_PROP", - "text": "لأفغانستان" - }, - { - "pos": "IV", - "text": "يخطط" - }, - { - "pos": "NOUN", - "text": "حلف" - }, - { - "pos": "NOUN", - "text": "شمال" - }, - { - "pos": "NOUN", - "text": "الأطلسي" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN_PROP", - "text": "ناتو" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "NOUN", - "text": "لتعيين" - }, - { - "pos": "NOUN", - "text": "مسؤول" - }, - { - "pos": "NOUN", - "text": "مدني" - }, - { - "pos": "ADJ", - "text": "كبير" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "أفغانستان" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "NOUN", - "text": "وسط" - }, - { - "pos": "NOUN", - "text": "دعوات" - }, - { - "pos": "NOUN", - "text": "لتحسين" - }, - { - "pos": "NOUN", - "text": "التنسيق" - }, - { - "pos": "ADJ", - "text": "السياسي" - }, - { - "pos": "ADJ", - "text": "والتنموي" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "البلاد" - }, - { - "pos": "PREP", - "text": "وفق" - }, - { - "pos": "REL_PRON", - "text": "ما" - }, - { - "pos": "PV", - "text": "نقلته" - }, - { - "pos": "NOUN", - "text": "صحيفة" - }, - { - "pos": "NOUN_PROP", - "text": "وول" - }, - { - "pos": "NOUN_PROP", - "text": "ستريت" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وقالت" - }, - { - "pos": "NOUN", - "text": "الصحيفة" - }, - { - "pos": "SUB_CONJ", - "text": "إن" - }, - { - "pos": "NOUN", - "text": "السفير" - }, - { - "pos": "ADJ", - "text": "البريطاني" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "كابل" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "مقدمة" - }, - { - "pos": "NOUN", - "text": "المرشحين" - }, - { - "pos": "DEM_PRON", - "text": "لهذا" - }, - { - "pos": "NOUN", - "text": "المنصب" - }, - { - "pos": "REL_PRON", - "text": "والذي" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "المحتمل" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "IV", - "text": "يعلن" - }, - { - "pos": "NOUN", - "text": "بالتزامن" - }, - { - "pos": "PREP", - "text": "مع" - }, - { - "pos": "NOUN", - "text": "مؤتمر" - }, - { - "pos": "ADJ", - "text": "دولي" - }, - { - "pos": "PREP", - "text": "عن" - }, - { - "pos": "NOUN", - "text": "مستقبل" - }, - { - "pos": "NOUN_PROP", - "text": "أفغانستان" - }, - { - "pos": "ADJ", - "text": "المقرر" - }, - { - "pos": "PV", - "text": "عقده" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "لندن" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NUM", - "text": "28" - }, - { - "pos": "NOUN_PROP", - "text": "يناير" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NOUN_PROP", - "text": "كانون" - }, - { - "pos": "ADJ", - "text": "الثاني" - }, - { - "pos": "ADJ", - "text": "المقبل" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وأضافت" - }, - { - "pos": "NOUN", - "text": "الصحيفة" - }, - { - "pos": "PUNC", - "text": "-" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "تقرير" - }, - { - "pos": "PRONOUN", - "text": "لها" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "كابل" - }, - { - "pos": "PUNC", - "text": "-" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "المسؤول" - }, - { - "pos": "ADJ", - "text": "الجديد" - }, - { - "pos": "IV", - "text": "سيترأس" - }, - { - "pos": "NOUN", - "text": "دعامة" - }, - { - "pos": "ADJ", - "text": "مدنية" - }, - { - "pos": "NOUN", - "text": "للتحالف" - }, - { - "pos": "REL_PRON", - "text": "الذي" - }, - { - "pos": "IV", - "text": "تقوده" - }, - { - "pos": "NOUN", - "text": "الولايات" - }, - { - "pos": "ADJ", - "text": "المتحدة" - }, - { - "pos": "NOUN", - "text": "لإدارة" - }, - { - "pos": "NOUN", - "text": "التمويل" - }, - { - "pos": "NOUN", - "text": "والمساعدات" - }, - { - "pos": "NOUN", - "text": "للولايات" - }, - { - "pos": "ADJ", - "text": "الأفغانية" - }, - { - "pos": "NOUN", - "text": "لتحاشي" - }, - { - "pos": "NOUN", - "text": "المؤسسات" - }, - { - "pos": "ADJ", - "text": "الأفغانية" - }, - { - "pos": "ADJ", - "text": "الفاسدة" - }, - { - "pos": "PUNC", - "text": "\"" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وكان" - }, - { - "pos": "NOUN", - "text": "الأمين" - }, - { - "pos": "ADJ", - "text": "العام" - }, - { - "pos": "NOUN", - "text": "للأمم" - }, - { - "pos": "ADJ", - "text": "المتحدة" - }, - { - "pos": "SUB_CONJ", - "text": "بان" - }, - { - "pos": "SUB_CONJ", - "text": "كي" - }, - { - "pos": "PV", - "text": "مون" - }, - { - "pos": "PV", - "text": "دعا" - }, - { - "pos": "DEM_PRON", - "text": "هذا" - }, - { - "pos": "NOUN", - "text": "الشهر" - }, - { - "pos": "NOUN", - "text": "لتعيين" - }, - { - "pos": "NOUN", - "text": "مسؤول" - }, - { - "pos": "ADJ", - "text": "مدني" - }, - { - "pos": "ADJ", - "text": "رفيع" - }, - { - "pos": "PREP", - "text": "ضمن" - }, - { - "pos": "NOUN", - "text": "قوة" - }, - { - "pos": "NOUN", - "text": "المساعدة" - }, - { - "pos": "ADJ", - "text": "الدولية" - }, - { - "pos": "NOUN", - "text": "لإرساء" - }, - { - "pos": "ADJ", - "text": "الأمن" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "أفغانستان" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN_PROP", - "text": "إيساف" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "REL_PRON", - "text": "التي" - }, - { - "pos": "IV", - "text": "يقودها" - }, - { - "pos": "NOUN", - "text": "حلف" - }, - { - "pos": "ADJ", - "text": "الأطلسي" - }, - { - "pos": "NOUN", - "text": "للمساعدة" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "تنسيق" - }, - { - "pos": "NOUN", - "text": "الجهود" - }, - { - "pos": "ADJ", - "text": "السياسية" - }, - { - "pos": "ADJ", - "text": "والتنموية" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "الحرب" - }, - { - "pos": "REL_PRON", - "text": "التي" - }, - { - "pos": "PV", - "text": "دخلت" - }, - { - "pos": "NOUN", - "text": "عامها" - }, - { - "pos": "ADJ", - "text": "التاسع" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وأضاف" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "تعيين" - }, - { - "pos": "DEM_PRON", - "text": "هذا" - }, - { - "pos": "NOUN", - "text": "المسؤول" - }, - { - "pos": "IV", - "text": "سيتيح" - }, - { - "pos": "NOUN", - "text": "تحسين" - }, - { - "pos": "NOUN", - "text": "التنسيق" - }, - { - "pos": "PREP", - "text": "بين" - }, - { - "pos": "NOUN", - "text": "العمل" - }, - { - "pos": "ADJ", - "text": "السياسي" - }, - { - "pos": "ADJ", - "text": "والتنموي" - }, - { - "pos": "NOUN", - "text": "وخصوصا" - }, - { - "pos": "PREP", - "text": "عبر" - }, - { - "pos": "NOUN", - "text": "فرق" - }, - { - "pos": "NOUN", - "text": "إعادة" - }, - { - "pos": "NOUN", - "text": "البناء" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "الولايات" - }, - { - "pos": "ADJ", - "text": "الأفغانية" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وقالت" - }, - { - "pos": "NOUN_PROP", - "text": "جورنال" - }, - { - "pos": "NOUN_PROP", - "text": "ستريت" - }, - { - "pos": "SUB_CONJ", - "text": "إن" - }, - { - "pos": "NOUN", - "text": "المنصب" - }, - { - "pos": "ADJ", - "text": "الجديد" - }, - { - "pos": "IV", - "text": "سيكون" - }, - { - "pos": "NOUN", - "text": "نظيرا" - }, - { - "pos": "NOUN", - "text": "للأميركي" - }, - { - "pos": "NOUN_PROP", - "text": "ستانلي" - }, - { - "pos": "NOUN_PROP", - "text": "ماكريستال" - }, - { - "pos": "NOUN", - "text": "قائد" - }, - { - "pos": "NOUN", - "text": "القوات" - }, - { - "pos": "ADJ", - "text": "الأميركية" - }, - { - "pos": "NOUN", - "text": "وقوات" - }, - { - "pos": "NOUN", - "text": "حلف" - }, - { - "pos": "ADJ", - "text": "الأطلسي" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "أفغانستان" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "IV_PASS", - "text": "ويتوقع" - }, - { - "pos": "NOUN", - "text": "وصول" - }, - { - "pos": "NUM", - "text": "أربعين" - }, - { - "pos": "NUM", - "text": "ألف" - }, - { - "pos": "NOUN", - "text": "جندي" - }, - { - "pos": "ADJ", - "text": "آخرين" - }, - { - "pos": "NOUN_PROP", - "text": "لأفغانستان" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "الأشهر" - }, - { - "pos": "ADJ", - "text": "القليلة" - }, - { - "pos": "ADJ", - "text": "المقبلة" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "إطار" - }, - { - "pos": "ADJ", - "text": "إستراتيجية" - }, - { - "pos": "NOUN", - "text": "لمجابهة" - }, - { - "pos": "NOUN", - "text": "العمليات" - }, - { - "pos": "ADJ", - "text": "المسلحة" - }, - { - "pos": "NOUN", - "text": "لحركة" - }, - { - "pos": "NOUN_PROP", - "text": "طالبان" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وأشارت" - }, - { - "pos": "NOUN", - "text": "الصحيفة" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "خطة" - }, - { - "pos": "NOUN", - "text": "تعيين" - }, - { - "pos": "NOUN", - "text": "السفير" - }, - { - "pos": "ADJ", - "text": "البريطاني" - }, - { - "pos": "NOUN_PROP", - "text": "مارك" - }, - { - "pos": "NOUN_PROP", - "text": "سيدويل" - }, - { - "pos": "PV", - "text": "وجدت" - }, - { - "pos": "NOUN", - "text": "تأييد" - }, - { - "pos": "NOUN", - "text": "الولايات" - }, - { - "pos": "ADJ", - "text": "المتحدة" - }, - { - "pos": "PREP", - "text": "ومن" - }, - { - "pos": "NOUN", - "text": "المرجح" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "IV", - "text": "يصادق" - }, - { - "pos": "PRONOUN", - "text": "عليها" - }, - { - "pos": "NOUN", - "text": "باقي" - }, - { - "pos": "NOUN", - "text": "الحلفاء" - }, - { - "pos": "EOS", - "text": "." - } + "PV", + "NOUN", + "PREP", + "NOUN_PROP", + "NUM", + "REL_PRON", + "IV", + "NOUN", + "PREP", + "NOUN", + "NOUN_PROP", + "PV", + "NOUN", + "ADJ", + "NUM", + "NUM", + "NOUN", + "NOUN", + "PUNC", + "NUM", + "PUNC", + "PUNC", + "PV", + "NOUN", + "PREP", + "NUM", + "NOUN_PROP", + "NUM", + "NOUN", + "NOUN", + "NOUN_PROP", + "NOUN_PROP", + "NOUN_PROP", + "NOUN_PROP", + "ADJ", + "NOUN", + "ADJ", + "EOS", + "IV", + "NOUN", + "NOUN", + "NUM", + "NOUN", + "IV", + "NOUN", + "ADJ", + "NUM", + "NOUN", + "ADJ", + "IV", + "NUM", + "NOUN", + "NOUN", + "IV", + "NUM", + "NOUN", + "ADJ", + "PUNC", + "IV", + "NUM", + "NOUN", + "ADJ", + "IV", + "ADJ", + "NON_ARABIC", + "PUNC", + "ADJ", + "PUNC", + "NOUN", + "PREP", + "NUM", + "ABBREV", + "IV", + "PREP", + "NUM", + "ADJ", + "IV", + "NOUN", + "NOUN", + "ADJ", + "IV", + "ADJ", + "PREP", + "ADJ", + "NOUN", + "ADJ", + "PREP", + "NON_ARABIC", + "VERB_PART", + "PV", + "NOUN", + "NOUN", + "NOUN", + "NON_ARABIC", + "NON_ARABIC", + "PUNC", + "NON_ARABIC", + "DEM_PRON", + "NOUN", + "REL_PRON", + "IV", + "NOUN", + "NOUN", + "NOUN", + "NUM", + "NOUN", + "PUNC", + "NOUN", + "PUNC", + "PV", + "NOUN", + "ADJ", + "PREP", + "NOUN", + "ADJ", + "ADJ", + "NOUN", + "NUM", + "NUM", + "NOUN", + "IV_PASS", + "SUB_CONJ", + "IV", + "NOUN", + "NOUN", + "EOS", + "PV", + "NOUN_PROP", + "NOUN_PROP", + "NOUN", + "ADJ", + "PREP", + "NOUN", + "ADJ", + "REL_PRON", + "IV", + "NOUN", + "PRONOUN", + "IV", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "PUNC", + "IV", + "NOUN", + "NOUN", + "ADJ", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "NOUN", + "ADJ", + "NOUN", + "NOUN", + "ADJ", + "EOS", + "PV", + "NOUN", + "PREP", + "NUM", + "NOUN_PROP", + "NUM", + "NOUN", + "PREP", + "NUM", + "NOUN", + "EOS" ], - "requestId": "35ee0654-64f5-4450-96cd-a914b0a719b9", - "timers": { - "rblJe": 223, - "rliJe": 4 - } + "tokens": [ + "بدأ", + "العمل", + "في", + "يناير", + "2004", + "الذي", + "يتم", + "بناءه", + "في", + "وسط", + "دبي", + "وبلغت", + "تكلفته", + "الإجمالية", + "1.5", + "مليار", + "دولار", + "أميركي", + "[", + "5", + "]", + "؛", + "وتم", + "افتتاحه", + "في", + "4", + "يناير", + "2010", + "بحضور", + "الشيخ", + "محمد", + "بن", + "راشد", + "آل", + "مكتوم", + "حاكم", + "دبي", + ".", + "ويبلغ", + "طول", + "البرج", + "828", + "مترا", + "وستكون", + "المساحة", + "الإجمالية", + "4,000,000", + "متر", + "مربع", + "وسيضم", + "37", + "طابقا", + "كفندق", + "ليضم", + "403", + "جناح", + "فندقي", + "،", + "وسيضم", + "57", + "مصعد", + "كهربائي", + "وسيكون", + "أسرعهم", + "10م", + "/", + "ثانية", + "،", + "وللوصول", + "إلى", + "500", + "م", + "تحتاج", + "إلى", + "55", + "ثانية", + "وتمتلكه", + "شركة", + "إعمار", + "العقارية", + "وتعد", + "واحدة", + "من", + "أكبر", + "الشركات", + "العقارية", + "في", + "العالم.و", + "قد", + "تولت", + "عملية", + "البناء", + "شركة", + "Samsung", + "C", + "&", + "T.", + "وهذا", + "البرج", + "الذي", + "يرتفع", + "بسرعة", + "طابق", + "كل", + "ثلاث", + "أيام", + "(", + "تقريبا", + ")", + "شكل", + "البناء", + "الرئيسي", + "في", + "مشروع", + "عمراني", + "ضخم", + "بقيمة", + "20", + "مليار", + "دولار", + "يتوقع", + "أن", + "يغير", + "ملامح", + "المدينة", + ".", + "وأوضح", + "روبرت", + "بوث", + "المدير", + "التنفيذي", + "في", + "الشركة", + "الإماراتية", + "التي", + "تنفذ", + "المشروع", + "أنه", + "سيتم", + "استخدام", + "المبنى", + "لأغراض", + "متعددة", + "،", + "وسيضم", + "المبنى", + "محلات", + "تجارية", + "وأماكن", + "للترفيه", + "وفندقا", + "ووحدات", + "سكنية", + "وأجنحة", + "خاصة", + "للمؤسسات", + "وحديقة", + "بانورامية", + ".", + "وتم", + "افتتاحه", + "في", + "4", + "يناير", + "2010", + "والمكون", + "من", + "124", + "طابقا", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-doc-sentiment.json b/api/src/test/mock-data/response/ara-doc-sentiment.json index 909944b88f..6d96bbe886 100644 --- a/api/src/test/mock-data/response/ara-doc-sentiment.json +++ b/api/src/test/mock-data/response/ara-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Arabic is not supported by Rosette Sentiment Analyzer", - "requestId": "4ec010c9-c196-4062-a890-55e975d8ac8f" + "message": "Unsupported language: Arabic" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-categories.json b/api/src/test/mock-data/response/ara-sentence-categories.json deleted file mode 100644 index 7a916ceb84..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Arabic is not supported by Rosette Categorizer", - "requestId": "4586af26-3bd5-4bb4-9cee-3ad136985798" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-categories.status b/api/src/test/mock-data/response/ara-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-entities.json b/api/src/test/mock-data/response/ara-sentence-entities.json deleted file mode 100644 index 72db758fd2..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-entities.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.004119843244552612, - "count": 2, - "indocChainId": 0, - "mention": "دبي", - "normalized": "دبي", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 1, - "mention": "أميركي", - "normalized": "أميركي", - "type": "NATIONALITY" - }, - { - "confidence": 0.006177842617034912, - "count": 1, - "indocChainId": 2, - "mention": "الشيخ", - "normalized": "الشيخ", - "type": "TITLE" - }, - { - "confidence": 0.003537893295288086, - "count": 1, - "indocChainId": 3, - "mention": "محمد بن راشد آل مكتوم", - "normalized": "محمد بن راشد آل مكتوم", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 5, - "mention": "Samsung", - "normalized": "Samsung", - "type": "ORGANIZATION" - }, - { - "confidence": 0.009773313999176025, - "count": 1, - "indocChainId": 6, - "mention": "روبرت بوث", - "normalized": "روبرت بوث", - "type": "PERSON" - }, - { - "confidence": 0.006055951118469238, - "count": 1, - "indocChainId": 7, - "mention": "المدير التنفيذي", - "normalized": "المدير التنفيذي", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 8, - "mention": "الإماراتية", - "normalized": "الإماراتية", - "type": "NATIONALITY" - } - ], - "requestId": "4c66ed2d-a835-474a-9a27-3f4fca707756", - "timers": { - "rblJe": 39, - "rexJe": 10, - "rliJe": 3 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-entities_linked.json b/api/src/test/mock-data/response/ara-sentence-entities_linked.json deleted file mode 100644 index 54d6e49c20..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-entities_linked.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.13091593098927945, - "entityId": "NEW-CLUSTER", - "indocChainId": 0, - "mention": "دبي" - }, - { - "confidence": 0.045611566485458166, - "entityId": "Q57655", - "indocChainId": 3, - "mention": "محمد بن راشد آل مكتوم" - }, - { - "confidence": 0.4783586575981415, - "entityId": "Q20716", - "indocChainId": 5, - "mention": "Samsung" - }, - { - "confidence": 0.14019590499206971, - "entityId": "NEW-CLUSTER", - "indocChainId": 6, - "mention": "روبرت بوث" - } - ], - "requestId": "bb952f0c-cb75-4025-a082-2efacbae855e", - "timers": { - "rblJe": 27, - "res": 329, - "rexJe": 9, - "rliJe": 6 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-language.json b/api/src/test/mock-data/response/ara-sentence-language.json deleted file mode 100644 index d766fa06ae..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.09218922116434847, - "language": "ara" - }, - { - "confidence": 0.03582179959693543, - "language": "fas" - }, - { - "confidence": 0.02983419791161146, - "language": "urd" - }, - { - "confidence": 0.020947593192964797, - "language": "kur" - }, - { - "confidence": 0.017229542996230474, - "language": "pus" - } - ], - "requestId": "06094a3c-c665-47bc-b90a-29760b6a8b9b", - "timers": { - "rliJe": 6 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-morphology_complete.json b/api/src/test/mock-data/response/ara-sentence-morphology_complete.json deleted file mode 100644 index a0fbc67e03..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-morphology_complete.json +++ /dev/null @@ -1,1373 +0,0 @@ -{ - "compounds": [], - "hanReadings": [], - "lemmas": [ - { - "lemma": "بَدَأ", - "text": "بدأ" - }, - { - "lemma": "عَمَل", - "text": "العمل" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "يَنايِر", - "text": "يناير" - }, - { - "lemma": "2004", - "text": "2004" - }, - { - "lemma": "الَّذِي", - "text": "الذي" - }, - { - "lemma": "تَمّ", - "text": "يتم" - }, - { - "lemma": "بِناء", - "text": "بناءه" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "وَسْطَ", - "text": "وسط" - }, - { - "lemma": "دُبَيّ", - "text": "دبي" - }, - { - "lemma": "بَلَغ", - "text": "وبلغت" - }, - { - "lemma": "تَكْلِيف", - "text": "تكلفته" - }, - { - "lemma": "إِجْمالِيّ", - "text": "الإجمالية" - }, - { - "lemma": "1.5", - "text": "1.5" - }, - { - "lemma": "مِلْيار", - "text": "مليار" - }, - { - "lemma": "دُولار", - "text": "دولار" - }, - { - "lemma": "أَمْرِيكِيّ", - "text": "أميركي" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "5", - "text": "5" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "؛", - "text": "؛" - }, - { - "lemma": "تَمّ", - "text": "وتم" - }, - { - "lemma": "اِفْتِتاح", - "text": "افتتاحه" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "4", - "text": "4" - }, - { - "lemma": "يَنايِر", - "text": "يناير" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "بحضور", - "text": "بحضور" - }, - { - "lemma": "شَيْخ", - "text": "الشيخ" - }, - { - "lemma": "مُحَمَّد", - "text": "محمد" - }, - { - "lemma": "بِن", - "text": "بن" - }, - { - "lemma": "راشِد", - "text": "راشد" - }, - { - "lemma": "آل", - "text": "آل" - }, - { - "lemma": "مَكْتُوم", - "text": "مكتوم" - }, - { - "lemma": "حاكِم", - "text": "حاكم" - }, - { - "lemma": "دُبِّيّ", - "text": "دبي" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "بَلُغ", - "text": "ويبلغ" - }, - { - "lemma": "طُول", - "text": "طول" - }, - { - "lemma": "بُرْج", - "text": "البرج" - }, - { - "lemma": "828", - "text": "828" - }, - { - "lemma": "مِتْر", - "text": "مترا" - }, - { - "lemma": "كان", - "text": "وستكون" - }, - { - "lemma": "مَسّاح", - "text": "المساحة" - }, - { - "lemma": "إِجْمالِيّ", - "text": "الإجمالية" - }, - { - "lemma": "4000000", - "text": "4,000,000" - }, - { - "lemma": "مِتْر", - "text": "متر" - }, - { - "lemma": "مُرَبَّع", - "text": "مربع" - }, - { - "lemma": "ضَمّ", - "text": "وسيضم" - }, - { - "lemma": "37", - "text": "37" - }, - { - "lemma": "طابِق", - "text": "طابقاً" - }, - { - "lemma": "كفندق", - "text": "كفندق" - }, - { - "lemma": "ضَمّ", - "text": "ليضم" - }, - { - "lemma": "403", - "text": "403" - }, - { - "lemma": "جُناح", - "text": "جناح" - }, - { - "lemma": "فُنْدُقِيّ", - "text": "فندقي" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "ضَمّ", - "text": "وسيضم" - }, - { - "lemma": "57", - "text": "57" - }, - { - "lemma": "مِصْعَد", - "text": "مصعد" - }, - { - "lemma": "كَهْرَبائِيّ", - "text": "كهربائي" - }, - { - "lemma": "كان", - "text": "وسيكون" - }, - { - "lemma": "أَسْرَع", - "text": "أسرعهم" - }, - { - "lemma": "10م", - "text": "10م" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "ثانِي", - "text": "ثانية" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "وُصُول", - "text": "وللوصول" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "500", - "text": "500" - }, - { - "lemma": "م", - "text": "م" - }, - { - "lemma": "اِحْتاج", - "text": "تحتاج" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "55", - "text": "55" - }, - { - "lemma": "ثانِي", - "text": "ثانية" - }, - { - "lemma": "اِمْتَلَك", - "text": "وتمتلكه" - }, - { - "lemma": "شَرِكَة", - "text": "شركة" - }, - { - "lemma": "إِعْمار", - "text": "إعمار" - }, - { - "lemma": "عَقارِيّ", - "text": "العقارية" - }, - { - "lemma": "عَدّ", - "text": "وتعد" - }, - { - "lemma": "واحِد", - "text": "واحدة" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "أَكْبَر", - "text": "أكبر" - }, - { - "lemma": "شَرِكَة", - "text": "الشركات" - }, - { - "lemma": "عَقارِيّ", - "text": "العقارية" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "العالم.و", - "text": "العالم.و" - }, - { - "lemma": "قَد", - "text": "قد" - }, - { - "lemma": "تَوَلَّى", - "text": "تولت" - }, - { - "lemma": "عَمَلِيَّة", - "text": "عملية" - }, - { - "lemma": "بِناء", - "text": "البناء" - }, - { - "lemma": "شَرِكَة", - "text": "شركة" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "C", - "text": "C" - }, - { - "lemma": "&", - "text": "&" - }, - { - "lemma": "T.", - "text": "T." - }, - { - "lemma": "هٰذا", - "text": "وهذا" - }, - { - "lemma": "بُرْج", - "text": "البرج" - }, - { - "lemma": "الَّذِي", - "text": "الذي" - }, - { - "lemma": "اِرْتَفَع", - "text": "يرتفع" - }, - { - "lemma": "سُرْعَة", - "text": "بسرعة" - }, - { - "lemma": "طابِق", - "text": "طابق" - }, - { - "lemma": "كُلّ", - "text": "كل" - }, - { - "lemma": "ثَلاث", - "text": "ثلاث" - }, - { - "lemma": "يَوْم", - "text": "أيام" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "تَقْرِيب", - "text": "تقريبا" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "شَكَل", - "text": "شكل" - }, - { - "lemma": "بِناء", - "text": "البناء" - }, - { - "lemma": "رَئِيسِيّ", - "text": "الرئيسي" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مَشْرُوع", - "text": "مشروع" - }, - { - "lemma": "عُمْرانِيّ", - "text": "عمراني" - }, - { - "lemma": "ضَخْم", - "text": "ضخم" - }, - { - "lemma": "قِيمَة", - "text": "بقيمة" - }, - { - "lemma": "20", - "text": "20" - }, - { - "lemma": "مِلْيار", - "text": "مليار" - }, - { - "lemma": "دُولار", - "text": "دولار" - }, - { - "lemma": "تَوَقَّع", - "text": "يتوقع" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "أَغار", - "text": "يغير" - }, - { - "lemma": "مَلْمَح", - "text": "ملامح" - }, - { - "lemma": "مُدِين", - "text": "المدينة" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَوْضَح", - "text": "وأوضح" - }, - { - "lemma": "رُوبِرْت", - "text": "روبرت" - }, - { - "lemma": "بوث", - "text": "بوث" - }, - { - "lemma": "مُدِير", - "text": "المدير" - }, - { - "lemma": "تَنْفِيذِيّ", - "text": "التنفيذي" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "شَرِكَة", - "text": "الشركة" - }, - { - "lemma": "إِماراتِيّ", - "text": "الإماراتية" - }, - { - "lemma": "الَّذِي", - "text": "التي" - }, - { - "lemma": "نَفَذ", - "text": "تنفذ" - }, - { - "lemma": "مَشْرُوع", - "text": "المشروع" - }, - { - "lemma": "أَنَّ", - "text": "أنه" - }, - { - "lemma": "تَمّ", - "text": "سيتم" - }, - { - "lemma": "اِسْتِخْدام", - "text": "استخدام" - }, - { - "lemma": "مَبْنِيّ", - "text": "المبنى" - }, - { - "lemma": "غَرَض", - "text": "لأغراض" - }, - { - "lemma": "مُتَعَدِّد", - "text": "متعددة" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "ضَمّ", - "text": "وسيضم" - }, - { - "lemma": "مَبْنَى", - "text": "المبنى" - }, - { - "lemma": "مَحَلَّة", - "text": "محلات" - }, - { - "lemma": "تِجارِيّ", - "text": "تجارية" - }, - { - "lemma": "مَكان", - "text": "وأماكن" - }, - { - "lemma": "للترفيه", - "text": "للترفيه" - }, - { - "lemma": "فُنْدُق", - "text": "وفندقاً" - }, - { - "lemma": "وَحْدَة", - "text": "ووحدات" - }, - { - "lemma": "سَكَنِيّ", - "text": "سكنية" - }, - { - "lemma": "جَناح", - "text": "وأجنحة" - }, - { - "lemma": "خاصّ", - "text": "خاصة" - }, - { - "lemma": "مُؤَسَّسَة", - "text": "للمؤسسات" - }, - { - "lemma": "حَدِيقَة", - "text": "وحديقة" - }, - { - "lemma": "بانُورامِيّ", - "text": "بانورامية" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "تَمّ", - "text": "وتم" - }, - { - "lemma": "اِفْتِتاح", - "text": "افتتاحه" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "4", - "text": "4" - }, - { - "lemma": "يَنايِر", - "text": "يناير" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "مُكَوِّن", - "text": "والمكون" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "124", - "text": "124" - }, - { - "lemma": "طابِق", - "text": "طابقا" - }, - { - "lemma": ".", - "text": "." - } - ], - "posTags": [ - { - "pos": "PV", - "text": "بدأ" - }, - { - "pos": "NOUN", - "text": "العمل" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "يناير" - }, - { - "pos": "NUM", - "text": "2004" - }, - { - "pos": "REL_PRON", - "text": "الذي" - }, - { - "pos": "IV", - "text": "يتم" - }, - { - "pos": "NOUN", - "text": "بناءه" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "وسط" - }, - { - "pos": "NOUN_PROP", - "text": "دبي" - }, - { - "pos": "PV", - "text": "وبلغت" - }, - { - "pos": "NOUN", - "text": "تكلفته" - }, - { - "pos": "ADJ", - "text": "الإجمالية" - }, - { - "pos": "NUM", - "text": "1.5" - }, - { - "pos": "NUM", - "text": "مليار" - }, - { - "pos": "NOUN", - "text": "دولار" - }, - { - "pos": "NOUN", - "text": "أميركي" - }, - { - "pos": "PUNC", - "text": "[" - }, - { - "pos": "NUM", - "text": "5" - }, - { - "pos": "PUNC", - "text": "]" - }, - { - "pos": "PUNC", - "text": "؛" - }, - { - "pos": "PV", - "text": "وتم" - }, - { - "pos": "NOUN", - "text": "افتتاحه" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NUM", - "text": "4" - }, - { - "pos": "NOUN_PROP", - "text": "يناير" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "NOUN_PROP", - "text": "بحضور" - }, - { - "pos": "NOUN_PROP", - "text": "الشيخ" - }, - { - "pos": "NOUN_PROP", - "text": "محمد" - }, - { - "pos": "NOUN_PROP", - "text": "بن" - }, - { - "pos": "NOUN_PROP", - "text": "راشد" - }, - { - "pos": "NOUN_PROP", - "text": "آل" - }, - { - "pos": "ADJ", - "text": "مكتوم" - }, - { - "pos": "NOUN", - "text": "حاكم" - }, - { - "pos": "ADJ", - "text": "دبي" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "IV", - "text": "ويبلغ" - }, - { - "pos": "NOUN", - "text": "طول" - }, - { - "pos": "NOUN", - "text": "البرج" - }, - { - "pos": "NUM", - "text": "828" - }, - { - "pos": "NOUN", - "text": "مترا" - }, - { - "pos": "IV", - "text": "وستكون" - }, - { - "pos": "NOUN", - "text": "المساحة" - }, - { - "pos": "ADJ", - "text": "الإجمالية" - }, - { - "pos": "NUM", - "text": "4,000,000" - }, - { - "pos": "NOUN", - "text": "متر" - }, - { - "pos": "ADJ", - "text": "مربع" - }, - { - "pos": "IV", - "text": "وسيضم" - }, - { - "pos": "NUM", - "text": "37" - }, - { - "pos": "NOUN", - "text": "طابقاً" - }, - { - "pos": "NOUN_PROP", - "text": "كفندق" - }, - { - "pos": "IV", - "text": "ليضم" - }, - { - "pos": "NUM", - "text": "403" - }, - { - "pos": "NOUN", - "text": "جناح" - }, - { - "pos": "ADJ", - "text": "فندقي" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "IV", - "text": "وسيضم" - }, - { - "pos": "NUM", - "text": "57" - }, - { - "pos": "NOUN", - "text": "مصعد" - }, - { - "pos": "ADJ", - "text": "كهربائي" - }, - { - "pos": "IV", - "text": "وسيكون" - }, - { - "pos": "ADJ", - "text": "أسرعهم" - }, - { - "pos": "NON_ARABIC", - "text": "10م" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "ADJ", - "text": "ثانية" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "NOUN", - "text": "وللوصول" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "NUM", - "text": "500" - }, - { - "pos": "ABBREV", - "text": "م" - }, - { - "pos": "IV", - "text": "تحتاج" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "NUM", - "text": "55" - }, - { - "pos": "ADJ", - "text": "ثانية" - }, - { - "pos": "IV", - "text": "وتمتلكه" - }, - { - "pos": "NOUN", - "text": "شركة" - }, - { - "pos": "NOUN", - "text": "إعمار" - }, - { - "pos": "ADJ", - "text": "العقارية" - }, - { - "pos": "IV", - "text": "وتعد" - }, - { - "pos": "ADJ", - "text": "واحدة" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "ADJ", - "text": "أكبر" - }, - { - "pos": "NOUN", - "text": "الشركات" - }, - { - "pos": "ADJ", - "text": "العقارية" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NON_ARABIC", - "text": "العالم.و" - }, - { - "pos": "VERB_PART", - "text": "قد" - }, - { - "pos": "PV", - "text": "تولت" - }, - { - "pos": "NOUN", - "text": "عملية" - }, - { - "pos": "NOUN", - "text": "البناء" - }, - { - "pos": "NOUN", - "text": "شركة" - }, - { - "pos": "NON_ARABIC", - "text": "Samsung" - }, - { - "pos": "NON_ARABIC", - "text": "C" - }, - { - "pos": "PUNC", - "text": "&" - }, - { - "pos": "NON_ARABIC", - "text": "T." - }, - { - "pos": "DEM_PRON", - "text": "وهذا" - }, - { - "pos": "NOUN", - "text": "البرج" - }, - { - "pos": "REL_PRON", - "text": "الذي" - }, - { - "pos": "IV", - "text": "يرتفع" - }, - { - "pos": "NOUN", - "text": "بسرعة" - }, - { - "pos": "NOUN", - "text": "طابق" - }, - { - "pos": "NOUN", - "text": "كل" - }, - { - "pos": "NUM", - "text": "ثلاث" - }, - { - "pos": "NOUN", - "text": "أيام" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN", - "text": "تقريبا" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "PV", - "text": "شكل" - }, - { - "pos": "NOUN", - "text": "البناء" - }, - { - "pos": "ADJ", - "text": "الرئيسي" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "مشروع" - }, - { - "pos": "ADJ", - "text": "عمراني" - }, - { - "pos": "ADJ", - "text": "ضخم" - }, - { - "pos": "NOUN", - "text": "بقيمة" - }, - { - "pos": "NUM", - "text": "20" - }, - { - "pos": "NUM", - "text": "مليار" - }, - { - "pos": "NOUN", - "text": "دولار" - }, - { - "pos": "IV_PASS", - "text": "يتوقع" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "IV", - "text": "يغير" - }, - { - "pos": "NOUN", - "text": "ملامح" - }, - { - "pos": "NOUN", - "text": "المدينة" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وأوضح" - }, - { - "pos": "NOUN_PROP", - "text": "روبرت" - }, - { - "pos": "NOUN_PROP", - "text": "بوث" - }, - { - "pos": "NOUN", - "text": "المدير" - }, - { - "pos": "ADJ", - "text": "التنفيذي" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "الشركة" - }, - { - "pos": "ADJ", - "text": "الإماراتية" - }, - { - "pos": "REL_PRON", - "text": "التي" - }, - { - "pos": "IV", - "text": "تنفذ" - }, - { - "pos": "NOUN", - "text": "المشروع" - }, - { - "pos": "PRONOUN", - "text": "أنه" - }, - { - "pos": "IV", - "text": "سيتم" - }, - { - "pos": "NOUN", - "text": "استخدام" - }, - { - "pos": "ADJ", - "text": "المبنى" - }, - { - "pos": "NOUN", - "text": "لأغراض" - }, - { - "pos": "ADJ", - "text": "متعددة" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "IV", - "text": "وسيضم" - }, - { - "pos": "NOUN", - "text": "المبنى" - }, - { - "pos": "NOUN", - "text": "محلات" - }, - { - "pos": "ADJ", - "text": "تجارية" - }, - { - "pos": "NOUN", - "text": "وأماكن" - }, - { - "pos": "NOUN_PROP", - "text": "للترفيه" - }, - { - "pos": "NOUN", - "text": "وفندقاً" - }, - { - "pos": "NOUN", - "text": "ووحدات" - }, - { - "pos": "ADJ", - "text": "سكنية" - }, - { - "pos": "NOUN", - "text": "وأجنحة" - }, - { - "pos": "ADJ", - "text": "خاصة" - }, - { - "pos": "NOUN", - "text": "للمؤسسات" - }, - { - "pos": "NOUN", - "text": "وحديقة" - }, - { - "pos": "ADJ", - "text": "بانورامية" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وتم" - }, - { - "pos": "NOUN", - "text": "افتتاحه" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NUM", - "text": "4" - }, - { - "pos": "NOUN_PROP", - "text": "يناير" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "NOUN", - "text": "والمكون" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NUM", - "text": "124" - }, - { - "pos": "NOUN", - "text": "طابقا" - }, - { - "pos": "EOS", - "text": "." - } - ], - "requestId": "4ef4e74b-e9c6-4eda-914b-d3f3a099cb18", - "timers": { - "rblJe": 40, - "rliJe": 5 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-sentiment.json b/api/src/test/mock-data/response/ara-sentence-sentiment.json deleted file mode 100644 index fb35a4fae0..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Arabic is not supported by Rosette Sentiment Analyzer", - "requestId": "71656965-fa52-4618-9ab2-35147bf888a2" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-sentiment.status b/api/src/test/mock-data/response/ara-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/ara-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-url-categories.json b/api/src/test/mock-data/response/ara-url-categories.json index 86d0aa9430..ebe43cb0ea 100644 --- a/api/src/test/mock-data/response/ara-url-categories.json +++ b/api/src/test/mock-data/response/ara-url-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Arabic is not supported by Rosette Categorizer", - "requestId": "346d155f-757e-4da3-871c-66eaedeead83" + "message": "ARABIC is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-url-entities.json b/api/src/test/mock-data/response/ara-url-entities.json index cd0b1f771b..df07d294e8 100644 --- a/api/src/test/mock-data/response/ara-url-entities.json +++ b/api/src/test/mock-data/response/ara-url-entities.json @@ -1,212 +1,256 @@ { "entities": [ { - "confidence": 0.01820140414767795, - "count": 9, - "indocChainId": 2, - "mention": "صعدة", - "normalized": "صعدة", + "count": 6, + "indocChainId": 3, + "mention": "لبنان", + "normalized": "لبنان", "type": "LOCATION" }, { - "confidence": 0.013964295387268066, - "count": 6, - "indocChainId": 9, - "mention": "الجزيرة", - "normalized": "الجزيرة", + "count": 4, + "indocChainId": 5, + "mention": "حزب الله", + "normalized": "حزب الله", "type": "ORGANIZATION" }, { - "confidence": 0.02017374833424886, - "count": 3, + "count": 3, "indocChainId": 6, - "mention": "قيادة التحالف", - "normalized": "قيادة التحالف", + "mention": "اللبنانية", + "normalized": "اللبنانية", + "type": "NATIONALITY" + }, + { + "count": 3, + "indocChainId": 9, + "mention": "الرياض", + "normalized": "الرياض", + "type": "LOCATION" + }, + { + "count": 3, + "indocChainId": 14, + "mention": "وزارة الخارجية", + "normalized": "وزارة الخارجية", "type": "ORGANIZATION" }, { - "confidence": 0.01915818452835083, - "count": 3, + "count": 2, + "indocChainId": 4, + "mention": "السعوديون", + "normalized": "السعوديون", + "type": "NATIONALITY" + }, + { + "count": 2, "indocChainId": 12, - "mention": "قوات التحالف", - "normalized": "قوات التحالف", - "type": "ORGANIZATION" + "mention": "اللبناني", + "normalized": "اللبناني", + "type": "NATIONALITY" }, { - "confidence": 0.01995900273323059, - "count": 2, - "indocChainId": 3, - "mention": "شبوة", - "normalized": "شبوه", + "count": 2, + "indocChainId": 17, + "mention": "بيروت", + "normalized": "بيروت", "type": "LOCATION" }, { - "confidence": 0.016160041093826294, - "count": 2, - "indocChainId": 8, - "mention": "اليمن", - "normalized": "اليمن", + "count": 2, + "indocChainId": 33, + "mention": "سوريا", + "normalized": "سوريا", "type": "LOCATION" }, { - "confidence": 0.012926608324050903, - "count": 2, - "indocChainId": 19, - "mention": "طيران التحالف", - "normalized": "طيران التحالف", - "type": "ORGANIZATION" + "count": 2, + "indocChainId": 36, + "mention": "ايران", + "normalized": "ايران", + "type": "LOCATION" }, { - "confidence": 0.02015608549118042, - "count": 2, - "indocChainId": 22, - "mention": "السعودية", - "normalized": "السعودية", + "count": 2, + "indocChainId": 41, + "mention": "طهران", + "normalized": "طهران", "type": "LOCATION" }, { - "confidence": 0.029470980167388916, - "count": 2, - "indocChainId": 29, - "mention": "عسيري", - "normalized": "عسيري", - "type": "PERSON" + "count": 2, + "indocChainId": 42, + "mention": "السعودي", + "normalized": "السعودي", + "type": "NATIONALITY" }, { - "confidence": 0.008821934461593628, - "count": 2, - "indocChainId": 29, - "mention": "أحمد عسيري", - "normalized": "أحمد عسيري", - "type": "PERSON" + "count": 1, + "indocChainId": 0, + "mention": "BBC", + "normalized": "BBC", + "type": "ORGANIZATION" }, { - "confidence": 0.00783047080039978, - "count": 2, - "indocChainId": 35, - "mention": "أمس", - "normalized": "أمس", - "type": "LOCATION" + "count": 1, + "indocChainId": 1, + "mention": "Arabic\nالسعودية", + "normalized": "Arabic السعودية", + "type": "ORGANIZATION" }, { - "confidence": 0.011575579643249512, - "count": 1, - "indocChainId": 0, - "mention": "مكة المكرمة", - "normalized": "مكة المكرمة", + "count": 1, + "indocChainId": 2, + "mention": "والامارات", + "normalized": "الامارات", "type": "LOCATION" }, { - "confidence": 1.0, - "count": 1, - "indocChainId": 1, - "mention": "عربي", - "normalized": "عربي", - "type": "NATIONALITY" + "count": 1, + "indocChainId": 2, + "mention": "الامارات", + "normalized": "الامارات", + "type": "LOCATION" }, { - "confidence": 0.013428866863250732, - "count": 1, - "indocChainId": 4, - "mention": "وعدن", - "normalized": "عدن", + "count": 1, + "indocChainId": 3, + "mention": "للبنان", + "normalized": "لبنان", "type": "LOCATION" }, { - "confidence": 0.007166385650634766, - "count": 1, + "count": 1, "indocChainId": 5, - "mention": "وتعز", - "normalized": "تعز", - "type": "LOCATION" + "mention": "بحزب الله", + "normalized": "حزب الله", + "type": "ORGANIZATION" }, { - "confidence": 0.0020186901092529297, - "count": 1, - "indocChainId": 10, - "mention": "مركز وبرج الاتصالات", - "normalized": "مركز وبرج الاتصالات", - "type": "ORGANIZATION" + "count": 1, + "indocChainId": 7, + "mention": "السعوديين", + "normalized": "السعوديين", + "type": "NATIONALITY" }, { - "confidence": 0.006102204322814941, - "count": 1, + "count": 1, "indocChainId": 13, - "mention": "جماعة الحوثي", - "normalized": "جماعة الحوثي", + "mention": "وكالة الانباء السعودية", + "normalized": "وكالة الانباء السعودية", "type": "ORGANIZATION" }, { - "confidence": 0.013759136199951172, - "count": 1, - "indocChainId": 16, - "mention": "ضحيان", - "normalized": "ضحيان", - "type": "LOCATION" - }, - { - "confidence": 0.008876323699951172, - "count": 1, - "indocChainId": 17, - "mention": "مذاب الصفراء", - "normalized": "مذاب الصفراء", - "type": "LOCATION" + "count": 1, + "indocChainId": 21, + "mention": "وكالة الانباء الاماراتية", + "normalized": "وكالة الانباء الاماراتية", + "type": "ORGANIZATION" }, { - "confidence": 0.007346391677856445, - "count": 1, - "indocChainId": 20, - "mention": "رازح", - "normalized": "رازح", - "type": "LOCATION" + "count": 1, + "indocChainId": 24, + "mention": "سعودي", + "normalized": "سعودي", + "type": "NATIONALITY" }, { - "confidence": 1.0, - "count": 1, - "indocChainId": 30, - "mention": "اليمنيين", - "normalized": "اليمنيين", + "count": 1, + "indocChainId": 26, + "mention": "لبنانية", + "normalized": "لبنانية", "type": "NATIONALITY" }, { - "confidence": 0.027194619178771973, - "count": 1, - "indocChainId": 33, - "mention": "عتق", - "normalized": "عتق", + "count": 1, + "indocChainId": 30, + "mention": "الجمهورية اللبنانية", + "normalized": "الجمهورية اللبنانية", "type": "LOCATION" }, { - "confidence": 0.038842201232910156, - "count": 1, + "count": 1, "indocChainId": 34, - "mention": "عدن", - "normalized": "عدن", - "type": "LOCATION" + "mention": "الرئيس", + "normalized": "الرئيس", + "type": "TITLE" }, { - "confidence": 1.0, - "count": 1, - "indocChainId": 43, - "mention": "اليمنية", - "normalized": "اليمنية", + "count": 1, + "indocChainId": 35, + "mention": "بشار الاسد", + "normalized": "بشار الاسد", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 39, + "mention": "ايرانيين", + "normalized": "ايرانيين", "type": "NATIONALITY" }, { - "confidence": 0.02414029836654663, - "count": 1, + "count": 1, + "indocChainId": 40, + "mention": "السفارة السعودية", + "normalized": "السفارة السعودية", + "type": "ORGANIZATION" + }, + { + "count": 1, + "indocChainId": 43, + "mention": "الشيعي", + "normalized": "الشيعي", + "type": "RELIGION" + }, + { + "count": 1, "indocChainId": 44, - "mention": "نجران", - "normalized": "نجران", + "mention": "نمر النمر", + "normalized": "نمر النمر", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 47, + "mention": "رئيس", + "normalized": "رئيس", + "type": "TITLE" + }, + { + "count": 1, + "indocChainId": 51, + "mention": "العربية", + "normalized": "العربية", + "type": "NATIONALITY" + }, + { + "count": 1, + "indocChainId": 53, + "mention": "مشهد", + "normalized": "مشهد", "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 54, + "mention": "الايرانية", + "normalized": "الايرانية", + "type": "NATIONALITY" + }, + { + "count": 1, + "indocChainId": 55, + "mention": "جامعة الدول العربية", + "normalized": "جامعة الدول العربية", + "type": "ORGANIZATION" + }, + { + "count": 1, + "indocChainId": 56, + "mention": "منظمة التعاون الاسلامي", + "normalized": "منظمة التعاون الاسلامي", + "type": "ORGANIZATION" } - ], - "requestId": "82b6d07c-87c2-4f2d-afac-7dde3d420af6", - "timers": { - "rblJe": 53, - "rexJe": 228, - "rliJe": 5, - "textExtractor": 49, - "urlContentDownloader": 168 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/ara-url-entities_linked.json b/api/src/test/mock-data/response/ara-url-entities_linked.json index eabdd8e07c..44df9ad85a 100644 --- a/api/src/test/mock-data/response/ara-url-entities_linked.json +++ b/api/src/test/mock-data/response/ara-url-entities_linked.json @@ -1,139 +1,100 @@ { "entities": [ { - "confidence": 0.4180757450854853, - "entityId": "NEW-CLUSTER", + "confidence": 0.999964294728725, + "entityId": "Q9531", "indocChainId": 0, - "mention": "مكة المكرمة" + "mention": "BBC" }, { - "confidence": 0.5178530081219924, - "entityId": "NEW-CLUSTER", + "confidence": 0.5511924560878634, + "entityId": "Q878", "indocChainId": 2, - "mention": "صعدة" + "mention": "الامارات" }, { - "confidence": 0.1557383262524555, - "entityId": "NEW-CLUSTER", + "confidence": 0.3812584588789045, + "entityId": "Q822", "indocChainId": 3, - "mention": "شبوه" + "mention": "لبنان" }, { - "confidence": 0.5016791841319038, - "entityId": "NEW-CLUSTER", - "indocChainId": 4, - "mention": "عدن" - }, - { - "confidence": 0.39822414545725726, - "entityId": "Q466216", + "confidence": 0.6750285918167369, + "entityId": "Q41053", "indocChainId": 5, - "mention": "تعز" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 6, - "mention": "قيادة التحالف" + "mention": "حزب الله" }, { - "confidence": 0.6117159114135108, - "entityId": "Q805", - "indocChainId": 8, - "mention": "اليمن" - }, - { - "confidence": 0.5203183336875661, - "entityId": "Q13477", + "confidence": 0.27041821662733895, + "entityId": "Q3692", "indocChainId": 9, - "mention": "الجزيرة" - }, - { - "confidence": 0.7308444368302152, - "entityId": "NEW-CLUSTER", - "indocChainId": 10, - "mention": "مركز وبرج الاتصالات" + "mention": "الرياض" }, { - "confidence": 0.623258178252376, - "entityId": "NEW-CLUSTER", - "indocChainId": 12, - "mention": "قوات التحالف" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.16916905452298509, + "entityId": "Q12251169", "indocChainId": 13, - "mention": "جماعة الحوثي" + "mention": "وكالة الانباء السعودية" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 16, - "mention": "ضحيان" + "confidence": 0.5907583591047202, + "entityId": "Q3820", + "indocChainId": 17, + "mention": "بيروت" }, { - "confidence": 0.09139991340373968, - "entityId": "NEW-CLUSTER", - "indocChainId": 17, - "mention": "مذاب الصفراء" + "confidence": 0.7655722982095836, + "entityId": "Q822", + "indocChainId": 30, + "mention": "الجمهورية اللبنانية" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 19, - "mention": "طيران التحالف" + "confidence": 0.5228834763892026, + "entityId": "Q858", + "indocChainId": 33, + "mention": "سوريا" }, { - "confidence": 0.3224708373992394, - "entityId": "NEW-CLUSTER", - "indocChainId": 20, - "mention": "رازح" + "confidence": 0.8340227759210338, + "entityId": "Q44329", + "indocChainId": 35, + "mention": "بشار الاسد" }, { - "confidence": 0.5380180683126542, - "entityId": "NEW-CLUSTER", - "indocChainId": 22, - "mention": "السعودية" + "confidence": 0.74131143390145, + "entityId": "Q794", + "indocChainId": 36, + "mention": "ايران" }, { - "confidence": 0.03212408218368355, - "entityId": "Q4695759", - "indocChainId": 29, - "mention": "أحمد عسيري" + "confidence": 0.7132888032795985, + "entityId": "Q12216178", + "indocChainId": 40, + "mention": "السفارة السعودية" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 33, - "mention": "عتق" + "confidence": 0.6060002811652719, + "entityId": "Q3616", + "indocChainId": 41, + "mention": "طهران" }, { - "confidence": 0.5045473626996668, - "entityId": "Q131694", - "indocChainId": 34, - "mention": "عدن" + "confidence": 0.5352997486874923, + "entityId": "Q121157", + "indocChainId": 53, + "mention": "مشهد" }, { - "confidence": 0.14623359675528494, - "entityId": "NEW-CLUSTER", - "indocChainId": 35, - "mention": "أمس" + "confidence": 0.9833071478338127, + "entityId": "Q7172", + "indocChainId": 55, + "mention": "جامعة الدول العربية" }, { - "confidence": 0.3954942431664408, - "entityId": "NEW-CLUSTER", - "indocChainId": 44, - "mention": "نجران" + "confidence": 0.8852816544443546, + "entityId": "Q47543", + "indocChainId": 56, + "mention": "منظمة التعاون الاسلامي" } - ], - "requestId": "04d771f1-7664-4c39-9dd6-59b38a9bec01", - "timers": { - "rblJe": 50, - "res": 546, - "rexJe": 22, - "rliJe": 5, - "textExtractor": 51, - "urlContentDownloader": 99 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-url-language.json b/api/src/test/mock-data/response/ara-url-language.json index 6c8b88d9a2..79d1313bcb 100644 --- a/api/src/test/mock-data/response/ara-url-language.json +++ b/api/src/test/mock-data/response/ara-url-language.json @@ -1,30 +1,24 @@ { "languageDetections": [ { - "confidence": 0.0988872524018034, + "confidence": 0.0977505225605505, "language": "ara" }, { - "confidence": 0.036170580117678375, + "confidence": 0.0426805470215843, + "language": "pus" + }, + { + "confidence": 0.03771342440830083, "language": "fas" }, { - "confidence": 0.029597728143163304, + "confidence": 0.031906555158065064, "language": "urd" }, { - "confidence": 0.01726359977805403, + "confidence": 0.019203054875683856, "language": "kur" - }, - { - "confidence": 0.015814756231594562, - "language": "pus" } - ], - "requestId": "e6e44b35-db49-4e47-b51b-5fc92c204ca2", - "timers": { - "rliJe": 4, - "textExtractor": 60, - "urlContentDownloader": 159 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-url-morphology_complete.json b/api/src/test/mock-data/response/ara-url-morphology_complete.json index 0bef02fbaf..9828afce65 100644 --- a/api/src/test/mock-data/response/ara-url-morphology_complete.json +++ b/api/src/test/mock-data/response/ara-url-morphology_complete.json @@ -1,3391 +1,1802 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "جُمْعَة", - "text": "الجمعة" - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "5", - "text": "5" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2015", - "text": "2015" - }, - { - "lemma": "م", - "text": "م" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "آخِر", - "text": "آخر" - }, - { - "lemma": "تَحْدِيث", - "text": "تحديث" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "ساعَة", - "text": "الساعة" - }, - { - "lemma": "21:12", - "text": "21:12" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "مَكَّة", - "text": "مكة" - }, - { - "lemma": "مُكَرَّم", - "text": "المكرمة" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "خَبَر", - "text": "الأخبار" - }, - { - "lemma": "عَرَبِيّ", - "text": "عربي" - }, - { - "lemma": "غارَة", - "text": "غارات" - }, - { - "lemma": "تَحالُف", - "text": "للتحالف" - }, - { - "lemma": "عَلَى", - "text": "على" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "بَعْدَ", - "text": "بعد" - }, - { - "lemma": "إِعْلان", - "text": "إعلانها" - }, - { - "lemma": "مِنْطَقَة", - "text": "منطقة" - }, - { - "lemma": "اِسْتِهْداف", - "text": "استهداف" - }, - { - "lemma": "طائِرَة", - "text": "طائرات" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "هاجَم", - "text": "هاجمت" - }, - { - "lemma": "مَوْقِع", - "text": "مواقع" - }, - { - "lemma": "عَسْكَرِيّ", - "text": "عسكرية" - }, - { - "lemma": "للحوثيين", - "text": "للحوثيين" - }, - { - "lemma": "شارَك", - "text": "شارك" - }, - { - "lemma": "قَتِيل", - "text": "قتلى" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "الحوثيين", - "text": "الحوثيين" - }, - { - "lemma": "مُقاوِم", - "text": "والمقاومة" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مَعْرَكَة", - "text": "معارك" - }, - { - "lemma": "شبوة", - "text": "شبوة" - }, - { - "lemma": "عَدَن", - "text": "وعدن" - }, - { - "lemma": "عَزّ", - "text": "وتعز" - }, - { - "lemma": "دَخْل", - "text": "دخل" - }, - { - "lemma": "قَرار", - "text": "قرار" - }, - { - "lemma": "قِيادَة", - "text": "قيادة" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "تَحْوِيل", - "text": "تحويل" - }, - { - "lemma": "مُدِين", - "text": "مدينة" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "شَمال", - "text": "شمال" - }, - { - "lemma": "يَمَن", - "text": "اليمن" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "كامِل", - "text": "بكاملها" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "مِنْطَقَة", - "text": "منطقة" - }, - { - "lemma": "اِسْتِهْداف", - "text": "استهداف" - }, - { - "lemma": "عَسْكَرِيّ", - "text": "عسكري" - }, - { - "lemma": "حَيِّز", - "text": "حيز" - }, - { - "lemma": "تَنْفِيذ", - "text": "التنفيذ" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "أَظْهَر", - "text": "وأظهرت" - }, - { - "lemma": "صُورَة", - "text": "صورٌ" - }, - { - "lemma": "خاصّ", - "text": "خاصة" - }, - { - "lemma": "حَصَل", - "text": "حصلت" - }, - { - "lemma": "جَزِيرَة", - "text": "الجزيرة" - }, - { - "lemma": "عَلَى", - "text": "عليها" - }, - { - "lemma": "تَدْمِير", - "text": "تدمير" - }, - { - "lemma": "مَرْكَز", - "text": "مركز" - }, - { - "lemma": "بُرْج", - "text": "وبرج" - }, - { - "lemma": "اِتِّصال", - "text": "الاتصالات" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "بَعْدَ", - "text": "بعد" - }, - { - "lemma": "قَصْف", - "text": "قصفه" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "قُوَّة", - "text": "قوات" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "كان", - "text": "كان" - }, - { - "lemma": "اِسْتَخْدَم", - "text": "تستخدمه" - }, - { - "lemma": "جَماعَة", - "text": "جماعة" - }, - { - "lemma": "الحوثي", - "text": "الحوثي" - }, - { - "lemma": "مَقَرّ", - "text": "مقرا" - }, - { - "lemma": "عَسْكَرِيّ", - "text": "عسكريا" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "قَد", - "text": "وقد" - }, - { - "lemma": "أَفاد", - "text": "أفاد" - }, - { - "lemma": "مُراسِل", - "text": "مراسل" - }, - { - "lemma": "جَزِيرَة", - "text": "الجزيرة" - }, - { - "lemma": "أَن", - "text": "بأن" - }, - { - "lemma": "قُوَّة", - "text": "قوات" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "دَمَر", - "text": "دمرت" - }, - { - "lemma": "مَقَرّ", - "text": "مقرين" - }, - { - "lemma": "قِياد", - "text": "لقيادة" - }, - { - "lemma": "الحوثيين", - "text": "الحوثيين" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مِنْطَقَة", - "text": "منطقتي" - }, - { - "lemma": "ضحيان", - "text": "ضحيان" - }, - { - "lemma": "وَ", - "text": "و" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "مذاب", - "text": "مذاب" - }, - { - "lemma": "أَصْفَر", - "text": "الصفراء" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "شَمال", - "text": "شمال" - }, - { - "lemma": "مُدِين", - "text": "مدين" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَشار", - "text": "وأشار" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "طَيَران", - "text": "طيران" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "شَنّ", - "text": "شن" - }, - { - "lemma": "قَصْف", - "text": "قصفا" - }, - { - "lemma": "هُوَ", - "text": "هو" - }, - { - "lemma": "أَعْنَف", - "text": "الأعنف" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مُدِيرِيَّة", - "text": "مديريات" - }, - { - "lemma": "رازِح", - "text": "رازح" - }, - { - "lemma": "شَدا", - "text": "وشدا" - }, - { - "lemma": "ظاهِر", - "text": "والظاهر" - }, - { - "lemma": "جَبَل", - "text": "وجبل" - }, - { - "lemma": "ذُو", - "text": "ذي" - }, - { - "lemma": "مَرّ", - "text": "نمر" - }, - { - "lemma": "مُحافِظ", - "text": "بمحافظة" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "عَلَى", - "text": "على" - }, - { - "lemma": "حَدّ", - "text": "الحدود" - }, - { - "lemma": "مَعَ", - "text": "مع" - }, - { - "lemma": "سَعُودِيَّة", - "text": "السعودية" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "مَنْشُور", - "text": "منشورات" - }, - { - "lemma": "كان", - "text": "وكانت" - }, - { - "lemma": "قِيادَة", - "text": "قيادة" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "الَّذِي", - "text": "الذي" - }, - { - "lemma": "قاد", - "text": "تقوده" - }, - { - "lemma": "سَعُودِيَّة", - "text": "السعودية" - }, - { - "lemma": "دَعّ", - "text": "دعت" - }, - { - "lemma": "عَبْرَ", - "text": "عبر" - }, - { - "lemma": "مَنْشُور", - "text": "منشورات" - }, - { - "lemma": "أَسْقَط", - "text": "أسقطتها" - }, - { - "lemma": "طائِرَة", - "text": "طائراتها" - }, - { - "lemma": "مَدَنِيّ", - "text": "المدنيين" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "إِسْراع", - "text": "الإسراع" - }, - { - "lemma": "مُغادَرَة", - "text": "بمغادرة" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "قال", - "text": "وقالت" - }, - { - "lemma": "إِن", - "text": "إن" - }, - { - "lemma": "طَرِيق", - "text": "الطرق" - }, - { - "lemma": "رَئِيسِيّ", - "text": "الرئيسية" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "أَتاح", - "text": "ستتاح" - }, - { - "lemma": "مُغادَرَة", - "text": "لمغادرة" - }, - { - "lemma": "مَدَنِيّ", - "text": "المدنيين" - }, - { - "lemma": "حَتَّى", - "text": "حتى" - }, - { - "lemma": "غُرُوب", - "text": "غروب" - }, - { - "lemma": "شَمْس", - "text": "شمس" - }, - { - "lemma": "يَوْم", - "text": "اليوم" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "مَوْقِع", - "text": "مواقع" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "اِسْتَهْدَف", - "text": "استهدفها" - }, - { - "lemma": "طَيَران", - "text": "طيران" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "ناشِط", - "text": "ناشطون" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "نَقَل", - "text": "ونقلت" - }, - { - "lemma": "قَناة", - "text": "القناة" - }, - { - "lemma": "إِخْبارِيّ", - "text": "الإخبارية" - }, - { - "lemma": "سَعُودِيّ", - "text": "السعودية" - }, - { - "lemma": "عَن", - "text": "عن" - }, - { - "lemma": "مُتَحَدِّث", - "text": "المتحدث" - }, - { - "lemma": "اِسْم", - "text": "باسم" - }, - { - "lemma": "تَحالُف", - "text": "تحالف" - }, - { - "lemma": "عَمَلِيَّة", - "text": "عملية" - }, - { - "lemma": "إِعادَة", - "text": "إعادة" - }, - { - "lemma": "أَمَل", - "text": "الأمل" - }, - { - "lemma": "عَمِيد", - "text": "العميد" - }, - { - "lemma": "رُكْن", - "text": "الركن" - }, - { - "lemma": "أَحْمَد", - "text": "أحمد" - }, - { - "lemma": "عَسِيرِيّ", - "text": "عسيري" - }, - { - "lemma": "قَوْل", - "text": "قوله" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "وَجَّه", - "text": "وجهنا" - }, - { - "lemma": "رِسالَة", - "text": "رسالة" - }, - { - "lemma": "إِلَى", - "text": "إلى" - }, - { - "lemma": "شَقِيق", - "text": "أشقائنا" - }, - { - "lemma": "مُواطِن", - "text": "المواطنين" - }, - { - "lemma": "يَمَنِيّ", - "text": "اليمنيين" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "خِلالَ", - "text": "خلال" - }, - { - "lemma": "مُخْتَلَف", - "text": "مختلف" - }, - { - "lemma": "وَسِيلَة", - "text": "الوسائل" - }, - { - "lemma": "إِعْلامِيّ", - "text": "الإعلامية" - }, - { - "lemma": "أَن", - "text": "بأن" - }, - { - "lemma": "اِبْتَعَد", - "text": "يبتعدوا" - }, - { - "lemma": "عَن", - "text": "عن" - }, - { - "lemma": "مِيلِيشِيا", - "text": "المليشيات" - }, - { - "lemma": "الحوثية", - "text": "الحوثية" - }, - { - "lemma": "مُعَسْكَر", - "text": "والمعسكرات" - }, - { - "lemma": "عَسْكَرِيّ", - "text": "العسكرية" - }, - { - "lemma": "الَّذِي", - "text": "التي" - }, - { - "lemma": "تَحَصَّن", - "text": "تتحصن" - }, - { - "lemma": "فِي", - "text": "فيها" - }, - { - "lemma": "حِفاظ", - "text": "حفاظا" - }, - { - "lemma": "عَلَى", - "text": "على" - }, - { - "lemma": "سَلامَة", - "text": "سلامتهم" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "فِي", - "text": "وفي" - }, - { - "lemma": "مُحافِظ", - "text": "محافظة" - }, - { - "lemma": "شبوة", - "text": "شبوة" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "جَنُوب", - "text": "جنوب" - }, - { - "lemma": "شَرْق", - "text": "شرق" - }, - { - "lemma": "يَمَن", - "text": "اليمن" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "قال", - "text": "قالت" - }, - { - "lemma": "مَصْدَر", - "text": "مصادر" - }, - { - "lemma": "مَحَلِّيّ", - "text": "محلية" - }, - { - "lemma": "إِن", - "text": "إن" - }, - { - "lemma": "طائِرَة", - "text": "طائرات" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "شَنّ", - "text": "شنت" - }, - { - "lemma": "خَمْس", - "text": "خمس" - }, - { - "lemma": "غارَة", - "text": "غارات" - }, - { - "lemma": "جَوِّيّ", - "text": "جوية" - }, - { - "lemma": "عَلَى", - "text": "على" - }, - { - "lemma": "أَقَلّ", - "text": "الأقل" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مُحِيط", - "text": "محيط" - }, - { - "lemma": "مَطار", - "text": "مطار" - }, - { - "lemma": "مُدِين", - "text": "مدينة" - }, - { - "lemma": "عِتْق", - "text": "عتق" - }, - { - "lemma": "فِي", - "text": "وفي" - }, - { - "lemma": "مُدِين", - "text": "المدينة" - }, - { - "lemma": "نَفْس", - "text": "نفسها" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "شَنّ", - "text": "وشنت" - }, - { - "lemma": "طائِرَة", - "text": "الطائرات" - }, - { - "lemma": "غارَة", - "text": "غارات" - }, - { - "lemma": "أَيْض", - "text": "أيضا" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "مُدِين", - "text": "مدينة" - }, - { - "lemma": "عَدَن", - "text": "عدن" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "وَقْت", - "text": "وقت" - }, - { - "lemma": "مُتَأَخِّر", - "text": "متأخر" - }, - { - "lemma": "لَيْلَة", - "text": "ليلة" - }, - { - "lemma": "أَمْسِ", - "text": "أمس" - }, - { - "lemma": "خَمِيس", - "text": "الخميس" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "فِي", - "text": "وفي" - }, - { - "lemma": "وَقْت", - "text": "وقت" - }, - { - "lemma": "مُبَكِّر", - "text": "مبكر" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "صَباح", - "text": "صباح" - }, - { - "lemma": "يَوْم", - "text": "اليوم" - }, - { - "lemma": "جُمْعَة", - "text": "الجمعة" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَتَى", - "text": "ويأتي" - }, - { - "lemma": "هٰذا", - "text": "هذا" - }, - { - "lemma": "تَصْعِيد", - "text": "التصعيد" - }, - { - "lemma": "بَعْدَ", - "text": "بعد" - }, - { - "lemma": "إِعْلان", - "text": "إعلان" - }, - { - "lemma": "عَمِيد", - "text": "العميد" - }, - { - "lemma": "عَسِيرِيّ", - "text": "عسيري" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "مُعادَلَة", - "text": "المعادلة" - }, - { - "lemma": "اِخْتَلَف", - "text": "اختلفت" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "أَن", - "text": "وأن" - }, - { - "lemma": "قُوَّة", - "text": "قوات" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "قُوَّة", - "text": "والقوات" - }, - { - "lemma": "سَعُودِيّ", - "text": "السعودية" - }, - { - "lemma": "مُسَلَّح", - "text": "المسلحة" - }, - { - "lemma": "رَدّ", - "text": "سترد" - }, - { - "lemma": "عَلَى", - "text": "على" - }, - { - "lemma": "اِعْتِداء", - "text": "اعتداءات" - }, - { - "lemma": "الحوثيين", - "text": "الحوثيين" - }, - { - "lemma": "قُوَّة", - "text": "بقوة" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "شَكْل", - "text": "وبشكل" - }, - { - "lemma": "غَيْر", - "text": "غير" - }, - { - "lemma": "مَحْدُود", - "text": "محدود" - }, - { - "lemma": "زَمان", - "text": "بزمان" - }, - { - "lemma": "أَو", - "text": "أو" - }, - { - "lemma": "مَكان", - "text": "مكان" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "أَكَّد", - "text": "وأكد" - }, - { - "lemma": "عَسِيرِيّ", - "text": "عسيري" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "قِيادَة", - "text": "قيادة" - }, - { - "lemma": "تَحالُف", - "text": "التحالف" - }, - { - "lemma": "سَوْفَ", - "text": "سوف" - }, - { - "lemma": "أَغار", - "text": "تغير" - }, - { - "lemma": "رَدّ", - "text": "ردها" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "سَوْفَ", - "text": "وسوف" - }, - { - "lemma": "اِسْتَهْدَف", - "text": "تستهدف" - }, - { - "lemma": "مِيلِيشِيا", - "text": "المليشيات" - }, - { - "lemma": "قائِد", - "text": "وقادتها" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "أَضاف", - "text": "وأضاف" - }, - { - "lemma": "أَن", - "text": "أن" - }, - { - "lemma": "رَدّ", - "text": "الرد" - }, - { - "lemma": "اِسْتَهْدَف", - "text": "سيستهدف" - }, - { - "lemma": "صَعْدَة", - "text": "صعدة" - }, - { - "lemma": "مِران", - "text": "ومرّان" - }, - { - "lemma": "مِنْطَقَة", - "text": "ومناطق" - }, - { - "lemma": "أُخْرَى", - "text": "أخرى" - }, - { - "lemma": "،", - "text": "،" - }, - { - "lemma": "لَن", - "text": "ولن" - }, - { - "lemma": "اِقْتَصَر", - "text": "يقتصر" - }, - { - "lemma": "عَلَى", - "text": "على" - }, - { - "lemma": "مِنْطَقَة", - "text": "المناطق" - }, - { - "lemma": "حُدُودِيّ", - "text": "الحدودية" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "كان", - "text": "وكان" - }, - { - "lemma": "مُراسِل", - "text": "مراسل" - }, - { - "lemma": "جَزِيرَة", - "text": "الجزيرة" - }, - { - "lemma": "أَفاد", - "text": "أفاد" - }, - { - "lemma": "تَجَدُّد", - "text": "بتجدد" - }, - { - "lemma": "سُقُوط", - "text": "سقوط" - }, - { - "lemma": "قَذِيفَة", - "text": "القذائف" - }, - { - "lemma": "مَساء", - "text": "مساء" - }, - { - "lemma": "أَمْسِ", - "text": "أمس" - }, - { - "lemma": "خَمِيس", - "text": "الخميس" - }, - { - "lemma": "قُرْبَ", - "text": "قرب" - }, - { - "lemma": "حَدّ", - "text": "الحدود" - }, - { - "lemma": "يَمَنِيّ", - "text": "اليمنية" - }, - { - "lemma": "بَعْدَ", - "text": "بعد" - }, - { - "lemma": "يَوْم", - "text": "يوم" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "مَقْتَل", - "text": "مقتل" - }, - { - "lemma": "خَمْس", - "text": "خمسة" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "بَيْنَ", - "text": "بينهم" - }, - { - "lemma": "شُرْطِيّ", - "text": "شرطي" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "إِصابَة", - "text": "وإصابة" - }, - { - "lemma": "11", - "text": "11" - }, - { - "lemma": "مَدَنِيّ", - "text": "مدنيا" - }, - { - "lemma": "جَرّاءَ", - "text": "جراء" - }, - { - "lemma": "قَصْف", - "text": "قصف" - }, - { - "lemma": "بقذائف", - "text": "بقذائف" - }, - { - "lemma": "هاوُن", - "text": "الهاون" - }, - { - "lemma": "اِسْتَهْدَف", - "text": "استهدف" - }, - { - "lemma": "مِنْطَقَة", - "text": "مناطق" - }, - { - "lemma": "عِدَّة", - "text": "عدة" - }, - { - "lemma": "فِي", - "text": "في" - }, - { - "lemma": "نَجْران", - "text": "نجران" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "مُصَدِّر", - "text": "المصدر" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "وِكالَة", - "text": "وكالات" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "جَزِيرَة", - "text": "الجزيرة" - }, - { - "lemma": "مُقَطَّع", - "text": "مقطع" - }, - { - "lemma": "مِن", - "text": "من" - }, - { - "lemma": "لِقاء", - "text": "لقاء" - }, - { - "lemma": "يَوْم", - "text": "اليوم" - }, - { - "lemma": "مَعَ", - "text": "مع" - }, - { - "lemma": "عَمِيد", - "text": "العميد" - }, - { - "lemma": "رُكْن", - "text": "الركن" - }, - { - "lemma": "أَحْمَد", - "text": "أحمد" - }, - { - "lemma": "عَسِيرِيّ", - "text": "عسيري" - }, - { - "lemma": "شارَك", - "text": "شارك" - }, - { - "lemma": "رَأْي", - "text": "برأيك" - }, - { - "lemma": "تَعْلِيق", - "text": "التعليقات" - }, - { - "lemma": "مَنْشُور", - "text": "المنشورة" - }, - { - "lemma": "لا", - "text": "لا" - }, - { - "lemma": "عَبَر", - "text": "تعبر" - }, - { - "lemma": "عَن", - "text": "عن" - }, - { - "lemma": "رَأْي", - "text": "رأي" - }, - { - "lemma": "جَزِيرَة", - "text": "الجزيرة" - }, - { - "lemma": "إِنَّما", - "text": "وإنما" - }, - { - "lemma": "عَبَر", - "text": "تعبر" - }, - { - "lemma": "عَن", - "text": "عن" - }, - { - "lemma": "رَأْي", - "text": "رأي" - }, - { - "lemma": "صاحِب", - "text": "أصحابها" - }, - { - "lemma": "انشر", - "text": "انشر" - }, - { - "lemma": "تعليقك", - "text": "تعليقك" - }, - { - "lemma": "عَن", - "text": "عن" - }, - { - "lemma": "طَرِيق", - "text": "طريق" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "تَعْلِيق", - "text": "التعليق" - }, - { - "lemma": "أَحْدَث", - "text": "الأحدث" - }, - { - "lemma": "إِظْهار", - "text": "إظهار" - }, - { - "lemma": "0", - "text": "0" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "0", - "text": "0" - }, - { - "lemma": "تَعْلِيق", - "text": "تعليقات" - }, - { - "lemma": "أَظْهَر", - "text": "أظهر" - }, - { - "lemma": "تَعْلِيق", - "text": "تعليقات" - }, - { - "lemma": "أَكْثَر", - "text": "أكثر" - }, - { - "lemma": "أَقْرَأ", - "text": "اقرأ" - }, - { - "lemma": "أَيْض", - "text": "أيضاً" - }, - { - "lemma": "جَمِيع", - "text": "جميع" - }, - { - "lemma": "حَقّ", - "text": "الحقوق" - }, - { - "lemma": "مَحْفُوظ", - "text": "محفوظة" - }, - { - "lemma": "©", - "text": "©" - }, - { - "lemma": "2015", - "text": "2015" - }, - { - "lemma": "جَزِيرَة", - "text": "الجزيرة" - }, - { - "lemma": "|", - "text": "|" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "Powerd", - "text": "Powerd" - }, - { - "lemma": "by", - "text": "by" - } + "BBC", + "Arabic", + "سَعُودِيّ", + "إِمارَة", + "حَثّ", + "رَعِيَّة", + "عَلَى", + "تَجَنُّب", + "سَفَر", + "إِلَى", + "لُبْنان", + "23", + "فِبْرايِر", + "/", + "شُباط", + "2016", + "Image", + "copyright", + "AFP", + "Image", + "caption", + "قال", + "سَعُودِيّ", + "إِن", + "حِزْب", + "اللّٰه", + "هَيْمَن", + "عَلَى", + "دَوْلَة", + "لُبْنانِيّ", + "حَثّ", + "حُكُومَة", + "سَعُودِيّ", + "يَوْم", + "ثُلاثاء", + "رَعِيَّة", + "سَعُودِيّ", + "مُقِيم", + "فِي", + "لُبْنان", + "عَلَى", + "مُغادَرَة", + "،", + "ذٰلِكَ", + "عَقِبَ", + "إِيقاف", + "رِياض", + "بَرْنامَج", + "مُساعِد", + "بَلُغ", + "قَيِّم", + "3", + "مِلْيار", + "دُولار", + "تَسْلِيح", + "قُوَّة", + "لُبْنانِيّ", + "رَدّ", + "عَلَى", + "ما", + "وَصَف", + "\"", + "مَوْقِف", + "مُعادِي", + "\"", + "تَعَلَّق", + "حِزْب", + "اللّٰه", + "لُبْنانِيّ", + ".", + "نَقَل", + "وِكالَة", + "نَبَأ", + "سَعُودِيّ", + "عَن", + "مُصَدِّر", + "مَسْؤُول", + "فِي", + "وِزارَة", + "خارِجِيَّة", + "قَوْل", + "\"", + "إِنَّ", + "وِزارَة", + "طَلَب", + "مِن", + "جَمِيع", + "مُواطِن", + "عَدَم", + "سَفَر", + "إِلَى", + "لُبْنان", + "حِرْص", + "عَلَى", + "سَلامَة", + "،", + "كَما", + "طَلَب", + "مِن", + "مُواطِن", + "مُقِيم", + "أَو", + "زائِر", + "لُبْنان", + "مُغادَرَة", + "عَدَم", + "بَقاء", + "هُناكَ", + "إِلّا", + "ضَرُورَة", + "أَقْصَى", + "مَعَ", + "تَوَخِّي", + "حِيطَة", + "حِذْر", + "اِتِّصال", + "سِفارَة", + "مُمَلِّك", + "فِي", + "بَيْرُوت", + "تَقْدِيم", + "تَسْهِيل", + "رِعايَة", + "لازِم", + ".", + "\"", + "مِن", + "جانِب", + "آخِر", + "،", + "أَعْلَن", + "وِزارَة", + "خارِجِيَّة", + "تَعاوُن", + "دَوْلِيّ", + "فِي", + "إِمارَة", + "أَنَّ", + "\"", + "رَفَع", + "حالَة", + "تَحْذِير", + "مِن", + "سَفَر", + "إِلَى", + "لُبْنان", + "إِلَى", + "مَنْع", + "سَفَر", + "إِلَى", + "ذٰلِكَ", + "اِعْتِبار", + "مِن", + "يَوْم", + "ثُلاثاء", + ".", + "\"", + "قال", + "وِكالَة", + "نَبَأ", + "إِماراتِيّ", + "رَسْمِيّ", + "أَن", + "وِزارَة", + "خارِجِيَّة", + "قَرَّر", + "أَيْض", + "تَخْفِيض", + "فَرْد", + "بَعْثَة", + "دِبلُوماسِيّ", + "فِي", + "بَيْرُوت", + "إِلَى", + "حَدّ", + "أَدْنَى", + ".", + "كان", + "مَسْؤُول", + "سَعُودِيّ", + "قَد", + "قال", + "فِي", + "مَعْرِض", + "إِعْلان", + "عَن", + "وَقْف", + "بَرْنامَج", + "مُساعِد", + "يَوْم", + "جُمْعَة", + "ماضِي", + "إِن", + "رِياض", + "لاحَظ", + "\"", + "مَوْقِف", + "لُبْنانِيّ", + "مُعادِي", + "ناتِج", + "عَن", + "هَيْمَنَة", + "حِزْب", + "اللّٰه", + "عَلَى", + "دَوْلَة", + "لُبْنانِيّ", + ".", + "\"", + "قال", + "مَسْؤُول", + "إِن", + "رِياض", + "\"", + "عَكَف", + "عَلَى", + "إِجْراء", + "اِسْتِعْراض", + "شامِل", + "عَلاقَة", + "مَعَ", + "جُمْهُورِيّ", + "لُبْنانِيّ", + ".", + "\"", + "ذَكَر", + "أَن", + "حِزْب", + "اللّٰه", + "لُبْنانِيّ", + "حارَب", + "فِي", + "سُورِيا", + "دَعْم", + "حُكُومَة", + "رَئِيس", + "بَشّار", + "أَسَد", + "،", + "سانَد", + "فِي", + "ذٰلِكَ", + "إِيران", + "الَّذِي", + "قَطَع", + "سَعُودِيّ", + "عَلاقَة", + "مَعَ", + "فِي", + "وَقْت", + "سابِق", + ".", + "كان", + "سَعُودِيّ", + "قَد", + "قَطَع", + "عَلاقَة", + "دِبلُوماسِيّ", + "مَعَ", + "إِيران", + "بَعْدَ", + "اِقْتِحام", + "مُتَظاهِر", + "إِيرانِيّ", + "مَقَرّ", + "سِفارَة", + "سَعُودِيّ", + "فِي", + "طَهْران", + ".", + "كان", + "مُتَظاهِر", + "اِحْتَجّ", + "عَلَى", + "تَنْفِيذ", + "سَعُودِيّ", + "حَكَم", + "إِعْدام", + "رِجْل", + "دِين", + "سَعُودِيّ", + "شِيعِيّ", + "أَنْمَر", + "أَنْمَر", + ".", + "كان", + "مِن", + "تَأْثِير", + "حَرْب", + "دائِر", + "فِي", + "سُورِيا", + "زِيادَة", + "اِسْتِقْطاب", + "سِياسِيّ", + "فِي", + "لُبْنان", + "مُجاوِر", + "،", + "الَّذِي", + "تَعَذَّر", + "عَلَى", + "اِخْتِيار", + "رَئِيس", + "جَدِيد", + "جُمْهُورِيّ", + "عام", + "تَقْرِيب", + "نَتِيجَة", + "خِلاف", + "عَمِيق", + "بَيْنَ", + "حِزْب", + "اللّٰه", + "مُنافِس", + ".", + "كان", + "مَسْؤُول", + "سَعُودِيّ", + "مَذْكُور", + "قَد", + "قال", + "جُمْعَة", + "ماضِي", + "إِن", + "لُبْنان", + "لَم", + "اِنْضَمّ", + "إِلَى", + "دَوْلَة", + "عَرَبِيّ", + "الَّذِي", + "أَدان", + "هَجْمَة", + "الَّذِي", + "اِسْتَهْدَف", + "سِفارَة", + "فِي", + "طَهْران", + "قُنْصُلِيَّة", + "فِي", + "مُدِين", + "مَشْهَد", + "إِيرانِيّ", + "إِن", + "كان", + "ذٰلِكَ", + "فِي", + "إِطار", + "جامِع", + "دَوْلَة", + "عَرَبِيّ", + "أَو", + "إِطار", + "مُنَظِّم", + "تَعاوُن", + "إِسْلامِيّ", + "." ], "posTags": [ - { - "pos": "NOUN", - "text": "الجمعة" - }, - { - "pos": "NUM", - "text": "8" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "5" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "2015" - }, - { - "pos": "ABBREV", - "text": "م" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "ADJ", - "text": "آخر" - }, - { - "pos": "NOUN", - "text": "تحديث" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "NOUN", - "text": "الساعة" - }, - { - "pos": "NON_ARABIC", - "text": "21:12" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN_PROP", - "text": "مكة" - }, - { - "pos": "ADJ", - "text": "المكرمة" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "NOUN", - "text": "الأخبار" - }, - { - "pos": "ADJ", - "text": "عربي" - }, - { - "pos": "NOUN", - "text": "غارات" - }, - { - "pos": "NOUN", - "text": "للتحالف" - }, - { - "pos": "PREP", - "text": "على" - }, - { - "pos": "NOUN", - "text": "صعدة" - }, - { - "pos": "PREP", - "text": "بعد" - }, - { - "pos": "NOUN", - "text": "إعلانها" - }, - { - "pos": "NOUN", - "text": "منطقة" - }, - { - "pos": "NOUN", - "text": "استهداف" - }, - { - "pos": "NOUN", - "text": "طائرات" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "PV", - "text": "هاجمت" - }, - { - "pos": "NOUN", - "text": "مواقع" - }, - { - "pos": "ADJ", - "text": "عسكرية" - }, - { - "pos": "NOUN_PROP", - "text": "للحوثيين" - }, - { - "pos": "PV", - "text": "شارك" - }, - { - "pos": "NOUN", - "text": "قتلى" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN_PROP", - "text": "الحوثيين" - }, - { - "pos": "NOUN", - "text": "والمقاومة" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "معارك" - }, - { - "pos": "NOUN_PROP", - "text": "شبوة" - }, - { - "pos": "NOUN_PROP", - "text": "وعدن" - }, - { - "pos": "IV", - "text": "وتعز" - }, - { - "pos": "NOUN", - "text": "دخل" - }, - { - "pos": "NOUN", - "text": "قرار" - }, - { - "pos": "NOUN", - "text": "قيادة" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "NOUN", - "text": "تحويل" - }, - { - "pos": "NOUN", - "text": "مدينة" - }, - { - "pos": "NOUN_PROP", - "text": "صعدة" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN", - "text": "شمال" - }, - { - "pos": "NOUN_PROP", - "text": "اليمن" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "NOUN", - "text": "بكاملها" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "NOUN", - "text": "منطقة" - }, - { - "pos": "NOUN", - "text": "استهداف" - }, - { - "pos": "ADJ", - "text": "عسكري" - }, - { - "pos": "NOUN", - "text": "حيز" - }, - { - "pos": "NOUN", - "text": "التنفيذ" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PV", - "text": "وأظهرت" - }, - { - "pos": "NOUN", - "text": "صورٌ" - }, - { - "pos": "ADJ", - "text": "خاصة" - }, - { - "pos": "PV", - "text": "حصلت" - }, - { - "pos": "NOUN", - "text": "الجزيرة" - }, - { - "pos": "PRONOUN", - "text": "عليها" - }, - { - "pos": "NOUN", - "text": "تدمير" - }, - { - "pos": "NOUN", - "text": "مركز" - }, - { - "pos": "NOUN", - "text": "وبرج" - }, - { - "pos": "NOUN", - "text": "الاتصالات" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "صعدة" - }, - { - "pos": "PREP", - "text": "بعد" - }, - { - "pos": "NOUN", - "text": "قصفه" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "قوات" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PV", - "text": "كان" - }, - { - "pos": "IV", - "text": "تستخدمه" - }, - { - "pos": "NOUN", - "text": "جماعة" - }, - { - "pos": "NOUN_PROP", - "text": "الحوثي" - }, - { - "pos": "NOUN", - "text": "مقرا" - }, - { - "pos": "ADJ", - "text": "عسكريا" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "VERB_PART", - "text": "وقد" - }, - { - "pos": "PV", - "text": "أفاد" - }, - { - "pos": "NOUN", - "text": "مراسل" - }, - { - "pos": "NOUN", - "text": "الجزيرة" - }, - { - "pos": "SUB_CONJ", - "text": "بأن" - }, - { - "pos": "NOUN", - "text": "قوات" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "PV", - "text": "دمرت" - }, - { - "pos": "NOUN", - "text": "مقرين" - }, - { - "pos": "NOUN", - "text": "لقيادة" - }, - { - "pos": "NOUN_PROP", - "text": "الحوثيين" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "منطقتي" - }, - { - "pos": "NOUN_PROP", - "text": "ضحيان" - }, - { - "pos": "CONJ", - "text": "و" - }, - { - "pos": "PUNC", - "text": "\"" - }, - { - "pos": "NOUN_PROP", - "text": "مذاب" - }, - { - "pos": "ADJ", - "text": "الصفراء" - }, - { - "pos": "PUNC", - "text": "\"" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN", - "text": "شمال" - }, - { - "pos": "NOUN", - "text": "مدين" - }, - { - "pos": "NOUN_PROP", - "text": "صعدة" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وأشار" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "طيران" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "PV", - "text": "شن" - }, - { - "pos": "NOUN", - "text": "قصفا" - }, - { - "pos": "PRONOUN", - "text": "هو" - }, - { - "pos": "ADJ", - "text": "الأعنف" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "مديريات" - }, - { - "pos": "ADJ", - "text": "رازح" - }, - { - "pos": "PV", - "text": "وشدا" - }, - { - "pos": "NOUN", - "text": "والظاهر" - }, - { - "pos": "PV", - "text": "وجبل" - }, - { - "pos": "DEM_PRON", - "text": "ذي" - }, - { - "pos": "IV", - "text": "نمر" - }, - { - "pos": "NOUN", - "text": "بمحافظة" - }, - { - "pos": "NOUN", - "text": "صعدة" - }, - { - "pos": "PREP", - "text": "على" - }, - { - "pos": "NOUN", - "text": "الحدود" - }, - { - "pos": "PREP", - "text": "مع" - }, - { - "pos": "NOUN_PROP", - "text": "السعودية" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "NOUN", - "text": "منشورات" - }, - { - "pos": "PV", - "text": "وكانت" - }, - { - "pos": "NOUN", - "text": "قيادة" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "REL_PRON", - "text": "الذي" - }, - { - "pos": "IV", - "text": "تقوده" - }, - { - "pos": "NOUN_PROP", - "text": "السعودية" - }, - { - "pos": "PV", - "text": "دعت" - }, - { - "pos": "PREP", - "text": "عبر" - }, - { - "pos": "NOUN", - "text": "منشورات" - }, - { - "pos": "PV", - "text": "أسقطتها" - }, - { - "pos": "NOUN", - "text": "طائراتها" - }, - { - "pos": "ADJ", - "text": "المدنيين" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "NOUN", - "text": "الإسراع" - }, - { - "pos": "NOUN", - "text": "بمغادرة" - }, - { - "pos": "NOUN_PROP", - "text": "صعدة" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PV", - "text": "وقالت" - }, - { - "pos": "SUB_CONJ", - "text": "إن" - }, - { - "pos": "NOUN", - "text": "الطرق" - }, - { - "pos": "ADJ", - "text": "الرئيسية" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "صعدة" - }, - { - "pos": "IV_PASS", - "text": "ستتاح" - }, - { - "pos": "NOUN", - "text": "لمغادرة" - }, - { - "pos": "NOUN", - "text": "المدنيين" - }, - { - "pos": "PREP", - "text": "حتى" - }, - { - "pos": "NOUN", - "text": "غروب" - }, - { - "pos": "NOUN", - "text": "شمس" - }, - { - "pos": "NOUN", - "text": "اليوم" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "NOUN", - "text": "مواقع" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "صعدة" - }, - { - "pos": "PV", - "text": "استهدفها" - }, - { - "pos": "NOUN", - "text": "طيران" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN", - "text": "ناشطون" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "PV", - "text": "ونقلت" - }, - { - "pos": "NOUN", - "text": "القناة" - }, - { - "pos": "ADJ", - "text": "الإخبارية" - }, - { - "pos": "ADJ", - "text": "السعودية" - }, - { - "pos": "PREP", - "text": "عن" - }, - { - "pos": "NOUN", - "text": "المتحدث" - }, - { - "pos": "NOUN", - "text": "باسم" - }, - { - "pos": "NOUN", - "text": "تحالف" - }, - { - "pos": "NOUN", - "text": "عملية" - }, - { - "pos": "NOUN", - "text": "إعادة" - }, - { - "pos": "NOUN", - "text": "الأمل" - }, - { - "pos": "NOUN", - "text": "العميد" - }, - { - "pos": "NOUN", - "text": "الركن" - }, - { - "pos": "ADJ", - "text": "أحمد" - }, - { - "pos": "NOUN", - "text": "عسيري" - }, - { - "pos": "NOUN", - "text": "قوله" - }, - { - "pos": "PUNC", - "text": "\"" - }, - { - "pos": "PV", - "text": "وجهنا" - }, - { - "pos": "NOUN", - "text": "رسالة" - }, - { - "pos": "PREP", - "text": "إلى" - }, - { - "pos": "NOUN", - "text": "أشقائنا" - }, - { - "pos": "NOUN", - "text": "المواطنين" - }, - { - "pos": "ADJ", - "text": "اليمنيين" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "خلال" - }, - { - "pos": "ADJ", - "text": "مختلف" - }, - { - "pos": "NOUN", - "text": "الوسائل" - }, - { - "pos": "ADJ", - "text": "الإعلامية" - }, - { - "pos": "SUB_CONJ", - "text": "بأن" - }, - { - "pos": "IV", - "text": "يبتعدوا" - }, - { - "pos": "PREP", - "text": "عن" - }, - { - "pos": "NOUN", - "text": "المليشيات" - }, - { - "pos": "NOUN_PROP", - "text": "الحوثية" - }, - { - "pos": "NOUN", - "text": "والمعسكرات" - }, - { - "pos": "ADJ", - "text": "العسكرية" - }, - { - "pos": "REL_PRON", - "text": "التي" - }, - { - "pos": "IV", - "text": "تتحصن" - }, - { - "pos": "PRONOUN", - "text": "فيها" - }, - { - "pos": "NOUN", - "text": "حفاظا" - }, - { - "pos": "PREP", - "text": "على" - }, - { - "pos": "NOUN", - "text": "سلامتهم" - }, - { - "pos": "PUNC", - "text": "\"" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PREP", - "text": "وفي" - }, - { - "pos": "NOUN", - "text": "محافظة" - }, - { - "pos": "NOUN_PROP", - "text": "شبوة" - }, - { - "pos": "PUNC", - "text": "(" - }, - { - "pos": "NOUN", - "text": "جنوب" - }, - { - "pos": "NOUN", - "text": "شرق" - }, - { - "pos": "NOUN_PROP", - "text": "اليمن" - }, - { - "pos": "PUNC", - "text": ")" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PV", - "text": "قالت" - }, - { - "pos": "NOUN", - "text": "مصادر" - }, - { - "pos": "ADJ", - "text": "محلية" - }, - { - "pos": "SUB_CONJ", - "text": "إن" - }, - { - "pos": "NOUN", - "text": "طائرات" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "PV", - "text": "شنت" - }, - { - "pos": "NUM", - "text": "خمس" - }, - { - "pos": "NOUN", - "text": "غارات" - }, - { - "pos": "ADJ", - "text": "جوية" - }, - { - "pos": "PREP", - "text": "على" - }, - { - "pos": "NOUN", - "text": "الأقل" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "محيط" - }, - { - "pos": "NOUN", - "text": "مطار" - }, - { - "pos": "NOUN", - "text": "مدينة" - }, - { - "pos": "NOUN", - "text": "عتق" - }, - { - "pos": "PREP", - "text": "وفي" - }, - { - "pos": "NOUN", - "text": "المدينة" - }, - { - "pos": "NOUN", - "text": "نفسها" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وشنت" - }, - { - "pos": "NOUN", - "text": "الطائرات" - }, - { - "pos": "NOUN", - "text": "غارات" - }, - { - "pos": "ADV", - "text": "أيضا" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "مدينة" - }, - { - "pos": "NOUN_PROP", - "text": "عدن" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN", - "text": "وقت" - }, - { - "pos": "ADJ", - "text": "متأخر" - }, - { - "pos": "NOUN", - "text": "ليلة" - }, - { - "pos": "ADV", - "text": "أمس" - }, - { - "pos": "NOUN", - "text": "الخميس" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PREP", - "text": "وفي" - }, - { - "pos": "NOUN", - "text": "وقت" - }, - { - "pos": "ADJ", - "text": "مبكر" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "صباح" - }, - { - "pos": "NOUN", - "text": "اليوم" - }, - { - "pos": "NOUN", - "text": "الجمعة" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "IV", - "text": "ويأتي" - }, - { - "pos": "DEM_PRON", - "text": "هذا" - }, - { - "pos": "NOUN", - "text": "التصعيد" - }, - { - "pos": "PREP", - "text": "بعد" - }, - { - "pos": "NOUN", - "text": "إعلان" - }, - { - "pos": "NOUN", - "text": "العميد" - }, - { - "pos": "NOUN", - "text": "عسيري" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "المعادلة" - }, - { - "pos": "PV", - "text": "اختلفت" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "SUB_CONJ", - "text": "وأن" - }, - { - "pos": "NOUN", - "text": "قوات" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "NOUN", - "text": "والقوات" - }, - { - "pos": "ADJ", - "text": "السعودية" - }, - { - "pos": "ADJ", - "text": "المسلحة" - }, - { - "pos": "IV", - "text": "سترد" - }, - { - "pos": "PREP", - "text": "على" - }, - { - "pos": "NOUN", - "text": "اعتداءات" - }, - { - "pos": "NOUN_PROP", - "text": "الحوثيين" - }, - { - "pos": "NOUN", - "text": "بقوة" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "NOUN", - "text": "وبشكل" - }, - { - "pos": "NEG_PART", - "text": "غير" - }, - { - "pos": "ADJ", - "text": "محدود" - }, - { - "pos": "NOUN", - "text": "بزمان" - }, - { - "pos": "CONJ", - "text": "أو" - }, - { - "pos": "NOUN", - "text": "مكان" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وأكد" - }, - { - "pos": "NOUN", - "text": "عسيري" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "قيادة" - }, - { - "pos": "NOUN", - "text": "التحالف" - }, - { - "pos": "FUT_PART", - "text": "سوف" - }, - { - "pos": "IV", - "text": "تغير" - }, - { - "pos": "NOUN", - "text": "ردها" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "FUT_PART", - "text": "وسوف" - }, - { - "pos": "IV", - "text": "تستهدف" - }, - { - "pos": "NOUN", - "text": "المليشيات" - }, - { - "pos": "NOUN", - "text": "وقادتها" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "PV", - "text": "وأضاف" - }, - { - "pos": "SUB_CONJ", - "text": "أن" - }, - { - "pos": "NOUN", - "text": "الرد" - }, - { - "pos": "IV", - "text": "سيستهدف" - }, - { - "pos": "NOUN", - "text": "صعدة" - }, - { - "pos": "NOUN", - "text": "ومرّان" - }, - { - "pos": "NOUN", - "text": "ومناطق" - }, - { - "pos": "ADJ", - "text": "أخرى" - }, - { - "pos": "PUNC", - "text": "،" - }, - { - "pos": "NEG_PART", - "text": "ولن" - }, - { - "pos": "IV", - "text": "يقتصر" - }, - { - "pos": "PREP", - "text": "على" - }, - { - "pos": "NOUN", - "text": "المناطق" - }, - { - "pos": "ADJ", - "text": "الحدودية" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "PV", - "text": "وكان" - }, - { - "pos": "NOUN", - "text": "مراسل" - }, - { - "pos": "NOUN", - "text": "الجزيرة" - }, - { - "pos": "PV", - "text": "أفاد" - }, - { - "pos": "NOUN", - "text": "بتجدد" - }, - { - "pos": "NOUN", - "text": "سقوط" - }, - { - "pos": "NOUN", - "text": "القذائف" - }, - { - "pos": "NOUN", - "text": "مساء" - }, - { - "pos": "ADV", - "text": "أمس" - }, - { - "pos": "NOUN", - "text": "الخميس" - }, - { - "pos": "PREP", - "text": "قرب" - }, - { - "pos": "NOUN", - "text": "الحدود" - }, - { - "pos": "ADJ", - "text": "اليمنية" - }, - { - "pos": "PREP", - "text": "بعد" - }, - { - "pos": "NOUN", - "text": "يوم" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "مقتل" - }, - { - "pos": "NUM", - "text": "خمسة" - }, - { - "pos": "PUNC", - "text": "-" - }, - { - "pos": "PRONOUN", - "text": "بينهم" - }, - { - "pos": "NOUN", - "text": "شرطي" - }, - { - "pos": "PUNC", - "text": "-" - }, - { - "pos": "NOUN", - "text": "وإصابة" - }, - { - "pos": "NUM", - "text": "11" - }, - { - "pos": "NOUN", - "text": "مدنيا" - }, - { - "pos": "PREP", - "text": "جراء" - }, - { - "pos": "NOUN", - "text": "قصف" - }, - { - "pos": "NOUN_PROP", - "text": "بقذائف" - }, - { - "pos": "NOUN", - "text": "الهاون" - }, - { - "pos": "PV", - "text": "استهدف" - }, - { - "pos": "NOUN", - "text": "مناطق" - }, - { - "pos": "ADJ", - "text": "عدة" - }, - { - "pos": "PREP", - "text": "في" - }, - { - "pos": "NOUN_PROP", - "text": "نجران" - }, - { - "pos": "EOS", - "text": "." - }, - { - "pos": "NOUN", - "text": "المصدر" - }, - { - "pos": "PUNC", - "text": ":" - }, - { - "pos": "NOUN", - "text": "وكالات" - }, - { - "pos": "PUNC", - "text": "," - }, - { - "pos": "NOUN", - "text": "الجزيرة" - }, - { - "pos": "ADJ", - "text": "مقطع" - }, - { - "pos": "PREP", - "text": "من" - }, - { - "pos": "NOUN", - "text": "لقاء" - }, - { - "pos": "NOUN", - "text": "اليوم" - }, - { - "pos": "PREP", - "text": "مع" - }, - { - "pos": "NOUN", - "text": "العميد" - }, - { - "pos": "NOUN", - "text": "الركن" - }, - { - "pos": "ADJ", - "text": "أحمد" - }, - { - "pos": "NOUN", - "text": "عسيري" - }, - { - "pos": "PV", - "text": "شارك" - }, - { - "pos": "NOUN", - "text": "برأيك" - }, - { - "pos": "NOUN", - "text": "التعليقات" - }, - { - "pos": "ADJ", - "text": "المنشورة" - }, - { - "pos": "NEG_PART", - "text": "لا" - }, - { - "pos": "IV", - "text": "تعبر" - }, - { - "pos": "PREP", - "text": "عن" - }, - { - "pos": "NOUN", - "text": "رأي" - }, - { - "pos": "NOUN", - "text": "الجزيرة" - }, - { - "pos": "SUB_CONJ", - "text": "وإنما" - }, - { - "pos": "IV", - "text": "تعبر" - }, - { - "pos": "PREP", - "text": "عن" - }, - { - "pos": "NOUN", - "text": "رأي" - }, - { - "pos": "NOUN", - "text": "أصحابها" - }, - { - "pos": "NOUN_PROP", - "text": "انشر" - }, - { - "pos": "NOUN_PROP", - "text": "تعليقك" - }, - { - "pos": "PREP", - "text": "عن" - }, - { - "pos": "NOUN", - "text": "طريق" - }, - { - "pos": "PUNC", - "text": ":" - }, - { - "pos": "NOUN", - "text": "التعليق" - }, - { - "pos": "ADJ", - "text": "الأحدث" - }, - { - "pos": "NOUN", - "text": "إظهار" - }, - { - "pos": "NUM", - "text": "0" - }, - { - "pos": "PUNC", - "text": "/" - }, - { - "pos": "NUM", - "text": "0" - }, - { - "pos": "NOUN", - "text": "تعليقات" - }, - { - "pos": "ADJ", - "text": "أظهر" - }, - { - "pos": "NOUN", - "text": "تعليقات" - }, - { - "pos": "ADJ", - "text": "أكثر" - }, - { - "pos": "PV", - "text": "اقرأ" - }, - { - "pos": "ADV", - "text": "أيضاً" - }, - { - "pos": "NOUN", - "text": "جميع" - }, - { - "pos": "NOUN", - "text": "الحقوق" - }, - { - "pos": "NOUN", - "text": "محفوظة" - }, - { - "pos": "NON_ARABIC", - "text": "©" - }, - { - "pos": "NUM", - "text": "2015" - }, - { - "pos": "NOUN", - "text": "الجزيرة" - }, - { - "pos": "PUNC", - "text": "|" - }, - { - "pos": "PUNC", - "text": ":" - }, - { - "pos": "NON_ARABIC", - "text": "Powerd" - }, - { - "pos": "NON_ARABIC", - "text": "by" - } + "NON_ARABIC", + "NON_ARABIC", + "ADJ", + "NOUN", + "IV", + "NOUN", + "PREP", + "NOUN", + "NOUN", + "PREP", + "NOUN_PROP", + "NUM", + "NOUN_PROP", + "PUNC", + "NOUN_PROP", + "NUM", + "NON_ARABIC", + "NON_ARABIC", + "NON_ARABIC", + "NON_ARABIC", + "NON_ARABIC", + "IV", + "NOUN", + "SUB_CONJ", + "NOUN_PROP", + "NOUN_PROP", + "IV", + "PREP", + "NOUN", + "ADJ", + "PV", + "NOUN", + "ADJ", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "ADJ", + "PREP", + "NOUN_PROP", + "PREP", + "NOUN", + "PUNC", + "DEM_PRON", + "PREP", + "NOUN", + "NOUN_PROP", + "NOUN", + "NOUN", + "IV", + "NOUN", + "NUM", + "NUM", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "NOUN", + "PREP", + "REL_PRON", + "PV", + "PUNC", + "NOUN", + "ADJ", + "PUNC", + "IV", + "NOUN_PROP", + "NOUN_PROP", + "ADJ", + "EOS", + "PV", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN", + "NOUN", + "PREP", + "NOUN", + "NOUN", + "NOUN", + "PUNC", + "PART", + "NOUN", + "IV", + "PREP", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "PREP", + "NOUN_PROP", + "NOUN", + "PREP", + "NOUN", + "PUNC", + "SUB_CONJ", + "IV", + "PREP", + "NOUN", + "ADJ", + "CONJ", + "NOUN", + "NOUN_PROP", + "NOUN", + "NOUN", + "NOUN", + "ADV", + "EXCEPT_PART", + "NOUN", + "ADJ", + "PREP", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "PREP", + "NOUN_PROP", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "EOS", + "PUNC", + "PREP", + "NOUN", + "ADJ", + "PUNC", + "PV", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN", + "PRONOUN", + "PUNC", + "PV", + "NOUN", + "NOUN", + "PREP", + "NOUN", + "PREP", + "NOUN_PROP", + "PREP", + "NOUN", + "NOUN", + "PRONOUN", + "DEM_PRON", + "NOUN", + "PREP", + "NOUN", + "NOUN", + "EOS", + "PUNC", + "PV", + "NOUN", + "NOUN", + "ADJ", + "ADJ", + "SUB_CONJ", + "NOUN", + "NOUN", + "PV", + "ADV", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN_PROP", + "PREP", + "NOUN", + "ADJ", + "EOS", + "PV", + "NOUN", + "NOUN", + "VERB_PART", + "PV", + "PREP", + "NOUN", + "NOUN", + "PREP", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "SUB_CONJ", + "NOUN_PROP", + "PV", + "PUNC", + "NOUN", + "ADJ", + "ADJ", + "ADJ", + "PREP", + "NOUN", + "NOUN_PROP", + "NOUN_PROP", + "PREP", + "NOUN", + "ADJ", + "EOS", + "PUNC", + "PV", + "NOUN", + "SUB_CONJ", + "NOUN_PROP", + "PUNC", + "IV", + "PREP", + "NOUN", + "NOUN", + "ADJ", + "NOUN", + "PREP", + "NOUN", + "ADJ", + "EOS", + "PUNC", + "IV_PASS", + "SUB_CONJ", + "NOUN_PROP", + "NOUN_PROP", + "ADJ", + "IV", + "PREP", + "NOUN_PROP", + "NOUN", + "NOUN", + "NOUN", + "NOUN_PROP", + "NOUN_PROP", + "PUNC", + "IV", + "PREP", + "DEM_PRON", + "NOUN_PROP", + "REL_PRON", + "PV", + "ADJ", + "NOUN", + "PRONOUN", + "PREP", + "NOUN", + "ADJ", + "EOS", + "PV", + "NOUN", + "VERB_PART", + "PV", + "NOUN", + "ADJ", + "PREP", + "NOUN_PROP", + "PREP", + "NOUN", + "NOUN", + "ADJ", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN_PROP", + "EOS", + "PV", + "NOUN", + "IV", + "PREP", + "NOUN", + "ADJ", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "ADJ", + "ADJ", + "ADJ", + "EOS", + "PV", + "PREP", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN_PROP", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN_PROP", + "ADJ", + "PUNC", + "REL_PRON", + "PV", + "PRONOUN", + "NOUN", + "NOUN", + "ADJ", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "PREP", + "NOUN_PROP", + "NOUN_PROP", + "NOUN", + "EOS", + "PV", + "NOUN", + "ADJ", + "ADJ", + "VERB_PART", + "PV", + "NOUN", + "ADJ", + "SUB_CONJ", + "NOUN_PROP", + "NEG_PART", + "IV", + "PREP", + "NOUN", + "ADJ", + "REL_PRON", + "PV", + "NOUN", + "REL_PRON", + "PV", + "NOUN", + "PREP", + "NOUN_PROP", + "NOUN", + "PREP", + "NOUN", + "NOUN", + "ADJ", + "SUB_CONJ", + "PV", + "DEM_PRON", + "PREP", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "CONJ", + "NOUN", + "NOUN", + "NOUN", + "ADJ", + "EOS" ], - "requestId": "8ea04ca1-c708-4bb1-a652-1599fc02268a", - "timers": { - "rblJe": 58, - "rliJe": 4, - "textExtractor": 48, - "urlContentDownloader": 166 - } + "tokens": [ + "BBC", + "Arabic", + "السعودية", + "والامارات", + "تحثان", + "رعاياهما", + "على", + "تجنب", + "السفر", + "الى", + "لبنان", + "23", + "فبراير", + "/", + "شباط", + "2016", + "Image", + "copyright", + "AFP", + "Image", + "caption", + "يقول", + "السعوديون", + "إن", + "حزب", + "الله", + "يهيمن", + "على", + "الدولة", + "اللبنانية", + "حثت", + "الحكومة", + "السعودية", + "يوم", + "الثلاثاء", + "الرعايا", + "السعوديين", + "المقيمين", + "في", + "لبنان", + "على", + "المغادرة", + "،", + "وذلك", + "عقب", + "ايقاف", + "الرياض", + "لبرنامج", + "مساعدات", + "تبلغ", + "قيمته", + "3", + "مليارات", + "دولار", + "لتسليح", + "القوات", + "اللبنانية", + "ردا", + "على", + "ما", + "وصفته", + "\"", + "بمواقف", + "معادية", + "\"", + "تتعلق", + "بحزب", + "الله", + "اللبناني", + ".", + "ونقلت", + "وكالة", + "الانباء", + "السعودية", + "عن", + "مصدر", + "مسؤول", + "في", + "وزارة", + "الخارجية", + "قوله", + "\"", + "إن", + "الوزارة", + "تطلب", + "من", + "جميع", + "المواطنين", + "عدم", + "السفر", + "إلى", + "لبنان", + "حرصا", + "على", + "سلامتهم", + "،", + "كما", + "تطلب", + "من", + "المواطنين", + "المقيمين", + "أو", + "الزائرين", + "للبنان", + "المغادرة", + "وعدم", + "البقاء", + "هناك", + "إلا", + "للضرورة", + "القصوى", + "مع", + "توخي", + "الحيطة", + "والحذر", + "والاتصال", + "بسفارة", + "المملكة", + "في", + "بيروت", + "لتقديم", + "التسهيلات", + "والرعاية", + "اللازمة", + ".", + "\"", + "من", + "جانب", + "آخر", + "،", + "أعلنت", + "وزارة", + "الخارجية", + "والتعاون", + "الدولي", + "في", + "الامارات", + "انها", + "\"", + "رفعت", + "حالة", + "التحذير", + "من", + "السفر", + "الى", + "لبنان", + "الى", + "منع", + "السفر", + "اليه", + "وذلك", + "اعتبارا", + "من", + "اليوم", + "الثلاثاء", + ".", + "\"", + "وقالت", + "وكالة", + "الانباء", + "الاماراتية", + "الرسمية", + "ان", + "وزارة", + "الخارجية", + "قررت", + "ايضا", + "تخفيض", + "أفراد", + "بعثتها", + "الدبلوماسية", + "في", + "بيروت", + "الى", + "حدها", + "الأدنى", + ".", + "وكان", + "مسؤول", + "سعودي", + "قد", + "قال", + "في", + "معرض", + "اعلانه", + "عن", + "وقف", + "برنامج", + "المساعدات", + "يوم", + "الجمعة", + "الماضي", + "إن", + "الرياض", + "لاحظت", + "\"", + "مواقف", + "لبنانية", + "معادية", + "ناتجة", + "عن", + "هيمنة", + "حزب", + "الله", + "على", + "الدولة", + "اللبنانية", + ".", + "\"", + "وقال", + "المسؤول", + "إن", + "الرياض", + "\"", + "تعكف", + "على", + "اجراء", + "استعراض", + "شامل", + "لعلاقاتها", + "مع", + "الجمهورية", + "اللبنانية", + ".", + "\"", + "يذكر", + "ان", + "حزب", + "الله", + "اللبناني", + "يحارب", + "في", + "سوريا", + "دعما", + "لحكومة", + "الرئيس", + "بشار", + "الاسد", + "،", + "تساندها", + "في", + "ذلك", + "ايران", + "التي", + "قطعت", + "السعودية", + "علاقاتها", + "معها", + "في", + "وقت", + "سابق", + ".", + "وكان", + "السعوديون", + "قد", + "قطعوا", + "علاقاتهم", + "الدبلوماسية", + "مع", + "ايران", + "بعد", + "اقتحام", + "متظاهرين", + "ايرانيين", + "لمقر", + "السفارة", + "السعودية", + "في", + "طهران", + ".", + "وكان", + "المتظاهرون", + "يحتجون", + "على", + "تنفيذ", + "السعودية", + "حكم", + "الاعدام", + "برجل", + "الدين", + "السعودي", + "الشيعي", + "نمر", + "النمر", + ".", + "وكان", + "من", + "تأثيرات", + "الحرب", + "الدائرة", + "في", + "سوريا", + "زيادة", + "الاستقطاب", + "السياسي", + "في", + "لبنان", + "المجاور", + "،", + "الذي", + "تعذر", + "عليه", + "اختيار", + "رئيس", + "جديد", + "للجمهورية", + "لعامين", + "تقريبا", + "نتيجة", + "الخلافات", + "العميقة", + "بين", + "حزب", + "الله", + "ومنافسيه", + ".", + "وكان", + "المسؤول", + "السعودي", + "المذكور", + "قد", + "قال", + "الجمعة", + "الماضي", + "إن", + "لبنان", + "لم", + "ينضم", + "الى", + "الدول", + "العربية", + "التي", + "ادانت", + "الهجمات", + "التي", + "استهدفت", + "سفارتها", + "في", + "طهران", + "وقنصليتها", + "في", + "مدينة", + "مشهد", + "الايرانية", + "إن", + "كان", + "ذلك", + "في", + "اطار", + "جامعة", + "الدول", + "العربية", + "او", + "اطار", + "منظمة", + "التعاون", + "الاسلامي", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-url-sentiment.json b/api/src/test/mock-data/response/ara-url-sentiment.json index 7bff27375a..6d96bbe886 100644 --- a/api/src/test/mock-data/response/ara-url-sentiment.json +++ b/api/src/test/mock-data/response/ara-url-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Arabic is not supported by Rosette Sentiment Analyzer", - "requestId": "1800a8e9-1f9f-4ca4-b49c-387933f5dd6e" + "message": "Unsupported language: Arabic" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/bad_info.json b/api/src/test/mock-data/response/bad_info.json deleted file mode 100644 index f63e527adc..0000000000 --- a/api/src/test/mock-data/response/bad_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "buildNumber": "6bafb29d", - "buildTime": "2015.05.08_12:31:26", - "name": "Rosette API", - "version": "0.3.0" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/checkVersion.json b/api/src/test/mock-data/response/checkVersion.json deleted file mode 100644 index bc284e6456..0000000000 --- a/api/src/test/mock-data/response/checkVersion.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "buildNumber": "6bafb29d", - "buildTime": "2015.05.08_12:31:26", - "name": "Rosette API", - "version": "0.4.0", - "versionChecked": false -} diff --git a/api/src/test/mock-data/response/eng-doc-categories.json b/api/src/test/mock-data/response/eng-doc-categories.json index 0466f6b0f6..bf737c48be 100644 --- a/api/src/test/mock-data/response/eng-doc-categories.json +++ b/api/src/test/mock-data/response/eng-doc-categories.json @@ -1,14 +1,8 @@ { "categories": [ { - "confidence": 0.22093012022706549, - "label": "TECHNOLOGY_AND_COMPUTING" + "confidence": 0.10311497961039122, + "label": "LAW_GOVERNMENT_AND_POLITICS" } - ], - "requestId": "297a0f9c-7a94-4ecd-ae76-0c08ebce3ce9", - "timers": { - "cat": 57, - "rblJe": 15, - "rliJe": 21 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-doc-entities.json b/api/src/test/mock-data/response/eng-doc-entities.json index 8eb0a3b322..0e949abf2c 100644 --- a/api/src/test/mock-data/response/eng-doc-entities.json +++ b/api/src/test/mock-data/response/eng-doc-entities.json @@ -1,154 +1,40 @@ { "entities": [ { - "confidence": 1.0, - "count": 17, + "count": 2, "indocChainId": 0, - "mention": "Samsung", - "normalized": "Samsung", - "type": "ORGANIZATION" - }, - { - "confidence": 0.04526931473187038, - "count": 14, - "indocChainId": 3, - "mention": "Apple", - "normalized": "Apple", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 7, - "indocChainId": 10, "mention": "U.S.", "normalized": "U.S.", "type": "LOCATION" }, { - "confidence": 0.026389598846435547, - "count": 3, - "indocChainId": 7, - "mention": "judge", - "normalized": "judge", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 13, - "mention": "South Korean", - "normalized": "South Korean", - "type": "NATIONALITY" - }, - { - "confidence": 0.03619256615638733, - "count": 2, - "indocChainId": 15, - "mention": "iPad", - "normalized": "iPad", - "type": "PRODUCT" - }, - { - "confidence": 0.026187777519226074, - "count": 2, - "indocChainId": 20, - "mention": "District Judge", - "normalized": "District Judge", - "type": "TITLE" - }, - { - "confidence": 0.028430074453353882, - "count": 2, - "indocChainId": 21, - "mention": "Lucy Koh", - "normalized": "Lucy Koh", - "type": "PERSON" - }, - { - "confidence": 0.011759281158447266, - "count": 2, - "indocChainId": 21, - "mention": "Koh", - "normalized": "Koh", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 52, - "mention": "Australia", - "normalized": "Australia", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 2, - "mention": "Samsung Electronics", - "normalized": "Samsung Electronics", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 10, - "mention": "United States", - "normalized": "United States", - "type": "LOCATION" - }, - { - "confidence": 0.02483654022216797, - "count": 1, - "indocChainId": 14, - "mention": "iPhone", - "normalized": "iPhone", - "type": "PRODUCT" - }, - { - "confidence": 0.018296480178833008, - "count": 1, - "indocChainId": 33, - "mention": "Tab 10.1", - "normalized": "Tab 10.1", - "type": "PRODUCT" - }, - { - "confidence": 0.04169809818267822, "count": 1, - "indocChainId": 48, - "mention": "Silicon Valley", - "normalized": "Silicon Valley", + "indocChainId": 1, + "mention": "Iraq", + "normalized": "Iraq", "type": "LOCATION" }, { - "confidence": 0.026794254779815674, "count": 1, - "indocChainId": 50, - "mention": "iPads", - "normalized": "iPads", - "type": "PRODUCT" + "indocChainId": 2, + "mention": "Afghanistan", + "normalized": "Afghanistan", + "type": "LOCATION", + "salience": 1.0 }, { - "confidence": 0.009662508964538574, "count": 1, - "indocChainId": 58, - "mention": "Galaxy Tablet", - "normalized": "Galaxy Tablet", - "type": "PRODUCT" + "indocChainId": 3, + "mention": "commander in chief", + "normalized": "commander in chief", + "type": "TITLE" }, { - "confidence": 1.0, "count": 1, - "indocChainId": 60, - "mention": "http://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html", - "normalized": "http://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html", - "type": "IDENTIFIER:URL" + "indocChainId": 4, + "mention": "American", + "normalized": "American", + "type": "NATIONALITY" } - ], - "requestId": "2be64f9f-6246-4366-aab3-16f635ed87a5", - "timers": { - "rblJe": 29, - "rexJe": 656, - "rliJe": 35 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-doc-entities_linked.json b/api/src/test/mock-data/response/eng-doc-entities_linked.json index d1e6b56711..17c54d72d0 100644 --- a/api/src/test/mock-data/response/eng-doc-entities_linked.json +++ b/api/src/test/mock-data/response/eng-doc-entities_linked.json @@ -1,53 +1,25 @@ { "entities": [ { - "confidence": 0.6282070187492331, - "entityId": "Q20716", - "indocChainId": 0, - "mention": "Samsung" - }, - { - "confidence": 0.6082548910251077, - "entityId": "Q20718", - "indocChainId": 2, - "mention": "Samsung Electronics" - }, - { - "confidence": 0.4768006169371888, - "entityId": "Q312", - "indocChainId": 3, - "mention": "Apple" - }, - { - "confidence": 0.18249321564878832, + "confidence": 0.6191439548350202, "entityId": "Q30", - "indocChainId": 10, - "mention": "United States" - }, - { - "confidence": 0.7551336788984114, - "entityId": "Q6698345", - "indocChainId": 21, - "mention": "Lucy Koh" + "indocChainId": 0, + "mention": "U.S.", + "linkingConfidence": 0.5 }, { - "confidence": 0.6516717886866707, - "entityId": "Q163820", - "indocChainId": 48, - "mention": "Silicon Valley" - }, + "confidence": 0.1883195998298547, + "entityId": "Q796", + "indocChainId": 1, + "mention": "Iraq", + "linkingConfidence": 0.5 + }, { - "confidence": 0.10282757678523663, - "entityId": "Q408", - "indocChainId": 52, - "mention": "Australia" + "confidence": 0.16953509200793812, + "entityId": "Q889", + "indocChainId": 2, + "mention": "Afghanistan", + "linkingConfidence": 0.5 } - ], - "requestId": "547f4ef0-8052-41bc-b019-bbc78330150b", - "timers": { - "rblJe": 25, - "res": 1996, - "rexJe": 117, - "rliJe": 28 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-doc-entities_permid.json b/api/src/test/mock-data/response/eng-doc-entities_permid.json new file mode 100644 index 0000000000..1f5e718afc --- /dev/null +++ b/api/src/test/mock-data/response/eng-doc-entities_permid.json @@ -0,0 +1,34 @@ +{ + "entities": [ + { + "type": "ORGANIZATION", + "mention": "Toyota", + "normalized": "Toyota", + "count": 1, + "mentionOffsets": [ + { + "startOffset": 0, + "endOffset": 6 + } + ], + "entityId": "Q53268", + "linkingConfidence": 0.45885878, + "permId": "4295876746" + }, + { + "type": "ORGANIZATION", + "mention": "Microsoft", + "normalized": "Microsoft", + "count": 1, + "mentionOffsets": [ + { + "startOffset": 11, + "endOffset": 20 + } + ], + "entityId": "Q2283", + "linkingConfidence": 0.76733641, + "permId": "4295907168" + } + ] +} diff --git a/api/src/test/mock-data/response/checkVersion.status b/api/src/test/mock-data/response/eng-doc-entities_permid.status similarity index 100% rename from api/src/test/mock-data/response/checkVersion.status rename to api/src/test/mock-data/response/eng-doc-entities_permid.status diff --git a/api/src/test/mock-data/response/eng-doc-language.json b/api/src/test/mock-data/response/eng-doc-language.json index da87959648..dcb74180aa 100644 --- a/api/src/test/mock-data/response/eng-doc-language.json +++ b/api/src/test/mock-data/response/eng-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.031016215246239986, + "confidence": 1.0, "language": "eng" - }, - { - "confidence": 0.0038646976772234165, - "language": "nor" - }, - { - "confidence": 0.0038272337158813396, - "language": "ita" - }, - { - "confidence": 0.003474111402636648, - "language": "fra" - }, - { - "confidence": 0.0034140923041809934, - "language": "deu" } - ], - "requestId": "331b2b91-872a-4b03-8791-6676f228824b", - "timers": { - "rliJe": 57 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-doc-morphology_complete.json b/api/src/test/mock-data/response/eng-doc-morphology_complete.json index de25bc258a..d6830cdc90 100644 --- a/api/src/test/mock-data/response/eng-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/eng-doc-morphology_complete.json @@ -1,3669 +1,272 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "can", - "text": "Can" - }, - { - "lemma": "sell", - "text": "Sell" - }, - { - "lemma": "it", - "text": "Its" - }, - { - "lemma": "tablet", - "text": "Tablet" - }, - { - "lemma": "in", - "text": "In" - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "market", - "text": "Market" - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "war", - "text": "war" - }, - { - "lemma": "between", - "text": "between" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "Electronic", - "text": "Electronics" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "seem", - "text": "seems" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "be", - "text": "be" - }, - { - "lemma": "never", - "text": "never" - }, - { - "lemma": "end", - "text": "ending" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "company", - "text": "companies" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "engage", - "text": "engaged" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "international", - "text": "international" - }, - { - "lemma": "warfare", - "text": "warfare" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "across", - "text": "across" - }, - { - "lemma": "continent", - "text": "continents" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "with", - "text": "with" - }, - { - "lemma": "more", - "text": "more" - }, - { - "lemma": "than", - "text": "than" - }, - { - "lemma": "20", - "text": "20" - }, - { - "lemma": "case", - "text": "cases" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "10", - "text": "10" - }, - { - "lemma": "country", - "text": "countries" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "late", - "text": "latest" - }, - { - "lemma": "news", - "text": "news" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "vs", - "text": "vs" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "conflict", - "text": "conflict" - }, - { - "lemma": "come", - "text": "comes" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "where", - "text": "where" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "judge", - "text": "judge" - }, - { - "lemma": "decide", - "text": "decided" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "can", - "text": "can" - }, - { - "lemma": "sell", - "text": "sell" - }, - { - "lemma": "it", - "text": "its" - }, - { - "lemma": "tablet", - "text": "tablet" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "market", - "text": "market" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "in", - "text": "In" - }, - { - "lemma": "United", - "text": "United" - }, - { - "lemma": "State", - "text": "States" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "initiate", - "text": "initiated" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "legal", - "text": "legal" - }, - { - "lemma": "action", - "text": "action" - }, - { - "lemma": "against", - "text": "against" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "April", - "text": "April" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "claim", - "text": "claiming" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "South", - "text": "South" - }, - { - "lemma": "Korean", - "text": "Korean" - }, - { - "lemma": "smartphones", - "text": "smartphones" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "tablet", - "text": "tablets" - }, - { - "lemma": "“", - "text": "“" - }, - { - "lemma": "slavishly", - "text": "slavishly" - }, - { - "lemma": "”", - "text": "”" - }, - { - "lemma": "copy", - "text": "copy" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "iPhone", - "text": "iPhone" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "iPad", - "text": "iPad" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "as", - "text": "As" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "result", - "text": "result" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "request", - "text": "requested" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "will", - "text": "will" - }, - { - "lemma": "be", - "text": "be" - }, - { - "lemma": "prohibit", - "text": "prohibited" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "sell", - "text": "selling" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "gadget", - "text": "gadgets" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "market", - "text": "market" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "much", - "text": "much" - }, - { - "lemma": "expected", - "text": "expected" - }, - { - "lemma": "ruling", - "text": "ruling" - }, - { - "lemma": "come", - "text": "came" - }, - { - "lemma": "late", - "text": "late" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "as", - "text": "as" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "District", - "text": "District" - }, - { - "lemma": "judge", - "text": "Judge" - }, - { - "lemma": "Lucy", - "text": "Lucy" - }, - { - "lemma": "Koh", - "text": "Koh" - }, - { - "lemma": "deny", - "text": "denied" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "request", - "text": "request" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "preliminary", - "text": "preliminary" - }, - { - "lemma": "injuction", - "text": "injuction" - }, - { - "lemma": "against", - "text": "against" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "District", - "text": "District" - }, - { - "lemma": "judge", - "text": "Judge" - }, - { - "lemma": "Lucy", - "text": "Lucy" - }, - { - "lemma": "Koh", - "text": "Koh" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "“", - "text": "“" - }, - { - "lemma": "it", - "text": "It" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "not", - "text": "not" - }, - { - "lemma": "clear", - "text": "clear" - }, - { - "lemma": "than", - "text": "than" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "injuction", - "text": "injuction" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "accused", - "text": "accused" - }, - { - "lemma": "device", - "text": "devices" - }, - { - "lemma": "would", - "text": "would" - }, - { - "lemma": "prevent", - "text": "prevent" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "be", - "text": "being" - }, - { - "lemma": "irreparably", - "text": "irreparably" - }, - { - "lemma": "harm", - "text": "harmed" - }, - { - "lemma": "”", - "text": "”" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "as", - "text": "As" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "result", - "text": "result" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Koh", - "text": "Koh" - }, - { - "lemma": "reject", - "text": "rejected" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "request", - "text": "request" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "bid", - "text": "bid" - }, - { - "lemma": "sale", - "text": "sales" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "three", - "text": "three" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "smartphones", - "text": "smartphones" - }, - { - "lemma": "model", - "text": "models" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "Tab", - "text": "Tab" - }, - { - "lemma": "10.1", - "text": "10.1" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "in", - "text": "In" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "three", - "text": "third" - }, - { - "lemma": "quarter", - "text": "quarter" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "have", - "text": "had" - }, - { - "lemma": "23.8", - "text": "23.8" - }, - { - "lemma": "percent", - "text": "percent" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "global", - "text": "global" - }, - { - "lemma": "smartphone", - "text": "smartphone" - }, - { - "lemma": "market", - "text": "market" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "nine", - "text": "nine" - }, - { - "lemma": "point", - "text": "points" - }, - { - "lemma": "high", - "text": "higher" - }, - { - "lemma": "than", - "text": "than" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "judge", - "text": "judge" - }, - { - "lemma": "write", - "text": "wrote" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "“", - "text": "“" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "establish", - "text": "established" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "likelihood", - "text": "likelihood" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "success", - "text": "success" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "merit", - "text": "merits" - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "trial", - "text": "trial" - }, - { - "lemma": "”", - "text": "”" - }, - { - "lemma": "regard", - "text": "regarding" - }, - { - "lemma": "some", - "text": "some" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "smartphones", - "text": "smartphones" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "would", - "text": "would" - }, - { - "lemma": "likely", - "text": "likely" - }, - { - "lemma": "prove", - "text": "prove" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "infringe", - "text": "infringed" - }, - { - "lemma": "one", - "text": "one" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "it", - "text": "its" - }, - { - "lemma": "tablet", - "text": "tablet" - }, - { - "lemma": "patent", - "text": "patents" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "but", - "text": "but" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "do", - "text": "did" - }, - { - "lemma": "not", - "text": "not" - }, - { - "lemma": "show", - "text": "show" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "be", - "text": "was" - }, - { - "lemma": "likely", - "text": "likely" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "overcome", - "text": "overcome" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "challenge", - "text": "challenges" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "patent", - "text": "patent" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "validity", - "text": "validity" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "although", - "text": "Although" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "might", - "text": "might" - }, - { - "lemma": "be", - "text": "be" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "minor", - "text": "minor" - }, - { - "lemma": "victory", - "text": "victory" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "as", - "text": "as" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "still", - "text": "still" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "high", - "text": "high" - }, - { - "lemma": "change", - "text": "changes" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "win", - "text": "winning" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "overall", - "text": "overall" - }, - { - "lemma": "lawsuit", - "text": "lawsuit" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Koh", - "text": "Koh" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "decision", - "text": "decision" - }, - { - "lemma": "make", - "text": "makes" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "possible", - "text": "possible" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "South", - "text": "South" - }, - { - "lemma": "Korean", - "text": "Korean" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "start", - "text": "start" - }, - { - "lemma": "Christmas", - "text": "Christmas" - }, - { - "lemma": "sale", - "text": "sales" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "analyst", - "text": "Analysts" - }, - { - "lemma": "say", - "text": "say" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "global", - "text": "global" - }, - { - "lemma": "tablet", - "text": "tablet" - }, - { - "lemma": "sale", - "text": "sales" - }, - { - "lemma": "be", - "text": "are" - }, - { - "lemma": "expect", - "text": "expected" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "boost", - "text": "boost" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "more", - "text": "more" - }, - { - "lemma": "than", - "text": "than" - }, - { - "lemma": "50", - "text": "50" - }, - { - "lemma": "million", - "text": "million" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "year", - "text": "year" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "with", - "text": "with" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "still", - "text": "still" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "leader", - "text": "leader" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "market", - "text": "market" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "silicone", - "text": "Silicon" - }, - { - "lemma": "valley", - "text": "Valley" - }, - { - "lemma": "base", - "text": "based" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "sell", - "text": "sold" - }, - { - "lemma": "11.12", - "text": "11.12" - }, - { - "lemma": "million", - "text": "million" - }, - { - "lemma": "unit", - "text": "units" - }, - { - "lemma": "during", - "text": "during" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "September", - "text": "September" - }, - { - "lemma": "quarter", - "text": "quarter" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "so", - "text": "So" - }, - { - "lemma": "far", - "text": "far" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "sell", - "text": "sold" - }, - { - "lemma": "more", - "text": "more" - }, - { - "lemma": "than", - "text": "than" - }, - { - "lemma": "30", - "text": "30" - }, - { - "lemma": "million", - "text": "million" - }, - { - "lemma": "iPads", - "text": "iPads" - }, - { - "lemma": "worldwide", - "text": "worldwide" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "last", - "text": "Last" - }, - { - "lemma": "week", - "text": "week" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "judge", - "text": "judge" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Australia", - "text": "Australia" - }, - { - "lemma": "rule", - "text": "ruled" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "favor", - "text": "favor" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "apple", - "text": "Apple" - }, - { - "lemma": "by", - "text": "by" - }, - { - "lemma": "extend", - "text": "extending" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "ban", - "text": "ban" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "'s", - "text": "’s" - }, - { - "lemma": "iPad", - "text": "iPad" - }, - { - "lemma": "sale", - "text": "sales" - }, - { - "lemma": "within", - "text": "within" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "country", - "text": "country" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Australia", - "text": "Australia" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "key", - "text": "key" - }, - { - "lemma": "market", - "text": "market" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "galaxy", - "text": "Galaxy" - }, - { - "lemma": "tablet", - "text": "Tablet" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "two", - "text": "two" - }, - { - "lemma": "week", - "text": "weeks" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "banned", - "text": "banned" - }, - { - "lemma": "sale", - "text": "sales" - }, - { - "lemma": "be not", - "text": "isn’t" - }, - { - "lemma": "much", - "text": "much" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "but", - "text": "but" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "can", - "text": "can" - }, - { - "lemma": "get", - "text": "get" - }, - { - "lemma": "urgent", - "text": "urgent" - }, - { - "lemma": "if", - "text": "if" - }, - { - "lemma": "Samsung", - "text": "Samsung" - }, - { - "lemma": "will not", - "text": "won’t" - }, - { - "lemma": "start", - "text": "start" - }, - { - "lemma": "sell", - "text": "selling" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "gadget", - "text": "gadget" - }, - { - "lemma": "before", - "text": "before" - }, - { - "lemma": "Christmas", - "text": "Christmas" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "newsinabox.net", - "text": "newsinabox.net" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2202", - "text": "2202" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "samsung", - "text": "samsung" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "can", - "text": "can" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "sell", - "text": "sell" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "it", - "text": "its" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "tablet", - "text": "tablet" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "u", - "text": "u" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "s", - "text": "s" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "market.html", - "text": "market.html" - }, - { - "lemma": "2011.12.05", - "text": "2011.12.05" - } + "he", + "also", + "acknowledge", + "the", + "ongoing", + "U.S.", + "conflict", + "in", + "Iraq", + "and", + "Afghanistan", + ",", + "note", + "that", + "he", + "be", + "the", + "\"", + "commander", + "in", + "chief", + "of", + "a", + "country", + "that", + "be", + "responsible", + "for", + "end", + "a", + "war", + "and", + "working", + "in", + "another", + "theater", + "to", + "confront", + "a", + "ruthless", + "adversary", + "that", + "directly", + "threaten", + "the", + "American", + "people", + "\"", + "and", + "U.S.", + "ally", + "." ], "posTags": [ - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "VAUX", - "text": "Can" - }, - { - "pos": "VI", - "text": "Sell" - }, - { - "pos": "DET", - "text": "Its" - }, - { - "pos": "NOUN", - "text": "Tablet" - }, - { - "pos": "PREP", - "text": "In" - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "VPRES", - "text": "Market" - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "NOUN", - "text": "war" - }, - { - "pos": "PREP", - "text": "between" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "PROP", - "text": "Electronics" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "VPRES", - "text": "seems" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VBI", - "text": "be" - }, - { - "pos": "ADV", - "text": "never" - }, - { - "pos": "PARTPRES", - "text": "ending" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "NOUN", - "text": "companies" - }, - { - "pos": "VHPRES", - "text": "have" - }, - { - "pos": "VPAP", - "text": "engaged" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "an" - }, - { - "pos": "ADJ", - "text": "international" - }, - { - "pos": "NOUN", - "text": "warfare" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "across" - }, - { - "pos": "NOUN", - "text": "continents" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "with" - }, - { - "pos": "QUANTCMP", - "text": "more" - }, - { - "pos": "COTHAN", - "text": "than" - }, - { - "pos": "CARD", - "text": "20" - }, - { - "pos": "NOUN", - "text": "cases" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "CARD", - "text": "10" - }, - { - "pos": "NOUN", - "text": "countries" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "ADJSUP", - "text": "latest" - }, - { - "pos": "NOUN", - "text": "news" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "PREP", - "text": "vs" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "NOUN", - "text": "conflict" - }, - { - "pos": "VPRES", - "text": "comes" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "COSUB", - "text": "where" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "judge" - }, - { - "pos": "VPAST", - "text": "decided" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "VAUX", - "text": "can" - }, - { - "pos": "VI", - "text": "sell" - }, - { - "pos": "DET", - "text": "its" - }, - { - "pos": "NOUN", - "text": "tablet" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "market" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "In" - }, - { - "pos": "PROP", - "text": "United" - }, - { - "pos": "PROP", - "text": "States" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "VPAST", - "text": "initiated" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "legal" - }, - { - "pos": "NOUN", - "text": "action" - }, - { - "pos": "PREP", - "text": "against" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "April" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PARTPRES", - "text": "claiming" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "South" - }, - { - "pos": "ADJ", - "text": "Korean" - }, - { - "pos": "NOUN", - "text": "smartphones" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "NOUN", - "text": "tablets" - }, - { - "pos": "PUNCT", - "text": "“" - }, - { - "pos": "ADV", - "text": "slavishly" - }, - { - "pos": "PUNCT", - "text": "”" - }, - { - "pos": "VPRES", - "text": "copy" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "iPhone" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "iPad" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREPADVAS", - "text": "As" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "result" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "VPAST", - "text": "requested" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "VAUX", - "text": "will" - }, - { - "pos": "VBI", - "text": "be" - }, - { - "pos": "VPAP", - "text": "prohibited" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "PARTPRES", - "text": "selling" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "gadgets" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "market" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "QUANTADV", - "text": "much" - }, - { - "pos": "ADJPAP", - "text": "expected" - }, - { - "pos": "NOUNING", - "text": "ruling" - }, - { - "pos": "VPAST", - "text": "came" - }, - { - "pos": "ADV", - "text": "late" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREPADVAS", - "text": "as" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "PROP", - "text": "District" - }, - { - "pos": "NOUN", - "text": "Judge" - }, - { - "pos": "PROP", - "text": "Lucy" - }, - { - "pos": "PROP", - "text": "Koh" - }, - { - "pos": "VPAST", - "text": "denied" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "NOUN", - "text": "request" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "preliminary" - }, - { - "pos": "NOUN", - "text": "injuction" - }, - { - "pos": "PREP", - "text": "against" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "PROP", - "text": "District" - }, - { - "pos": "NOUN", - "text": "Judge" - }, - { - "pos": "PROP", - "text": "Lucy" - }, - { - "pos": "PROP", - "text": "Koh" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PUNCT", - "text": "“" - }, - { - "pos": "PRONPERS", - "text": "It" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "NOT", - "text": "not" - }, - { - "pos": "VI", - "text": "clear" - }, - { - "pos": "COTHAN", - "text": "than" - }, - { - "pos": "DET", - "text": "an" - }, - { - "pos": "NOUN", - "text": "injuction" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "ADJPAP", - "text": "accused" - }, - { - "pos": "NOUN", - "text": "devices" - }, - { - "pos": "VAUX", - "text": "would" - }, - { - "pos": "VI", - "text": "prevent" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "PARTPRES", - "text": "being" - }, - { - "pos": "ADV", - "text": "irreparably" - }, - { - "pos": "VPAP", - "text": "harmed" - }, - { - "pos": "PUNCT", - "text": "”" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREPADVAS", - "text": "As" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "result" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Koh" - }, - { - "pos": "VPAST", - "text": "rejected" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "NOUN", - "text": "request" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "bid" - }, - { - "pos": "NOUN", - "text": "sales" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "CARD", - "text": "three" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "ADJ", - "text": "smartphones" - }, - { - "pos": "NOUN", - "text": "models" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "PROP", - "text": "Tab" - }, - { - "pos": "CARD", - "text": "10.1" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "In" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ORD", - "text": "third" - }, - { - "pos": "NOUN", - "text": "quarter" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "VHPAST", - "text": "had" - }, - { - "pos": "CARD", - "text": "23.8" - }, - { - "pos": "NOUN", - "text": "percent" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "global" - }, - { - "pos": "ADJ", - "text": "smartphone" - }, - { - "pos": "NOUN", - "text": "market" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CARD", - "text": "nine" - }, - { - "pos": "NOUN", - "text": "points" - }, - { - "pos": "ADJCMP", - "text": "higher" - }, - { - "pos": "COTHAN", - "text": "than" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "judge" - }, - { - "pos": "VPAST", - "text": "wrote" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PUNCT", - "text": "“" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "VPAP", - "text": "established" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "likelihood" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "success" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "merits" - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "NOUN", - "text": "trial" - }, - { - "pos": "PUNCT", - "text": "”" - }, - { - "pos": "PARTPRES", - "text": "regarding" - }, - { - "pos": "QUANT", - "text": "some" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "ADJ", - "text": "smartphones" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "VAUX", - "text": "would" - }, - { - "pos": "ADJ", - "text": "likely" - }, - { - "pos": "VI", - "text": "prove" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "VPAST", - "text": "infringed" - }, - { - "pos": "PRONONE", - "text": "one" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "its" - }, - { - "pos": "NOUN", - "text": "tablet" - }, - { - "pos": "NOUN", - "text": "patents" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "but" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VDPAST", - "text": "did" - }, - { - "pos": "NOT", - "text": "not" - }, - { - "pos": "VI", - "text": "show" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VBPAST", - "text": "was" - }, - { - "pos": "ADJ", - "text": "likely" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "overcome" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "NOUN", - "text": "challenges" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "patent" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "NOUN", - "text": "validity" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "Although" - }, - { - "pos": "PRON", - "text": "this" - }, - { - "pos": "VAUX", - "text": "might" - }, - { - "pos": "VBI", - "text": "be" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "minor" - }, - { - "pos": "NOUN", - "text": "victory" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREPADVAS", - "text": "as" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "ADV", - "text": "still" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "ADJ", - "text": "high" - }, - { - "pos": "NOUN", - "text": "changes" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PARTPRES", - "text": "winning" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "overall" - }, - { - "pos": "NOUN", - "text": "lawsuit" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Koh" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "NOUN", - "text": "decision" - }, - { - "pos": "VPRES", - "text": "makes" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "ADJ", - "text": "possible" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "South" - }, - { - "pos": "ADJ", - "text": "Korean" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "start" - }, - { - "pos": "PROP", - "text": "Christmas" - }, - { - "pos": "NOUN", - "text": "sales" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Analysts" - }, - { - "pos": "VPRES", - "text": "say" - }, - { - "pos": "DET", - "text": "that" - }, - { - "pos": "ADJ", - "text": "global" - }, - { - "pos": "NOUN", - "text": "tablet" - }, - { - "pos": "NOUN", - "text": "sales" - }, - { - "pos": "VBPRES", - "text": "are" - }, - { - "pos": "VPAP", - "text": "expected" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "boost" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "QUANTCMP", - "text": "more" - }, - { - "pos": "COTHAN", - "text": "than" - }, - { - "pos": "CARD", - "text": "50" - }, - { - "pos": "CARD", - "text": "million" - }, - { - "pos": "DET", - "text": "this" - }, - { - "pos": "NOUN", - "text": "year" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "with" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "ADV", - "text": "still" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "leader" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "market" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "NOUN", - "text": "Silicon" - }, - { - "pos": "NOUN", - "text": "Valley" - }, - { - "pos": "VPAST", - "text": "based" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "VPAST", - "text": "sold" - }, - { - "pos": "CARD", - "text": "11.12" - }, - { - "pos": "CARD", - "text": "million" - }, - { - "pos": "NOUN", - "text": "units" - }, - { - "pos": "PREP", - "text": "during" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "September" - }, - { - "pos": "NOUN", - "text": "quarter" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "So" - }, - { - "pos": "ADV", - "text": "far" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "VPAST", - "text": "sold" - }, - { - "pos": "QUANTCMP", - "text": "more" - }, - { - "pos": "COTHAN", - "text": "than" - }, - { - "pos": "CARD", - "text": "30" - }, - { - "pos": "CARD", - "text": "million" - }, - { - "pos": "PROP", - "text": "iPads" - }, - { - "pos": "ADJ", - "text": "worldwide" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADJ", - "text": "Last" - }, - { - "pos": "NOUN", - "text": "week" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "judge" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "Australia" - }, - { - "pos": "VPAST", - "text": "ruled" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "NOUN", - "text": "favor" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "Apple" - }, - { - "pos": "PREP", - "text": "by" - }, - { - "pos": "PARTPRES", - "text": "extending" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "ban" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "POSS", - "text": "’s" - }, - { - "pos": "ADJ", - "text": "iPad" - }, - { - "pos": "NOUN", - "text": "sales" - }, - { - "pos": "PREP", - "text": "within" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "country" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Australia" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "key" - }, - { - "pos": "NOUN", - "text": "market" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "NOUN", - "text": "Galaxy" - }, - { - "pos": "NOUN", - "text": "Tablet" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "CARD", - "text": "two" - }, - { - "pos": "NOUN", - "text": "weeks" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "ADJPAP", - "text": "banned" - }, - { - "pos": "NOUN", - "text": "sales" - }, - { - "pos": "VBPRES", - "text": "isn’t" - }, - { - "pos": "QUANTADV", - "text": "much" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "but" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VAUX", - "text": "can" - }, - { - "pos": "VI", - "text": "get" - }, - { - "pos": "ADJ", - "text": "urgent" - }, - { - "pos": "COSUB", - "text": "if" - }, - { - "pos": "PROP", - "text": "Samsung" - }, - { - "pos": "VAUX", - "text": "won’t" - }, - { - "pos": "VI", - "text": "start" - }, - { - "pos": "PARTPRES", - "text": "selling" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "gadget" - }, - { - "pos": "PREP", - "text": "before" - }, - { - "pos": "PROP", - "text": "Christmas" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADJ", - "text": "http" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "newsinabox.net" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "CARD", - "text": "2202" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "ADJ", - "text": "samsung" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN", - "text": "can" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "VPRES", - "text": "sell" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON", - "text": "its" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN", - "text": "tablet" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "u" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "s" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "market.html" - }, - { - "pos": "PROP", - "text": "2011.12.05" - } + "PRONPERS", + "ADV", + "VPAST", + "DET", + "ADJ", + "PROP", + "NOUN", + "PREP", + "PROP", + "COORD", + "PROP", + "CM", + "PARTPRES", + "COSUB", + "PRONPERS", + "VBPRES", + "DET", + "PUNCT", + "NOUN", + "PREP", + "ADJ", + "PREP", + "DET", + "NOUN", + "PRONREL", + "VBPRES", + "ADJ", + "PREP", + "PARTPRES", + "DET", + "NOUN", + "COORD", + "NOUNING", + "PREP", + "DET", + "NOUN", + "INFTO", + "VI", + "DET", + "ADJ", + "NOUN", + "COSUB", + "ADV", + "VPRES", + "DET", + "ADJ", + "NOUN", + "PUNCT", + "COORD", + "PROP", + "NOUN", + "SENT" ], - "requestId": "ef1351d7-17dc-4d25-bf1f-50209902a475", - "timers": { - "rblJe": 75, - "rliJe": 39 - } + "tokens": [ + "He", + "also", + "acknowledged", + "the", + "ongoing", + "U.S.", + "conflicts", + "in", + "Iraq", + "and", + "Afghanistan", + ",", + "noting", + "that", + "he", + "is", + "the", + "\"", + "commander", + "in", + "chief", + "of", + "a", + "country", + "that", + "is", + "responsible", + "for", + "ending", + "a", + "war", + "and", + "working", + "in", + "another", + "theater", + "to", + "confront", + "a", + "ruthless", + "adversary", + "that", + "directly", + "threatens", + "the", + "American", + "people", + "\"", + "and", + "U.S.", + "allies", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-doc-relationships.json b/api/src/test/mock-data/response/eng-doc-relationships.json index bf6c401f61..51ac462e76 100644 --- a/api/src/test/mock-data/response/eng-doc-relationships.json +++ b/api/src/test/mock-data/response/eng-doc-relationships.json @@ -1,185 +1,33 @@ { - "requestId": "f2bd0e5d-f9c8-4525-93fd-816025b291de", "relationships": [ { - "predicate": "seems", - "arg1": "The war between Samsung Electronics", - "arg2": "to be never ending" + "predicate": "Organization Headquarters", + "predicateId": "ORG-HEADQUARTERS", + "arg1": "FLIR Systems", + "arg1Id": "Q5426537", + "arg2": "Oregon", + "arg2Id": "Q824" }, { - "predicate": "Can Sell", - "arg1": "Samsung", - "arg2": "Its Tablet" + "predicate": "Citizen of", + "predicateId": "CIT-OF", + "arg1": "Timms", + "arg1Id": "T5", + "arg2": "Dubai", + "arg2Id": "Q612", + "confidence": 0.89470345 }, { - "predicate": "decided", - "arg1": "a judge", - "arg2": "that Samsung can sell its tablet in the U.S. market" + "predicate": "Person Employee or Member of", + "predicateId": "PER-EMPLOYEE-MEMBER-OF", + "arg1": "Timms", + "arg2": "FLIR" }, { - "predicate": "comes", - "arg1": "Apple conflict", - "locatives": [ - "from U.S." - ] - }, - { - "predicate": "can sell", - "arg1": "Samsung", - "arg2": "its tablet", - "adjuncts": [ - "in the U.S. market" - ] - }, - { - "predicate": "claiming", - "arg1": "Apple", - "arg2": "copy the iPhone" - }, - { - "predicate": "copy", - "arg1": "tablets", - "arg2": "the iPhone" - }, - { - "predicate": "copy", - "arg1": "tablets", - "arg2": "the iPad" - }, - { - "predicate": "copy", - "arg1": "the South Korean smartphones", - "arg2": "the iPhone" - }, - { - "predicate": "initiated", - "arg1": "Apple", - "arg2": "a legal action against Samsung", - "locatives": [ - "In United States" - ], - "adjuncts": [ - "claiming that the South Korean smartphones", - "in April" - ] - }, - { - "predicate": "copy", - "arg1": "the South Korean smartphones", - "arg2": "the iPad" - }, - { - "predicate": "will be prohibited", - "arg1": "Samsung", - "adjuncts": [ - "from selling the gadgets in the U.S. market" - ] - }, - { - "predicate": "requested", - "arg1": "Apple", - "arg2": "that Samsung will be prohibited", - "adjuncts": [ - "As a result" - ] - }, - { - "predicate": "came late", - "arg1": "The much expected ruling", - "adjuncts": [ - "on Friday", - "as U.S. District Judge Lucy Koh denied Apple’s request for a preliminary injuction against Samsung" - ] - }, - { - "predicate": "denied", - "arg1": "U.S. District Judge Lucy Koh", - "arg2": "Apple’s request for a preliminary injuction against Samsung" - }, - { - "predicate": "said", - "arg1": "U.S. District Judge Lucy Koh", - "arg2": "It is not clear than an injuction on Samsung’s accused devices would prevent Apple from being irreparably harmed" - }, - { - "predicate": "rejected", - "arg1": "Koh", - "arg2": "Apple’s request", - "adjuncts": [ - "As a result" - ] - }, - { - "predicate": "had", - "arg1": "Samsung", - "arg2": "23.8 percent of the global smartphone market", - "adjuncts": [ - "In the third quarter" - ] - }, - { - "predicate": "wrote", - "arg1": "The U.S. judge", - "arg2": "Apple has established a likelihood of success on the merits at trial" - }, - { - "predicate": "has established", - "arg1": "Apple", - "arg2": "a likelihood of success on the merits at trial" - }, - { - "predicate": "infringed", - "arg1": "Samsung", - "arg2": "one of its tablet patents" - }, - { - "predicate": "still has", - "arg1": "Apple", - "arg2": "high changes of winning the overall lawsuit" - }, - { - "predicate": "makes", - "arg1": "Koh’s decision", - "arg2": "it possible for the South Korean company to start Christmas sales" - }, - { - "predicate": "are expected", - "arg1": "global tablet sales", - "arg2": "to boost to more than 50 million this year", - "adjuncts": [ - "with Apple still the leader of the market" - ] - }, - { - "predicate": "sold", - "arg1": "Apple", - "arg2": "more than 30 million iPads worldwide" - }, - { - "predicate": "by extending", - "arg1": "a judge in Australia", - "arg2": "a ban on Samsung’s iPad sales within the country" - }, - { - "predicate": "ruled", - "arg1": "a judge in Australia", - "adjuncts": [ - "Last week", - "in favor of Apple", - "by extending a ban on Samsung’s iPad sales within the country" - ] - }, - { - "predicate": "is", - "arg1": "Australia", - "arg2": "a key market for Samsung Galaxy Tablet" - }, - { - "predicate": "is a key market", - "arg1": "Australia", - "adjuncts": [ - "for Samsung Galaxy Tablet" - ] + "predicate": "Organization top employees", + "predicateId": "ORG-TOP-EMPLOYEES", + "arg1": "FLIR", + "arg2": "Timms" } ] } diff --git a/api/src/test/mock-data/response/eng-doc-relationships.status b/api/src/test/mock-data/response/eng-doc-relationships.status index 08839f6bb2..ae4ee13c08 100644 --- a/api/src/test/mock-data/response/eng-doc-relationships.status +++ b/api/src/test/mock-data/response/eng-doc-relationships.status @@ -1 +1 @@ -200 +200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-doc-sentiment.json b/api/src/test/mock-data/response/eng-doc-sentiment.json index 52a07f3a9b..75200cd4f3 100644 --- a/api/src/test/mock-data/response/eng-doc-sentiment.json +++ b/api/src/test/mock-data/response/eng-doc-sentiment.json @@ -1,18 +1,35 @@ { - "requestId": "406f10ca-ca7b-4ea2-ba81-103df64202c7", - "sentiment": [ + "document": { + "confidence": 0.5061395422807821, + "label": "neg" + }, + "entities": [ { - "confidence": 0.8017006157160519, - "label": "neg" + "entityId": "Q30", + "mention": "U.S.", + "sentiment": { + "confidence": 0.4441185061900165, + "label": "neu" + }, + "type": "LOCATION" }, { - "confidence": 0.19829938428394817, - "label": "pos" + "entityId": "Q796", + "mention": "Iraq", + "sentiment": { + "confidence": 0.5430461330525177, + "label": "neu" + }, + "type": "LOCATION" + }, + { + "entityId": "Q889", + "mention": "Afghanistan", + "sentiment": { + "confidence": 0.5961770818070375, + "label": "neu" + }, + "type": "LOCATION" } - ], - "timers": { - "rblJe": 11, - "rliJe": 21, - "sent": 39 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-doc-similar_terms.json b/api/src/test/mock-data/response/eng-doc-similar_terms.json new file mode 100644 index 0000000000..e22e42d846 --- /dev/null +++ b/api/src/test/mock-data/response/eng-doc-similar_terms.json @@ -0,0 +1,130 @@ +{ + "similarTerms": { + "deu": [ + { + "term": "Deckname", + "similarity": 0.51391315 + }, + { + "term": "GRU", + "similarity": 0.50809389 + }, + { + "term": "Spion", + "similarity": 0.50051737 + }, + { + "term": "KGB", + "similarity": 0.49981388 + }, + { + "term": "Informant", + "similarity": 0.48774603 + }, + { + "term": "Geheimagent", + "similarity": 0.48700801 + }, + { + "term": "Geheimdienst", + "similarity": 0.48512384 + }, + { + "term": "Spionin", + "similarity": 0.47224587 + }, + { + "term": "MI6", + "similarity": 0.46969846 + }, + { + "term": "Decknamen", + "similarity": 0.44730526 + } + ], + "jpn": [ + { + "term": "スパイ", + "similarity": 0.5544399 + }, + { + "term": "諜報", + "similarity": 0.46903181 + }, + { + "term": "MI6", + "similarity": 0.46344957 + }, + { + "term": "殺し屋", + "similarity": 0.41098994 + }, + { + "term": "正体", + "similarity": 0.40109193 + }, + { + "term": "プレデター", + "similarity": 0.39433435 + }, + { + "term": "レンズマン", + "similarity": 0.3918637 + }, + { + "term": "S.H.I.E.L.D.", + "similarity": 0.38338536 + }, + { + "term": "サーシャ", + "similarity": 0.37628397 + }, + { + "term": "黒幕", + "similarity": 0.37256041 + } + ], + "spa": [ + { + "term": "espía", + "similarity": 0.61295485 + }, + { + "term": "cia", + "similarity": 0.46201307 + }, + { + "term": "desertor", + "similarity": 0.42849663 + }, + { + "term": "cómplice", + "similarity": 0.36646274 + }, + { + "term": "subrepticiamente", + "similarity": 0.36629659 + }, + { + "term": "asesino", + "similarity": 0.36264464 + }, + { + "term": "misterioso", + "similarity": 0.35466132 + }, + { + "term": "fugitivo", + "similarity": 0.35033143 + }, + { + "term": "informante", + "similarity": 0.34707013 + }, + { + "term": "mercenario", + "similarity": 0.34658083 + } + ] + } +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-entities.status b/api/src/test/mock-data/response/eng-doc-similar_terms.status similarity index 100% rename from api/src/test/mock-data/response/ara-sentence-entities.status rename to api/src/test/mock-data/response/eng-doc-similar_terms.status diff --git a/api/src/test/mock-data/response/eng-doc-syntax_dependencies.json b/api/src/test/mock-data/response/eng-doc-syntax_dependencies.json new file mode 100644 index 0000000000..e05e78965e --- /dev/null +++ b/api/src/test/mock-data/response/eng-doc-syntax_dependencies.json @@ -0,0 +1,132 @@ +{ + "sentences": [ + { + "startTokenIndex": 0, + "endTokenIndex": 19, + "dependencies": [ + { + "dependencyType": "name", + "governorTokenIndex": 1, + "dependentTokenIndex": 0 + }, + { + "dependencyType": "nsubjpass", + "governorTokenIndex": 9, + "dependentTokenIndex": 1 + }, + { + "dependencyType": "punct", + "governorTokenIndex": 1, + "dependentTokenIndex": 2 + }, + { + "dependencyType": "det", + "governorTokenIndex": 6, + "dependentTokenIndex": 3 + }, + { + "dependencyType": "amod", + "governorTokenIndex": 6, + "dependentTokenIndex": 4 + }, + { + "dependencyType": "compound", + "governorTokenIndex": 6, + "dependentTokenIndex": 5 + }, + { + "dependencyType": "appos", + "governorTokenIndex": 1, + "dependentTokenIndex": 6 + }, + { + "dependencyType": "punct", + "governorTokenIndex": 1, + "dependentTokenIndex": 7 + }, + { + "dependencyType": "auxpass", + "governorTokenIndex": 9, + "dependentTokenIndex": 8 + }, + { + "dependencyType": "root", + "governorTokenIndex": -1, + "dependentTokenIndex": 9 + }, + { + "dependencyType": "det", + "governorTokenIndex": 12, + "dependentTokenIndex": 10 + }, + { + "dependencyType": "compound", + "governorTokenIndex": 12, + "dependentTokenIndex": 11 + }, + { + "dependencyType": "dobj", + "governorTokenIndex": 9, + "dependentTokenIndex": 12 + }, + { + "dependencyType": "case", + "governorTokenIndex": 14, + "dependentTokenIndex": 13 + }, + { + "dependencyType": "nmod", + "governorTokenIndex": 12, + "dependentTokenIndex": 14 + }, + { + "dependencyType": "cc", + "governorTokenIndex": 14, + "dependentTokenIndex": 15 + }, + { + "dependencyType": "conj", + "governorTokenIndex": 14, + "dependentTokenIndex": 16 + }, + { + "dependencyType": "case", + "governorTokenIndex": 18, + "dependentTokenIndex": 17 + }, + { + "dependencyType": "nmod", + "governorTokenIndex": 9, + "dependentTokenIndex": 18 + }, + { + "dependencyType": "punct", + "governorTokenIndex": 9, + "dependentTokenIndex": 19 + } + ] + } + ], + "tokens": [ + "Yoshinori", + "Ohsumi", + ",", + "a", + "Japanese", + "cell", + "biologist", + ",", + "was", + "awarded", + "the", + "Nobel", + "Prize", + "in", + "Physiology", + "or", + "Medicine", + "on", + "Monday", + "." + ] +} diff --git a/api/src/test/mock-data/response/ara-sentence-entities_linked.status b/api/src/test/mock-data/response/eng-doc-syntax_dependencies.status similarity index 100% rename from api/src/test/mock-data/response/ara-sentence-entities_linked.status rename to api/src/test/mock-data/response/eng-doc-syntax_dependencies.status diff --git a/api/src/test/mock-data/response/eng-sentence-categories.json b/api/src/test/mock-data/response/eng-sentence-categories.json deleted file mode 100644 index 3ee261917a..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-categories.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "categories": [ - { - "confidence": 0.07808597563331034, - "label": "LAW_GOVERNMENT_AND_POLITICS" - } - ], - "requestId": "6ad3ca89-792f-486b-a837-13565bb9d9f8", - "timers": { - "cat": 4, - "rblJe": 3, - "rliJe": 17 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-entities.json b/api/src/test/mock-data/response/eng-sentence-entities.json deleted file mode 100644 index 703bc91cb9..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-entities.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "entities": [ - { - "confidence": 1.0, - "count": 2, - "indocChainId": 0, - "mention": "U.S.", - "normalized": "U.S.", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 1, - "mention": "Iraq", - "normalized": "Iraq", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 2, - "mention": "Afghanistan", - "normalized": "Afghanistan", - "type": "LOCATION" - }, - { - "confidence": 0.009895622730255127, - "count": 1, - "indocChainId": 3, - "mention": "commander in chief", - "normalized": "commander in chief", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 4, - "mention": "American", - "normalized": "American", - "type": "NATIONALITY" - } - ], - "requestId": "75686168-76e1-490c-b960-a4d3a4b0cf5d", - "timers": { - "rblJe": 3, - "rexJe": 5, - "rliJe": 14 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-entities_linked.json b/api/src/test/mock-data/response/eng-sentence-entities_linked.json deleted file mode 100644 index c108c279fd..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-entities_linked.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.7663931614955327, - "entityId": "Q30", - "indocChainId": 0, - "mention": "U.S." - }, - { - "confidence": 0.29775268161399915, - "entityId": "Q796", - "indocChainId": 1, - "mention": "Iraq" - }, - { - "confidence": 0.23271222742588785, - "entityId": "Q889", - "indocChainId": 2, - "mention": "Afghanistan" - } - ], - "requestId": "8e106556-7bf6-4dbf-82e5-393d4cdebaee", - "timers": { - "rblJe": 2, - "res": 188, - "rexJe": 4, - "rliJe": 13 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-language.json b/api/src/test/mock-data/response/eng-sentence-language.json deleted file mode 100644 index a9232c3fb0..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.028765618006176497, - "language": "eng" - }, - { - "confidence": 0.004481894946904208, - "language": "nld" - }, - { - "confidence": 0.0036288946024011226, - "language": "ita" - }, - { - "confidence": 0.0034046431861963766, - "language": "nor" - }, - { - "confidence": 0.0033029370995759644, - "language": "fra" - } - ], - "requestId": "80dd91b6-26cd-4c42-99b6-6ee6cbaf7ad5", - "timers": { - "rliJe": 14 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-language.status b/api/src/test/mock-data/response/eng-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-morphology_complete.json b/api/src/test/mock-data/response/eng-sentence-morphology_complete.json deleted file mode 100644 index 405945987c..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-morphology_complete.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "compounds": [], - "hanReadings": [], - "lemmas": [ - { - "lemma": "he", - "text": "He" - }, - { - "lemma": "also", - "text": "also" - }, - { - "lemma": "acknowledge", - "text": "acknowledged" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "ongoing", - "text": "ongoing" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "conflict", - "text": "conflicts" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Iraq", - "text": "Iraq" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "Afghanistan", - "text": "Afghanistan" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "note", - "text": "noting" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "commander", - "text": "commander" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "chief", - "text": "chief" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "country", - "text": "country" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "responsible", - "text": "responsible" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "end", - "text": "ending" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "war", - "text": "war" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "working", - "text": "working" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "another", - "text": "another" - }, - { - "lemma": "theater", - "text": "theater" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "confront", - "text": "confront" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "ruthless", - "text": "ruthless" - }, - { - "lemma": "adversary", - "text": "adversary" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "directly", - "text": "directly" - }, - { - "lemma": "threaten", - "text": "threatens" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "American", - "text": "American" - }, - { - "lemma": "people", - "text": "people" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "ally", - "text": "allies" - }, - { - "lemma": ".", - "text": "." - } - ], - "posTags": [ - { - "pos": "PRONPERS", - "text": "He" - }, - { - "pos": "ADV", - "text": "also" - }, - { - "pos": "VPAST", - "text": "acknowledged" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "ongoing" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "conflicts" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "Iraq" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "PROP", - "text": "Afghanistan" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PARTPRES", - "text": "noting" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN", - "text": "commander" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "ADJ", - "text": "chief" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "country" - }, - { - "pos": "PRONREL", - "text": "that" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "ADJ", - "text": "responsible" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "PARTPRES", - "text": "ending" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "war" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "NOUNING", - "text": "working" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "another" - }, - { - "pos": "NOUN", - "text": "theater" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "confront" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "ruthless" - }, - { - "pos": "NOUN", - "text": "adversary" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "ADV", - "text": "directly" - }, - { - "pos": "VPRES", - "text": "threatens" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "American" - }, - { - "pos": "NOUN", - "text": "people" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "allies" - }, - { - "pos": "SENT", - "text": "." - } - ], - "requestId": "a635d13f-4e4f-444c-9396-92efab9a6b78", - "timers": { - "rblJe": 3, - "rliJe": 20 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-morphology_complete.status b/api/src/test/mock-data/response/eng-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-relationships.json b/api/src/test/mock-data/response/eng-sentence-relationships.json deleted file mode 100644 index 0bd6f36102..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-relationships.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "requestId": "eaee652e-a6bf-4a32-a159-0a612d2c080a", - "relationships": [ - { - "predicate": "were", - "arg1": "The first men to reach the moon", - "arg2": "Mr. Armstrong" - }, - { - "predicate": "is", - "arg1": "were Mr. Armstrong", - "arg2": "Col. Edwin E. Aldrin" - } - ] -} diff --git a/api/src/test/mock-data/response/eng-sentence-sentiment.json b/api/src/test/mock-data/response/eng-sentence-sentiment.json deleted file mode 100644 index 65fb0827e5..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-sentiment.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "requestId": "edf8d7f7-b99b-4b8d-9407-985439d4929c", - "sentiment": [ - { - "confidence": 0.6363532196732291, - "label": "pos" - }, - { - "confidence": 0.36364678032677095, - "label": "neg" - } - ], - "timers": { - "rblJe": 2, - "rliJe": 12, - "sent": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-sentiment.status b/api/src/test/mock-data/response/eng-sentence-sentiment.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/eng-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-url-categories.json b/api/src/test/mock-data/response/eng-url-categories.json index 1e1b9d86c5..17389bbf0b 100644 --- a/api/src/test/mock-data/response/eng-url-categories.json +++ b/api/src/test/mock-data/response/eng-url-categories.json @@ -1,16 +1,8 @@ { "categories": [ { - "confidence": 0.2761922221442117, + "confidence": 0.07142205675107427, "label": "LAW_GOVERNMENT_AND_POLITICS" } - ], - "requestId": "b9aa3bdd-9ebe-4d11-a29d-2bad619c0ae4", - "timers": { - "cat": 25, - "rblJe": 6, - "rliJe": 5, - "textExtractor": 16, - "urlContentDownloader": 101 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-url-entities.json b/api/src/test/mock-data/response/eng-url-entities.json index 823044faaa..dc6458d642 100644 --- a/api/src/test/mock-data/response/eng-url-entities.json +++ b/api/src/test/mock-data/response/eng-url-entities.json @@ -1,356 +1,28 @@ { "entities": [ { - "confidence": 1.0, - "count": 18, - "indocChainId": 4, - "mention": "Nike", - "normalized": "Nike", - "type": "ORGANIZATION" - }, - { - "confidence": 0.026053469628095627, - "count": 16, - "indocChainId": 6, + "count": 1, + "indocChainId": 0, "mention": "Obama", "normalized": "Obama", "type": "PERSON" }, { - "confidence": 0.0356166809797287, - "count": 8, - "indocChainId": 5, - "mention": "President", - "normalized": "President", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 4, - "indocChainId": 23, - "mention": "USA", - "normalized": "USA", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 4, - "indocChainId": 35, - "mention": "American", - "normalized": "American", - "type": "NATIONALITY" - }, - { - "confidence": 1.0, - "count": 3, - "indocChainId": 9, - "mention": "Facebook", - "normalized": "Facebook", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 3, - "indocChainId": 43, - "mention": "Vietnam", - "normalized": "Vietnam", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 1, - "mention": "Twitter", - "normalized": "Twitter", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 17, - "mention": "http://usat.ly/1bDiUq2", - "normalized": "http://usat.ly/1bDiUq2", - "type": "IDENTIFIER:URL" - }, - { - "confidence": 0.016632944345474243, - "count": 2, - "indocChainId": 31, - "mention": "AP", - "normalized": "AP", - "type": "ORGANIZATION" - }, - { - "confidence": 0.01539921760559082, - "count": 2, - "indocChainId": 34, - "mention": "Pacific", - "normalized": "Pacific", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 54, - "mention": "U.S.", - "normalized": "U.S.", - "type": "LOCATION" - }, - { - "confidence": 0.020548731088638306, - "count": 2, - "indocChainId": 56, - "mention": "Congress", - "normalized": "Congress", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03334552049636841, - "count": 2, - "indocChainId": 73, - "mention": "Democratic", - "normalized": "Democratic", - "type": "ORGANIZATION" - }, - { - "confidence": 0.022478938102722168, - "count": 2, - "indocChainId": 74, - "mention": "White House", - "normalized": "White House", - "type": "ORGANIZATION" - }, - { - "confidence": 0.0002225041389465332, "count": 1, - "indocChainId": 0, - "mention": "City, State", - "normalized": "City, State", + "indocChainId": 1, + "mention": "Guantanamo Bay", + "normalized": "Guantanamo Bay", "type": "LOCATION" }, { - "confidence": 1.0, "count": 1, "indocChainId": 2, - "mention": "Google", - "normalized": "Google", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 3, - "mention": "LinkedIn", - "normalized": "LinkedIn", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 16, - "mention": "USATODAY.com", - "normalized": "USATODAY.com", - "type": "IDENTIFIER:URL" - }, - { - "confidence": 0.01601588726043701, - "count": 1, - "indocChainId": 22, - "mention": "Gregory Korte", - "normalized": "Gregory Korte", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 27, - "mention": "Ore.", - "normalized": "Ore.", - "type": "LOCATION" - }, - { - "confidence": 0.023429572582244873, - "count": 1, - "indocChainId": 29, - "mention": "Democrats", - "normalized": "Democrats", - "type": "ORGANIZATION" - }, - { - "confidence": 0.009600162506103516, - "count": 1, - "indocChainId": 30, - "mention": "Pablo Martinez Monsivais", - "normalized": "Pablo Martinez Monsivais", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 39, - "mention": "Vermont", - "normalized": "Vermont", - "type": "LOCATION" - }, - { - "confidence": 0.01797032356262207, - "count": 1, - "indocChainId": 40, - "mention": "Sen.", - "normalized": "Sen.", - "type": "TITLE" - }, - { - "confidence": 0.029442191123962402, - "count": 1, - "indocChainId": 41, - "mention": "Bernie Sanders", - "normalized": "Bernie Sanders", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 49, - "mention": "Portland", - "normalized": "Portland", - "type": "LOCATION" - }, - { - "confidence": 0.0008523464202880859, - "count": 1, - "indocChainId": 51, - "mention": "Senate", - "normalized": "Senate", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 54, - "mention": "United States", - "normalized": "United States", - "type": "LOCATION" - }, - { - "confidence": 0.02184152603149414, - "count": 1, - "indocChainId": 60, - "mention": "Parker", - "normalized": "Parker", - "type": "PERSON" - }, - { - "confidence": 0.027263343334197998, - "count": 1, - "indocChainId": 60, - "mention": "Mark Parker", - "normalized": "Mark Parker", - "type": "PERSON" - }, - { - "confidence": 0.07037776708602905, - "count": 1, - "indocChainId": 65, - "mention": "Eric Hauser", - "normalized": "Eric Hauser", - "type": "PERSON" - }, - { - "confidence": 0.017060577869415283, - "count": 1, - "indocChainId": 66, - "mention": "AFL-CIO", - "normalized": "AFL-CIO", - "type": "ORGANIZATION" - }, - { - "confidence": 0.021783530712127686, - "count": 1, - "indocChainId": 71, - "mention": "Clinton", - "normalized": "Clinton", - "type": "PERSON" - }, - { - "confidence": 0.01363682746887207, - "count": 1, - "indocChainId": 75, - "mention": "Trans-Pacific", - "normalized": "Trans-Pacific", - "type": "LOCATION" - }, - { - "confidence": 0.00797349214553833, - "count": 1, - "indocChainId": 84, - "mention": "TPP", - "normalized": "TPP", - "type": "ORGANIZATION" - }, - { - "confidence": 0.025950074195861816, - "count": 1, - "indocChainId": 85, - "mention": "Murshed Zaheed", - "normalized": "Murshed Zaheed", - "type": "PERSON" - }, - { - "confidence": 0.0026077628135681152, - "count": 1, - "indocChainId": 86, - "mention": "Credo Action", - "normalized": "Credo Action", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03961271047592163, - "count": 1, - "indocChainId": 88, - "mention": "Asia", - "normalized": "Asia", - "type": "LOCATION" - }, - { - "confidence": 0.022504746913909912, - "count": 1, - "indocChainId": 90, - "mention": "Sentinel Hotel", - "normalized": "Sentinel Hotel", - "type": "LOCATION" - }, - { - "confidence": 0.019158661365509033, - "count": 1, - "indocChainId": 94, - "mention": "Thomas Boyd", - "normalized": "Thomas Boyd", - "type": "PERSON" - }, - { - "confidence": 0.012987256050109863, - "count": 1, - "indocChainId": 98, - "mention": "Michael Wolff", - "normalized": "Michael Wolff", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 99, - "mention": "Britain", - "normalized": "Britain", - "type": "LOCATION" + "mention": "Washington", + "normalized": "Washington", + "type": "LOCATION", + "dbpediaTypes": [ + "test1" + ] } - ], - "requestId": "20cc0667-b5d1-45ca-8649-388b42695ed6", - "timers": { - "rblJe": 6, - "rexJe": 194, - "rliJe": 6, - "textExtractor": 14, - "urlContentDownloader": 117 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-url-entities_linked.json b/api/src/test/mock-data/response/eng-url-entities_linked.json index 6187a52cce..ec851ebcdd 100644 --- a/api/src/test/mock-data/response/eng-url-entities_linked.json +++ b/api/src/test/mock-data/response/eng-url-entities_linked.json @@ -1,229 +1,27 @@ { "entities": [ { - "confidence": 0.09260963387673546, - "entityId": "NEW-CLUSTER", + "confidence": 0.34773210202691446, + "entityId": "Q76", "indocChainId": 0, - "mention": "City, State" + "mention": "Obama" }, { - "confidence": 0.7363573634794515, - "entityId": "Q918", + "confidence": 0.3848310577155907, + "entityId": "Q208035", "indocChainId": 1, - "mention": "Twitter" + "mention": "Guantanamo Bay" }, { - "confidence": 0.8558907150896853, - "entityId": "Q95", + "confidence": 0.021874076835034832, + "entityId": "Q1088831", "indocChainId": 2, - "mention": "Google" - }, - { - "confidence": 0.7989502467143261, - "entityId": "Q213660", - "indocChainId": 3, - "mention": "LinkedIn" - }, - { - "confidence": 0.6261777456363734, - "entityId": "Q165023", - "indocChainId": 4, - "mention": "Nike" - }, - { - "confidence": 0.580918930055919, - "entityId": "Q76", - "indocChainId": 6, - "mention": "Obama" - }, - { - "confidence": 0.8198021796089213, - "entityId": "Q355", - "indocChainId": 9, - "mention": "Facebook" - }, - { - "confidence": 0.48472828194168266, - "entityId": "NEW-CLUSTER", - "indocChainId": 22, - "mention": "Gregory Korte" - }, - { - "confidence": 0.934688817800125, - "entityId": "Q30", - "indocChainId": 23, - "mention": "USA" - }, - { - "confidence": 0.6674546995482082, - "entityId": "Q824", - "indocChainId": 27, - "mention": "Ore." - }, - { - "confidence": 0.47112052899963985, - "entityId": "Q29552", - "indocChainId": 29, - "mention": "Democrats" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 30, - "mention": "Pablo Martinez Monsivais" - }, - { - "confidence": 0.2034163102133998, - "entityId": "Q40469", - "indocChainId": 31, - "mention": "AP" - }, - { - "confidence": 0.15449450932471964, - "entityId": "Q98", - "indocChainId": 34, - "mention": "Pacific" - }, - { - "confidence": 0.23079330313599078, - "entityId": "Q16551", - "indocChainId": 39, - "mention": "Vermont" - }, - { - "confidence": 0.8339844509143421, - "entityId": "Q359442", - "indocChainId": 41, - "mention": "Bernie Sanders" - }, - { - "confidence": 0.2171907026020583, - "entityId": "Q881", - "indocChainId": 43, - "mention": "Vietnam" - }, - { - "confidence": 0.052853329084155916, - "entityId": "Q6106", - "indocChainId": 49, - "mention": "Portland" - }, - { - "confidence": 0.06500005510445091, - "entityId": "Q66096", - "indocChainId": 51, - "mention": "Senate" - }, - { - "confidence": 0.4966018948670623, - "entityId": "Q30", - "indocChainId": 54, - "mention": "United States" - }, - { - "confidence": 0.12517966475058961, - "entityId": "Q11268", - "indocChainId": 56, - "mention": "Congress" - }, - { - "confidence": 0.5401864536008631, - "entityId": "Q1900344", - "indocChainId": 60, - "mention": "Mark Parker" - }, - { - "confidence": 0.3672055307109911, - "entityId": "NEW-CLUSTER", - "indocChainId": 65, - "mention": "Eric Hauser" - }, - { - "confidence": 0.8073673635923817, - "entityId": "Q464271", - "indocChainId": 66, - "mention": "AFL-CIO" - }, - { - "confidence": 0.0754921314204974, - "entityId": "Q1124", - "indocChainId": 71, - "mention": "Clinton" - }, - { - "confidence": 0.8733602619662788, - "entityId": "Q29552", - "indocChainId": 73, - "mention": "Democratic" - }, - { - "confidence": 0.2071496461994983, - "entityId": "Q35525", - "indocChainId": 74, - "mention": "White House" - }, - { - "confidence": 0.1337796168379229, - "entityId": "NEW-CLUSTER", - "indocChainId": 75, - "mention": "Trans-Pacific" - }, - { - "confidence": 0.3347718004129003, - "entityId": "NEW-CLUSTER", - "indocChainId": 84, - "mention": "TPP" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 85, - "mention": "Murshed Zaheed" - }, - { - "confidence": 0.4449559756113517, - "entityId": "NEW-CLUSTER", - "indocChainId": 86, - "mention": "Credo Action" - }, - { - "confidence": 0.20568806272114726, - "entityId": "Q48", - "indocChainId": 88, - "mention": "Asia" - }, - { - "confidence": 0.5279031985169756, - "entityId": "NEW-CLUSTER", - "indocChainId": 90, - "mention": "Sentinel Hotel" - }, - { - "confidence": 0.2557855226598088, - "entityId": "NEW-CLUSTER", - "indocChainId": 94, - "mention": "Thomas Boyd" - }, - { - "confidence": 0.3050614695591455, - "entityId": "Q439955", - "indocChainId": 98, - "mention": "Michael Wolff" - }, - { - "confidence": 0.21278551689928094, - "entityId": "Q145", - "indocChainId": 99, - "mention": "Britain" + "mention": "Washington", + "dbpediaTypes": [ + "test1", + "foo", + "bar" + ] } - ], - "requestId": "5de2e00b-efcd-4fd0-a404-f9629dc60619", - "timers": { - "rblJe": 7, - "res": 1408, - "rexJe": 68, - "rliJe": 5, - "textExtractor": 19, - "urlContentDownloader": 103 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/eng-url-language.json b/api/src/test/mock-data/response/eng-url-language.json index 43ac03a254..b5911a6155 100644 --- a/api/src/test/mock-data/response/eng-url-language.json +++ b/api/src/test/mock-data/response/eng-url-language.json @@ -1,30 +1,24 @@ { "languageDetections": [ { - "confidence": 0.03778571148423149, + "confidence": 0.024357028334563213, "language": "eng" }, { - "confidence": 0.004662049438325155, - "language": "ita" + "confidence": 0.002998223133557021, + "language": "nor" }, { - "confidence": 0.004196223037494229, - "language": "fra" + "confidence": 0.0029303277173610143, + "language": "ron" }, { - "confidence": 0.004017692353779911, - "language": "ron" + "confidence": 0.0028141483111123744, + "language": "ita" }, { - "confidence": 0.0036722928060302085, - "language": "nor" + "confidence": 0.0028029472283479517, + "language": "fra" } - ], - "requestId": "7174fbf8-a58e-4ec4-9ac4-92fee2bd5b40", - "timers": { - "rliJe": 5, - "textExtractor": 20, - "urlContentDownloader": 159 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-url-morphology_complete.json b/api/src/test/mock-data/response/eng-url-morphology_complete.json index 2ef7037d1f..fc7a2149ab 100644 --- a/api/src/test/mock-data/response/eng-url-morphology_complete.json +++ b/api/src/test/mock-data/response/eng-url-morphology_complete.json @@ -1,8999 +1,367 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "enter", - "text": "Enter" - }, - { - "lemma": "City", - "text": "City" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "State", - "text": "State" - }, - { - "lemma": "or", - "text": "or" - }, - { - "lemma": "zip", - "text": "Zip" - }, - { - "lemma": "cancel", - "text": "Cancel" - }, - { - "lemma": "logarithm", - "text": "Log" - }, - { - "lemma": "out", - "text": "out" - }, - { - "lemma": "sign", - "text": "Sign" - }, - { - "lemma": "in", - "text": "In" - }, - { - "lemma": "FAQ", - "text": "FAQ" - }, - { - "lemma": "get", - "text": "Get" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "news", - "text": "news" - }, - { - "lemma": "FacebookEmail", - "text": "FacebookEmail" - }, - { - "lemma": "twitter", - "text": "Twitter" - }, - { - "lemma": "Google", - "text": "Google" - }, - { - "lemma": "+", - "text": "+" - }, - { - "lemma": "LinkedIn", - "text": "LinkedIn" - }, - { - "lemma": "Pinterest", - "text": "Pinterest" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "HQ", - "text": "HQ" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "make", - "text": "makes" - }, - { - "lemma": "progressive", - "text": "progressive" - }, - { - "lemma": "case", - "text": "case" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "take", - "text": "took" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "campaign", - "text": "campaign" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "deal", - "text": "deal" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "headquarters", - "text": "headquarters" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "where", - "text": "where" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "have", - "text": "'s" - }, - { - "lemma": "extract", - "text": "extracted" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "pledge", - "text": "pledge" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "'s", - "text": "'s" - }, - { - "lemma": "large", - "text": "largest" - }, - { - "lemma": "athletic", - "text": "athletic" - }, - { - "lemma": "shoe", - "text": "shoe" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "will", - "text": "will" - }, - { - "lemma": "add", - "text": "add" - }, - { - "lemma": "10000", - "text": "10,000" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "job", - "text": "jobs" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "post", - "text": "Post" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "Facebook", - "text": "Facebook" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "HQ", - "text": "HQ" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "make", - "text": "makes" - }, - { - "lemma": "progressive", - "text": "progressive" - }, - { - "lemma": "case", - "text": "case" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "take", - "text": "took" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "campaign", - "text": "campaign" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "deal", - "text": "deal" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "headquarters", - "text": "headquarters" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "where", - "text": "where" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "have", - "text": "'s" - }, - { - "lemma": "extract", - "text": "extracted" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "pledge", - "text": "pledge" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "'s", - "text": "'s" - }, - { - "lemma": "large", - "text": "largest" - }, - { - "lemma": "athletic", - "text": "athletic" - }, - { - "lemma": "shoe", - "text": "shoe" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "will", - "text": "will" - }, - { - "lemma": "add", - "text": "add" - }, - { - "lemma": "10000", - "text": "10,000" - }, - { - "lemma": "U.S.", - "text": "U.S." - }, - { - "lemma": "job", - "text": "jobs" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "check", - "text": "Check" - }, - { - "lemma": "out", - "text": "out" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "story", - "text": "story" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "USATODAY.com", - "text": "USATODAY.com" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "usat.ly", - "text": "usat.ly" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "1bDiUq2", - "text": "1bDiUq2" - }, - { - "lemma": "{", - "text": "{" - }, - { - "lemma": "#", - "text": "#" - }, - { - "lemma": "#", - "text": "#" - }, - { - "lemma": "}", - "text": "}" - }, - { - "lemma": "CancelSend", - "text": "CancelSend" - }, - { - "lemma": "a", - "text": "A" - }, - { - "lemma": "link", - "text": "link" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "be", - "text": "been" - }, - { - "lemma": "send", - "text": "sent" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "you", - "text": "your" - }, - { - "lemma": "friend", - "text": "friend" - }, - { - "lemma": "'s", - "text": "'s" - }, - { - "lemma": "email", - "text": "email" - }, - { - "lemma": "address", - "text": "address" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "post", - "text": "Posted" - }, - { - "lemma": "!", - "text": "!" - }, - { - "lemma": "a", - "text": "A" - }, - { - "lemma": "link", - "text": "link" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "be", - "text": "been" - }, - { - "lemma": "post", - "text": "posted" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "you", - "text": "your" - }, - { - "lemma": "facebook", - "text": "Facebook" - }, - { - "lemma": "feed", - "text": "feed" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "54", - "text": "54" - }, - { - "lemma": "to", - "text": "To" - }, - { - "lemma": "find", - "text": "find" - }, - { - "lemma": "out", - "text": "out" - }, - { - "lemma": "more", - "text": "more" - }, - { - "lemma": "about", - "text": "about" - }, - { - "lemma": "Facebook", - "text": "Facebook" - }, - { - "lemma": "comment", - "text": "commenting" - }, - { - "lemma": "please", - "text": "please" - }, - { - "lemma": "read", - "text": "read" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "conversation", - "text": "Conversation" - }, - { - "lemma": "guideline", - "text": "Guidelines" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "FAQs", - "text": "FAQs" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "HQ", - "text": "HQ" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "make", - "text": "makes" - }, - { - "lemma": "progressive", - "text": "progressive" - }, - { - "lemma": "case", - "text": "case" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "Gregory", - "text": "Gregory" - }, - { - "lemma": "Korte", - "text": "Korte" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "USA", - "text": "USA" - }, - { - "lemma": "today", - "text": "TODAY" - }, - { - "lemma": "2:25", - "text": "2:25" - }, - { - "lemma": "p.m.", - "text": "p.m." - }, - { - "lemma": "EDT", - "text": "EDT" - }, - { - "lemma": "May", - "text": "May" - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "2015", - "text": "2015" - }, - { - "lemma": "president", - "text": "President" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "take", - "text": "takes" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "stage", - "text": "stage" - }, - { - "lemma": "before", - "text": "before" - }, - { - "lemma": "speak", - "text": "speaking" - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "headquarters", - "text": "headquarters" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Beaverton", - "text": "Beaverton" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Ore.", - "text": "Ore." - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "visit", - "text": "visited" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "giant", - "text": "giant" - }, - { - "lemma": "athletic", - "text": "athletic" - }, - { - "lemma": "apparel", - "text": "apparel" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "make", - "text": "make" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "policy", - "text": "policy" - }, - { - "lemma": "pitch", - "text": "pitch" - }, - { - "lemma": "as", - "text": "as" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "struggle", - "text": "struggles" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "win", - "text": "win" - }, - { - "lemma": "over", - "text": "over" - }, - { - "lemma": "democrat", - "text": "Democrats" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "what", - "text": "what" - }, - { - "lemma": "could", - "text": "could" - }, - { - "lemma": "be", - "text": "be" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "last", - "text": "last" - }, - { - "lemma": "major", - "text": "major" - }, - { - "lemma": "legislative", - "text": "legislative" - }, - { - "lemma": "push", - "text": "push" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "presidency", - "text": "presidency" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "photo", - "text": "Photo" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "Pablo", - "text": "Pablo" - }, - { - "lemma": "Martinez", - "text": "Martinez" - }, - { - "lemma": "Monsivais", - "text": "Monsivais" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "AP", - "text": "AP" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "438", - "text": "438" - }, - { - "lemma": "connect", - "text": "CONNECT" - }, - { - "lemma": "142", - "text": "142" - }, - { - "lemma": "tweet", - "text": "TWEET" - }, - { - "lemma": "18", - "text": "18" - }, - { - "lemma": "LINKEDIN", - "text": "LINKEDIN" - }, - { - "lemma": "54", - "text": "54" - }, - { - "lemma": "COMMENTEMAILMORE", - "text": "COMMENTEMAILMORE" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "dress", - "text": "dressed" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "campaign", - "text": "campaign" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "clothing", - "text": "clothing" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "middle", - "text": "middle" - }, - { - "lemma": "class", - "text": "class" - }, - { - "lemma": "economics", - "text": "economics" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "appeal", - "text": "appealing" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "liberal", - "text": "liberal" - }, - { - "lemma": "base", - "text": "base" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "support", - "text": "support" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "pacific", - "text": "Pacific" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "deal", - "text": "deal" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "would", - "text": "would" - }, - { - "lemma": "help", - "text": "help" - }, - { - "lemma": "American", - "text": "American" - }, - { - "lemma": "worker", - "text": "workers" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "speak", - "text": "Speaking" - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "headquarters", - "text": "headquarters" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "cast", - "text": "cast" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "same", - "text": "same" - }, - { - "lemma": "term", - "text": "terms" - }, - { - "lemma": "as", - "text": "as" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "effort", - "text": "efforts" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "pass", - "text": "pass" - }, - { - "lemma": "universal", - "text": "universal" - }, - { - "lemma": "health", - "text": "health" - }, - { - "lemma": "care", - "text": "care" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "adopt", - "text": "adopt" - }, - { - "lemma": "clean", - "text": "clean" - }, - { - "lemma": "energy", - "text": "energy" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "raise", - "text": "raise" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "minimum", - "text": "minimum" - }, - { - "lemma": "wage", - "text": "wage" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "passing", - "text": "Passing" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "agreement", - "text": "agreements" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "part", - "text": "part" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "agenda", - "text": "agenda" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "if", - "text": "if" - }, - { - "lemma": "those", - "text": "those" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "agreement", - "text": "agreements" - }, - { - "lemma": "be", - "text": "are" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "right", - "text": "right" - }, - { - "lemma": "kind", - "text": "kinds" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "agreement", - "text": "agreements" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "like", - "text": "Like" - }, - { - "lemma": "other", - "text": "other" - }, - { - "lemma": "issue", - "text": "issues" - }, - { - "lemma": "we", - "text": "we" - }, - { - "lemma": "have", - "text": "'ve" - }, - { - "lemma": "wage", - "text": "waged" - }, - { - "lemma": "slow", - "text": "slow" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "steady", - "text": "steady" - }, - { - "lemma": "fight", - "text": "fights" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "over", - "text": "over" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "last", - "text": "last" - }, - { - "lemma": "seven", - "text": "seven" - }, - { - "lemma": "year", - "text": "years" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "also", - "text": "also" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "question", - "text": "question" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "past", - "text": "past" - }, - { - "lemma": "versus", - "text": "versus" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "present", - "text": "present" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "but", - "text": "But" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "make", - "text": "made" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "case", - "text": "case" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "many", - "text": "many" - }, - { - "lemma": "liberal", - "text": "liberals" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "notably", - "text": "notably" - }, - { - "lemma": "Vermont", - "text": "Vermont" - }, - { - "lemma": "Senator", - "text": "Sen." - }, - { - "lemma": "Bernie", - "text": "Bernie" - }, - { - "lemma": "Sanders", - "text": "Sanders" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "presidential", - "text": "presidential" - }, - { - "lemma": "candidate", - "text": "candidate" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "see", - "text": "see" - }, - { - "lemma": "as", - "text": "as" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "symbol", - "text": "symbol" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "failed", - "text": "failed" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "policy", - "text": "policies" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "'s", - "text": "'s" - }, - { - "lemma": "large", - "text": "largest" - }, - { - "lemma": "athletic", - "text": "athletic" - }, - { - "lemma": "shoe", - "text": "shoe" - }, - { - "lemma": "manufacturer", - "text": "manufacturer" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "import", - "text": "imports" - }, - { - "lemma": "shoe", - "text": "shoes" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "contract", - "text": "contract" - }, - { - "lemma": "factory", - "text": "factories" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "place", - "text": "places" - }, - { - "lemma": "like", - "text": "like" - }, - { - "lemma": "Vietnam", - "text": "Vietnam" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "where", - "text": "where" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "minimum", - "text": "minimum" - }, - { - "lemma": "wage", - "text": "wage" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "56", - "text": "56" - }, - { - "lemma": "cent", - "text": "cents" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "hour", - "text": "hour" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "Vietnam", - "text": "Vietnam" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "where", - "text": "where" - }, - { - "lemma": "330000", - "text": "330,000" - }, - { - "lemma": "worker", - "text": "workers" - }, - { - "lemma": "make", - "text": "make" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "shoe", - "text": "shoes" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "would", - "text": "would" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "increase", - "text": "increase" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "minimum", - "text": "minimum" - }, - { - "lemma": "wage", - "text": "wage" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "improve", - "text": "improve" - }, - { - "lemma": "working", - "text": "working" - }, - { - "lemma": "condition", - "text": "conditions" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "even", - "text": "even" - }, - { - "lemma": "establish", - "text": "establish" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "right", - "text": "right" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "worker", - "text": "workers" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "join", - "text": "join" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "union", - "text": "union" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "it", - "text": "It" - }, - { - "lemma": "do not", - "text": "doesn't" - }, - { - "lemma": "mean", - "text": "mean" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "suddenly", - "text": "suddenly" - }, - { - "lemma": "working", - "text": "working" - }, - { - "lemma": "condition", - "text": "conditions" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Vietnam", - "text": "Vietnam" - }, - { - "lemma": "will", - "text": "will" - }, - { - "lemma": "be", - "text": "be" - }, - { - "lemma": "like", - "text": "like" - }, - { - "lemma": "they", - "text": "they" - }, - { - "lemma": "be", - "text": "are" - }, - { - "lemma": "here", - "text": "here" - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "or", - "text": "or" - }, - { - "lemma": "here", - "text": "here" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Portland", - "text": "Portland" - }, - { - "lemma": "right", - "text": "right" - }, - { - "lemma": "away", - "text": "away" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "but", - "text": "but" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "move", - "text": "moves" - }, - { - "lemma": "we", - "text": "us" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "right", - "text": "right" - }, - { - "lemma": "direction", - "text": "direction" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "if", - "text": "If" - }, - { - "lemma": "you", - "text": "you" - }, - { - "lemma": "be", - "text": "'re" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "country", - "text": "country" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "want", - "text": "wants" - }, - { - "lemma": "into", - "text": "into" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "agreement", - "text": "agreement" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "you", - "text": "you" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "meet", - "text": "meet" - }, - { - "lemma": "high", - "text": "higher" - }, - { - "lemma": "standard", - "text": "standards" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "if", - "text": "If" - }, - { - "lemma": "you", - "text": "you" - }, - { - "lemma": "do not", - "text": "don't" - }, - { - "lemma": "you", - "text": "you" - }, - { - "lemma": "be", - "text": "'re" - }, - { - "lemma": "out", - "text": "out" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "USA", - "text": "USA" - }, - { - "lemma": "today", - "text": "TODAY" - }, - { - "lemma": "senate", - "text": "Senate" - }, - { - "lemma": "panel", - "text": "panel" - }, - { - "lemma": "approve", - "text": "approves" - }, - { - "lemma": "'s", - "text": "'" - }, - { - "lemma": "fast", - "text": "fast" - }, - { - "lemma": "track", - "text": "track" - }, - { - "lemma": "'s", - "text": "'" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "bill", - "text": "bill" - }, - { - "lemma": "at", - "text": "At" - }, - { - "lemma": "one", - "text": "first" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "seem", - "text": "seemed" - }, - { - "lemma": "like", - "text": "like" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "unlikely", - "text": "unlikely" - }, - { - "lemma": "venue", - "text": "venue" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "speech", - "text": "speech" - }, - { - "lemma": "tout", - "text": "touting" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "virtue", - "text": "virtues" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "but", - "text": "But" - }, - { - "lemma": "hour", - "text": "hours" - }, - { - "lemma": "before", - "text": "before" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "speech", - "text": "speech" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "announce", - "text": "announced" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "would", - "text": "would" - }, - { - "lemma": "hire", - "text": "hire" - }, - { - "lemma": "10000", - "text": "10,000" - }, - { - "lemma": "worker", - "text": "workers" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "united", - "text": "United" - }, - { - "lemma": "state", - "text": "States" - }, - { - "lemma": "over", - "text": "over" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "next", - "text": "next" - }, - { - "lemma": "decade", - "text": "decade" - }, - { - "lemma": "if", - "text": "if" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "pacific", - "text": "Pacific" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "agreement", - "text": "agreement" - }, - { - "lemma": "pass", - "text": "passes" - }, - { - "lemma": "congress", - "text": "Congress" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "introduce", - "text": "Introducing" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Mark", - "text": "Mark" - }, - { - "lemma": "Parker", - "text": "Parker" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "'s", - "text": "'s" - }, - { - "lemma": "fast", - "text": "fast" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "growth", - "text": "growth" - }, - { - "lemma": "success", - "text": "success" - }, - { - "lemma": "story", - "text": "story" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "be", - "text": "was" - }, - { - "lemma": "make", - "text": "made" - }, - { - "lemma": "possible", - "text": "possible" - }, - { - "lemma": "because", - "text": "because" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "power", - "text": "power" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "we", - "text": "We" - }, - { - "lemma": "be", - "text": "are" - }, - { - "lemma": "also", - "text": "also" - }, - { - "lemma": "proof", - "text": "proof" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "work", - "text": "works" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "we", - "text": "we" - }, - { - "lemma": "believe", - "text": "believe" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "company", - "text": "companies" - }, - { - "lemma": "should", - "text": "should" - }, - { - "lemma": "see", - "text": "see" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "kind", - "text": "kind" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "success", - "text": "success" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "all", - "text": "all" - }, - { - "lemma": "company", - "text": "companies" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Parker", - "text": "Parker" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "labor", - "text": "Labor" - }, - { - "lemma": "group", - "text": "groups" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "if", - "text": "if" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "want", - "text": "wants" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "hire", - "text": "hire" - }, - { - "lemma": "American", - "text": "American" - }, - { - "lemma": "worker", - "text": "workers" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "should not", - "text": "shouldn't" - }, - { - "lemma": "be", - "text": "be" - }, - { - "lemma": "contingent", - "text": "contingent" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "deal", - "text": "deal" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "we", - "text": "We" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "hear", - "text": "heard" - }, - { - "lemma": "similar", - "text": "similar" - }, - { - "lemma": "promise", - "text": "promises" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "company", - "text": "companies" - }, - { - "lemma": "before", - "text": "before" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "very", - "text": "very" - }, - { - "lemma": "few", - "text": "few" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "pan", - "text": "panned" - }, - { - "lemma": "out", - "text": "out" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "we", - "text": "We" - }, - { - "lemma": "hope", - "text": "hope" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "time", - "text": "time" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "different", - "text": "different" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "Eric", - "text": "Eric" - }, - { - "lemma": "Hauser", - "text": "Hauser" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "AFL", - "text": "AFL" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "CIO", - "text": "CIO" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "decade", - "text": "Decades" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "experience", - "text": "experience" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "teach", - "text": "taught" - }, - { - "lemma": "we", - "text": "us" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "corporate", - "text": "corporate" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "driven", - "text": "driven" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "policy", - "text": "policy" - }, - { - "lemma": "too", - "text": "too" - }, - { - "lemma": "often", - "text": "often" - }, - { - "lemma": "accelerate", - "text": "accelerates" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "global", - "text": "global" - }, - { - "lemma": "race", - "text": "race" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "bottom", - "text": "bottom" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "USA", - "text": "USA" - }, - { - "lemma": "today", - "text": "TODAY" - }, - { - "lemma": "free", - "text": "Free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "critic", - "text": "critics" - }, - { - "lemma": "hit", - "text": "hit" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "over", - "text": "over" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "visit", - "text": "visit" - }, - { - "lemma": "like", - "text": "Like" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Clinton", - "text": "Clinton" - }, - { - "lemma": "before", - "text": "before" - }, - { - "lemma": "he", - "text": "him" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "'s", - "text": "'s" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "push", - "text": "push" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "meet", - "text": "met" - }, - { - "lemma": "resistance", - "text": "resistance" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "within", - "text": "within" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "own", - "text": "own" - }, - { - "lemma": "democratic", - "text": "Democratic" - }, - { - "lemma": "party", - "text": "party" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "white", - "text": "White" - }, - { - "lemma": "house", - "text": "House" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "argue", - "text": "argued" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "Trans", - "text": "Trans" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "Pacific", - "text": "Pacific" - }, - { - "lemma": "partnership", - "text": "Partnership" - }, - { - "lemma": "will", - "text": "will" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "more", - "text": "more" - }, - { - "lemma": "labor", - "text": "labor" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "environmental", - "text": "environmental" - }, - { - "lemma": "protection", - "text": "protections" - }, - { - "lemma": "than", - "text": "than" - }, - { - "lemma": "previous", - "text": "previous" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "agreement", - "text": "agreements" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "but", - "text": "But" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "have", - "text": "'s" - }, - { - "lemma": "also", - "text": "also" - }, - { - "lemma": "push", - "text": "pushing" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "fast", - "text": "fast" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "track", - "text": "track" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "negotiating", - "text": "negotiating" - }, - { - "lemma": "rule", - "text": "rules" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "know", - "text": "known" - }, - { - "lemma": "as", - "text": "as" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "promotion", - "text": "promotion" - }, - { - "lemma": "authority", - "text": "authority" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "would", - "text": "would" - }, - { - "lemma": "make", - "text": "make" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "impossible", - "text": "impossible" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "Congress", - "text": "Congress" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "insist", - "text": "insist" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "strong", - "text": "stronger" - }, - { - "lemma": "provision", - "text": "provisions" - }, - { - "lemma": "before", - "text": "before" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "up", - "text": "up" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "or", - "text": "or" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "down", - "text": "down" - }, - { - "lemma": "vote", - "text": "vote" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "passage", - "text": "passage" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "acknowledge", - "text": "acknowledged" - }, - { - "lemma": "that", - "text": "that" - }, - { - "lemma": "intra", - "text": "intra" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "party", - "text": "party" - }, - { - "lemma": "debate", - "text": "debate" - }, - { - "lemma": "Friday", - "text": "Friday" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "say", - "text": "saying" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "some", - "text": "Some" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "I", - "text": "my" - }, - { - "lemma": "dear", - "text": "dearest" - }, - { - "lemma": "friend", - "text": "friends" - }, - { - "lemma": "be", - "text": "are" - }, - { - "lemma": "wrong", - "text": "wrong" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "they", - "text": "They" - }, - { - "lemma": "be", - "text": "'re" - }, - { - "lemma": "I", - "text": "my" - }, - { - "lemma": "fellow", - "text": "fellow" - }, - { - "lemma": "traveler", - "text": "travelers" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "minimum", - "text": "minimum" - }, - { - "lemma": "wage", - "text": "wage" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "job", - "text": "job" - }, - { - "lemma": "train", - "text": "training" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "clean", - "text": "clean" - }, - { - "lemma": "energy", - "text": "energy" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "they", - "text": "They" - }, - { - "lemma": "be", - "text": "'re" - }, - { - "lemma": "with", - "text": "with" - }, - { - "lemma": "I", - "text": "me" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "every", - "text": "every" - }, - { - "lemma": "progressive", - "text": "progressive" - }, - { - "lemma": "issue", - "text": "issue" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "then", - "text": "then" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "one", - "text": "one" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "they", - "text": "they" - }, - { - "lemma": "be", - "text": "'re" - }, - { - "lemma": "whupping", - "text": "whupping" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "I", - "text": "me" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "but", - "text": "But" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "he", - "text": "he" - }, - { - "lemma": "have", - "text": "has" - }, - { - "lemma": "no", - "text": "no" - }, - { - "lemma": "political", - "text": "political" - }, - { - "lemma": "reason", - "text": "reason" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "turn", - "text": "turn" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "back", - "text": "back" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "those", - "text": "those" - }, - { - "lemma": "group", - "text": "groups" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "I", - "text": "I" - }, - { - "lemma": "have", - "text": "'ve" - }, - { - "lemma": "run", - "text": "run" - }, - { - "lemma": "I", - "text": "my" - }, - { - "lemma": "last", - "text": "last" - }, - { - "lemma": "election", - "text": "election" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "only", - "text": "only" - }, - { - "lemma": "reason", - "text": "reason" - }, - { - "lemma": "I", - "text": "I" - }, - { - "lemma": "be", - "text": "'m" - }, - { - "lemma": "do", - "text": "doing" - }, - { - "lemma": "something", - "text": "something" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "because", - "text": "because" - }, - { - "lemma": "I", - "text": "I" - }, - { - "lemma": "think", - "text": "think" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "have", - "text": "'s" - }, - { - "lemma": "well", - "text": "best" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "American", - "text": "American" - }, - { - "lemma": "worker", - "text": "workers" - }, - { - "lemma": "and", - "text": "and" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "American", - "text": "American" - }, - { - "lemma": "economy", - "text": "economy" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "ever", - "text": "Ever" - }, - { - "lemma": "since", - "text": "since" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "white", - "text": "White" - }, - { - "lemma": "house", - "text": "House" - }, - { - "lemma": "announce", - "text": "announced" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "visit", - "text": "visit" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "critic", - "text": "critics" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "proposed", - "text": "proposed" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": "deal", - "text": "deal" - }, - { - "lemma": "have", - "text": "have" - }, - { - "lemma": "question", - "text": "questioned" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "appearance", - "text": "appearances" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "use", - "text": "using" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "company", - "text": "company" - }, - { - "lemma": "know", - "text": "known" - }, - { - "lemma": "for", - "text": "for" - }, - { - "lemma": "outsourcing", - "text": "outsourcing" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "promote", - "text": "promote" - }, - { - "lemma": "free", - "text": "free" - }, - { - "lemma": "trade", - "text": "trade" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "it", - "text": "It" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "sad", - "text": "sad" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "see", - "text": "see" - }, - { - "lemma": "how", - "text": "how" - }, - { - "lemma": "detach", - "text": "detached" - }, - { - "lemma": "from", - "text": "from" - }, - { - "lemma": "reality", - "text": "reality" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "when", - "text": "when" - }, - { - "lemma": "it", - "text": "it" - }, - { - "lemma": "come", - "text": "comes" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "TPP", - "text": "TPP" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "say", - "text": "said" - }, - { - "lemma": "Murshed", - "text": "Murshed" - }, - { - "lemma": "Zaheed", - "text": "Zaheed" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "credo", - "text": "Credo" - }, - { - "lemma": "action", - "text": "Action" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "progressive", - "text": "progressive" - }, - { - "lemma": "activist", - "text": "activist" - }, - { - "lemma": "group", - "text": "group" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "the", - "text": "The" - }, - { - "lemma": "symbolism", - "text": "symbolism" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "he", - "text": "his" - }, - { - "lemma": "speech", - "text": "speech" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "stagger", - "text": "staggering" - }, - { - "lemma": "—", - "text": "—" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "Nike", - "text": "Nike" - }, - { - "lemma": "brand", - "text": "brand" - }, - { - "lemma": "be", - "text": "was" - }, - { - "lemma": "build", - "text": "built" - }, - { - "lemma": "by", - "text": "by" - }, - { - "lemma": "outsourcing", - "text": "outsourcing" - }, - { - "lemma": "manufacturing", - "text": "manufacturing" - }, - { - "lemma": "to", - "text": "to" - }, - { - "lemma": "sweatshop", - "text": "sweatshops" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Asia", - "text": "Asia" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "follow", - "text": "Follow" - }, - { - "lemma": "@", - "text": "@" - }, - { - "lemma": "gregorykorte", - "text": "gregorykorte" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "twitter", - "text": "Twitter" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "demonstrator", - "text": "Demonstrators" - }, - { - "lemma": "gather", - "text": "gather" - }, - { - "lemma": "near", - "text": "near" - }, - { - "lemma": "the", - "text": "the" - }, - { - "lemma": "sentinel", - "text": "Sentinel" - }, - { - "lemma": "hotel", - "text": "Hotel" - }, - { - "lemma": "where", - "text": "where" - }, - { - "lemma": "President", - "text": "President" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "speak", - "text": "spoke" - }, - { - "lemma": "at", - "text": "at" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "democratic", - "text": "Democratic" - }, - { - "lemma": "fundraiser", - "text": "fundraiser" - }, - { - "lemma": "Thursday", - "text": "Thursday" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "photo", - "text": "Photo" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "Thomas", - "text": "Thomas" - }, - { - "lemma": "Boyd", - "text": "Boyd" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "AP", - "text": "AP" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "438", - "text": "438" - }, - { - "lemma": "connect", - "text": "CONNECT" - }, - { - "lemma": "142", - "text": "142" - }, - { - "lemma": "tweet", - "text": "TWEET" - }, - { - "lemma": "18", - "text": "18" - }, - { - "lemma": "LINKEDIN", - "text": "LINKEDIN" - }, - { - "lemma": "54", - "text": "54" - }, - { - "lemma": "COMMENTEMAILMORE", - "text": "COMMENTEMAILMORE" - }, - { - "lemma": "Read", - "text": "Read" - }, - { - "lemma": "or", - "text": "or" - }, - { - "lemma": "share", - "text": "Share" - }, - { - "lemma": "this", - "text": "this" - }, - { - "lemma": "story", - "text": "story" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "usat.ly", - "text": "usat.ly" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "1bDiUq2", - "text": "1bDiUq2" - }, - { - "lemma": "USA", - "text": "USA" - }, - { - "lemma": "Now", - "text": "NOW" - }, - { - "lemma": "Michael", - "text": "Michael" - }, - { - "lemma": "Wolff", - "text": "Wolff" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "Britain", - "text": "Britain" - }, - { - "lemma": "be", - "text": "is" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "very", - "text": "very" - }, - { - "lemma": "conservative", - "text": "conservative" - }, - { - "lemma": "nation", - "text": "nation" - }, - { - "lemma": "May", - "text": "May" - }, - { - "lemma": "08", - "text": "08" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "2015", - "text": "2015" - } + "Obama", + "ask", + "lawmaker", + "to", + "lift", + "obstacle", + "to", + "close", + "prison", + "at", + "Guantanamo", + "Bay", + "The", + "inside", + "track", + "on", + "Washington", + "politics", + ".", + "be", + "the", + "one", + "to", + "know", + "about", + "new", + "story", + "from", + "PowerPost", + ".", + "sign", + "up", + "to", + "follow", + ",", + "and", + "we", + "will", + "e", + "-", + "mail", + "you", + "free", + "update", + "as", + "they", + "be", + "publish", + ".", + "you", + "will", + "receive", + "free", + "e", + "-", + "mail", + "news", + "update", + "each", + "time", + "a", + "new", + "story", + "be", + "publish", + ".", + "you", + "be", + "all", + "set", + "!" ], "posTags": [ - { - "pos": "VI", - "text": "Enter" - }, - { - "pos": "PROP", - "text": "City" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "State" - }, - { - "pos": "COORD", - "text": "or" - }, - { - "pos": "NOUN", - "text": "Zip" - }, - { - "pos": "NOUN", - "text": "Cancel" - }, - { - "pos": "NOUN", - "text": "Log" - }, - { - "pos": "ADV", - "text": "out" - }, - { - "pos": "NOUN", - "text": "Sign" - }, - { - "pos": "PREP", - "text": "In" - }, - { - "pos": "PROP", - "text": "FAQ" - }, - { - "pos": "VPRES", - "text": "Get" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "news" - }, - { - "pos": "PROP", - "text": "FacebookEmail" - }, - { - "pos": "NOUN", - "text": "Twitter" - }, - { - "pos": "PROP", - "text": "Google" - }, - { - "pos": "PUNCT", - "text": "+" - }, - { - "pos": "PROP", - "text": "LinkedIn" - }, - { - "pos": "PROP", - "text": "Pinterest" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "HQ" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VPRES", - "text": "makes" - }, - { - "pos": "ADJ", - "text": "progressive" - }, - { - "pos": "NOUN", - "text": "case" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "took" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "campaign" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "deal" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "world" - }, - { - "pos": "NOUN", - "text": "headquarters" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "where" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VS", - "text": "'s" - }, - { - "pos": "VPAP", - "text": "extracted" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "pledge" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "world" - }, - { - "pos": "POSS", - "text": "'s" - }, - { - "pos": "ADJSUP", - "text": "largest" - }, - { - "pos": "ADJ", - "text": "athletic" - }, - { - "pos": "NOUN", - "text": "shoe" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VAUX", - "text": "will" - }, - { - "pos": "VI", - "text": "add" - }, - { - "pos": "CARD", - "text": "10,000" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "jobs" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Post" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "PROP", - "text": "Facebook" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "HQ" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VPRES", - "text": "makes" - }, - { - "pos": "ADJ", - "text": "progressive" - }, - { - "pos": "NOUN", - "text": "case" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "took" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "campaign" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "deal" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "world" - }, - { - "pos": "NOUN", - "text": "headquarters" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "where" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VS", - "text": "'s" - }, - { - "pos": "VPAP", - "text": "extracted" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "pledge" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "world" - }, - { - "pos": "POSS", - "text": "'s" - }, - { - "pos": "ADJSUP", - "text": "largest" - }, - { - "pos": "ADJ", - "text": "athletic" - }, - { - "pos": "NOUN", - "text": "shoe" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VAUX", - "text": "will" - }, - { - "pos": "VI", - "text": "add" - }, - { - "pos": "CARD", - "text": "10,000" - }, - { - "pos": "PROP", - "text": "U.S." - }, - { - "pos": "NOUN", - "text": "jobs" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Check" - }, - { - "pos": "ADV", - "text": "out" - }, - { - "pos": "DET", - "text": "this" - }, - { - "pos": "NOUN", - "text": "story" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "PROP", - "text": "USATODAY.com" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "ADJ", - "text": "http" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "usat.ly" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "1bDiUq2" - }, - { - "pos": "PUNCT", - "text": "{" - }, - { - "pos": "MEAS", - "text": "#" - }, - { - "pos": "MEAS", - "text": "#" - }, - { - "pos": "PUNCT", - "text": "}" - }, - { - "pos": "PROP", - "text": "CancelSend" - }, - { - "pos": "DET", - "text": "A" - }, - { - "pos": "NOUN", - "text": "link" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "VBPAP", - "text": "been" - }, - { - "pos": "VPAP", - "text": "sent" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "your" - }, - { - "pos": "NOUN", - "text": "friend" - }, - { - "pos": "POSS", - "text": "'s" - }, - { - "pos": "NOUN", - "text": "email" - }, - { - "pos": "NOUN", - "text": "address" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PARTPAST", - "text": "Posted" - }, - { - "pos": "SENT", - "text": "!" - }, - { - "pos": "DET", - "text": "A" - }, - { - "pos": "NOUN", - "text": "link" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "VBPAP", - "text": "been" - }, - { - "pos": "VPAP", - "text": "posted" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "your" - }, - { - "pos": "ADJ", - "text": "Facebook" - }, - { - "pos": "NOUN", - "text": "feed" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "CARD", - "text": "54" - }, - { - "pos": "INFTO", - "text": "To" - }, - { - "pos": "VI", - "text": "find" - }, - { - "pos": "ADV", - "text": "out" - }, - { - "pos": "QUANTCMP", - "text": "more" - }, - { - "pos": "PREP", - "text": "about" - }, - { - "pos": "PROP", - "text": "Facebook" - }, - { - "pos": "PARTPRES", - "text": "commenting" - }, - { - "pos": "ADV", - "text": "please" - }, - { - "pos": "VPAST", - "text": "read" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "Conversation" - }, - { - "pos": "NOUN", - "text": "Guidelines" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "PROP", - "text": "FAQs" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "HQ" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VPRES", - "text": "makes" - }, - { - "pos": "ADJ", - "text": "progressive" - }, - { - "pos": "NOUN", - "text": "case" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "PROP", - "text": "Gregory" - }, - { - "pos": "PROP", - "text": "Korte" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "USA" - }, - { - "pos": "ADV", - "text": "TODAY" - }, - { - "pos": "CARD", - "text": "2:25" - }, - { - "pos": "ADV", - "text": "p.m." - }, - { - "pos": "NOUN", - "text": "EDT" - }, - { - "pos": "PROP", - "text": "May" - }, - { - "pos": "CARD", - "text": "8" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CARD", - "text": "2015" - }, - { - "pos": "NOUN", - "text": "President" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPRES", - "text": "takes" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "stage" - }, - { - "pos": "PREP", - "text": "before" - }, - { - "pos": "PARTPRES", - "text": "speaking" - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "headquarters" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "Beaverton" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Ore." - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "visited" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "giant" - }, - { - "pos": "ADJ", - "text": "athletic" - }, - { - "pos": "NOUN", - "text": "apparel" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "make" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "policy" - }, - { - "pos": "NOUN", - "text": "pitch" - }, - { - "pos": "PREPADVAS", - "text": "as" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPRES", - "text": "struggles" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "win" - }, - { - "pos": "PREP", - "text": "over" - }, - { - "pos": "NOUN", - "text": "Democrats" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "WPRON", - "text": "what" - }, - { - "pos": "VAUX", - "text": "could" - }, - { - "pos": "VBI", - "text": "be" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "last" - }, - { - "pos": "ADJ", - "text": "major" - }, - { - "pos": "ADJ", - "text": "legislative" - }, - { - "pos": "NOUN", - "text": "push" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "presidency" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN", - "text": "Photo" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "PROP", - "text": "Pablo" - }, - { - "pos": "PROP", - "text": "Martinez" - }, - { - "pos": "PROP", - "text": "Monsivais" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "AP" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CARD", - "text": "438" - }, - { - "pos": "VI", - "text": "CONNECT" - }, - { - "pos": "CARD", - "text": "142" - }, - { - "pos": "NOUN", - "text": "TWEET" - }, - { - "pos": "CARD", - "text": "18" - }, - { - "pos": "PROP", - "text": "LINKEDIN" - }, - { - "pos": "CARD", - "text": "54" - }, - { - "pos": "PROP", - "text": "COMMENTEMAILMORE" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "dressed" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "campaign" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "clothing" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJ", - "text": "middle" - }, - { - "pos": "NOUN", - "text": "class" - }, - { - "pos": "NOUN", - "text": "economics" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PARTPRES", - "text": "appealing" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "ADJ", - "text": "liberal" - }, - { - "pos": "NOUN", - "text": "base" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "support" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "Pacific" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "deal" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "VAUX", - "text": "would" - }, - { - "pos": "VI", - "text": "help" - }, - { - "pos": "ADJ", - "text": "American" - }, - { - "pos": "NOUN", - "text": "workers" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PARTPRES", - "text": "Speaking" - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "world" - }, - { - "pos": "NOUN", - "text": "headquarters" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "cast" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJPRON", - "text": "same" - }, - { - "pos": "NOUN", - "text": "terms" - }, - { - "pos": "PREPADVAS", - "text": "as" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "efforts" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "pass" - }, - { - "pos": "ADJ", - "text": "universal" - }, - { - "pos": "NOUN", - "text": "health" - }, - { - "pos": "NOUN", - "text": "care" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VPRES", - "text": "adopt" - }, - { - "pos": "ADJ", - "text": "clean" - }, - { - "pos": "NOUN", - "text": "energy" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "VI", - "text": "raise" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "minimum" - }, - { - "pos": "NOUN", - "text": "wage" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJING", - "text": "Passing" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "agreements" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "NOUN", - "text": "part" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "that" - }, - { - "pos": "NOUN", - "text": "agenda" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "COSUB", - "text": "if" - }, - { - "pos": "DET", - "text": "those" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "agreements" - }, - { - "pos": "VBPRES", - "text": "are" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "right" - }, - { - "pos": "NOUN", - "text": "kinds" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "agreements" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "Like" - }, - { - "pos": "ADJPRON", - "text": "other" - }, - { - "pos": "NOUN", - "text": "issues" - }, - { - "pos": "PRONPERS", - "text": "we" - }, - { - "pos": "VHPRES", - "text": "'ve" - }, - { - "pos": "VPAP", - "text": "waged" - }, - { - "pos": "ADJ", - "text": "slow" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADJ", - "text": "steady" - }, - { - "pos": "NOUN", - "text": "fights" - }, - { - "pos": "ADV", - "text": "on" - }, - { - "pos": "PREP", - "text": "over" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "last" - }, - { - "pos": "CARD", - "text": "seven" - }, - { - "pos": "NOUN", - "text": "years" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "this" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "ADV", - "text": "also" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "question" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "past" - }, - { - "pos": "PREP", - "text": "versus" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "present" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "But" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "made" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "case" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "QUANT", - "text": "many" - }, - { - "pos": "NOUN", - "text": "liberals" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "ADV", - "text": "notably" - }, - { - "pos": "PROP", - "text": "Vermont" - }, - { - "pos": "TIT", - "text": "Sen." - }, - { - "pos": "PROP", - "text": "Bernie" - }, - { - "pos": "PROP", - "text": "Sanders" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "presidential" - }, - { - "pos": "NOUN", - "text": "candidate" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "NOUN", - "text": "see" - }, - { - "pos": "PREPADVAS", - "text": "as" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "symbol" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "ADJPAP", - "text": "failed" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "policies" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "world" - }, - { - "pos": "POSS", - "text": "'s" - }, - { - "pos": "ADJSUP", - "text": "largest" - }, - { - "pos": "ADJ", - "text": "athletic" - }, - { - "pos": "NOUN", - "text": "shoe" - }, - { - "pos": "NOUN", - "text": "manufacturer" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "imports" - }, - { - "pos": "NOUN", - "text": "shoes" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "NOUN", - "text": "contract" - }, - { - "pos": "NOUN", - "text": "factories" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "NOUN", - "text": "places" - }, - { - "pos": "PREP", - "text": "like" - }, - { - "pos": "PROP", - "text": "Vietnam" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "where" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "minimum" - }, - { - "pos": "NOUN", - "text": "wage" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "CARD", - "text": "56" - }, - { - "pos": "NOUN", - "text": "cents" - }, - { - "pos": "DET", - "text": "an" - }, - { - "pos": "NOUN", - "text": "hour" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "PROP", - "text": "Vietnam" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "where" - }, - { - "pos": "CARD", - "text": "330,000" - }, - { - "pos": "NOUN", - "text": "workers" - }, - { - "pos": "VPRES", - "text": "make" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "shoes" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX", - "text": "would" - }, - { - "pos": "VHI", - "text": "have" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "increase" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "minimum" - }, - { - "pos": "NOUN", - "text": "wage" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VPRES", - "text": "improve" - }, - { - "pos": "ADJING", - "text": "working" - }, - { - "pos": "NOUN", - "text": "conditions" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "ADV", - "text": "even" - }, - { - "pos": "VI", - "text": "establish" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "right" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "workers" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "join" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "union" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "It" - }, - { - "pos": "VDPRES", - "text": "doesn't" - }, - { - "pos": "VI", - "text": "mean" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "ADV", - "text": "suddenly" - }, - { - "pos": "ADJING", - "text": "working" - }, - { - "pos": "NOUN", - "text": "conditions" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "Vietnam" - }, - { - "pos": "VAUX", - "text": "will" - }, - { - "pos": "VBI", - "text": "be" - }, - { - "pos": "PREP", - "text": "like" - }, - { - "pos": "PRONPERS", - "text": "they" - }, - { - "pos": "VBPRES", - "text": "are" - }, - { - "pos": "ADV", - "text": "here" - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "or" - }, - { - "pos": "ADV", - "text": "here" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "Portland" - }, - { - "pos": "ADV", - "text": "right" - }, - { - "pos": "ADV", - "text": "away" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COSUB", - "text": "but" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VPRES", - "text": "moves" - }, - { - "pos": "PRONPERS", - "text": "us" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "right" - }, - { - "pos": "NOUN", - "text": "direction" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "COSUB", - "text": "If" - }, - { - "pos": "PRONPERS", - "text": "you" - }, - { - "pos": "VBPRES", - "text": "'re" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "country" - }, - { - "pos": "PRONREL", - "text": "that" - }, - { - "pos": "VPRES", - "text": "wants" - }, - { - "pos": "PREP", - "text": "into" - }, - { - "pos": "DET", - "text": "this" - }, - { - "pos": "NOUN", - "text": "agreement" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRONPERS", - "text": "you" - }, - { - "pos": "VHPRES", - "text": "have" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "meet" - }, - { - "pos": "ADJCMP", - "text": "higher" - }, - { - "pos": "NOUN", - "text": "standards" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "If" - }, - { - "pos": "PRONPERS", - "text": "you" - }, - { - "pos": "VDPRES", - "text": "don't" - }, - { - "pos": "PRONPERS", - "text": "you" - }, - { - "pos": "VBPRES", - "text": "'re" - }, - { - "pos": "ADV", - "text": "out" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PROP", - "text": "USA" - }, - { - "pos": "ADV", - "text": "TODAY" - }, - { - "pos": "NOUN", - "text": "Senate" - }, - { - "pos": "NOUN", - "text": "panel" - }, - { - "pos": "VPRES", - "text": "approves" - }, - { - "pos": "POSS", - "text": "'" - }, - { - "pos": "ADJ", - "text": "fast" - }, - { - "pos": "NOUN", - "text": "track" - }, - { - "pos": "POSS", - "text": "'" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "bill" - }, - { - "pos": "PREP", - "text": "At" - }, - { - "pos": "ORD", - "text": "first" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "VPAST", - "text": "seemed" - }, - { - "pos": "PREP", - "text": "like" - }, - { - "pos": "DET", - "text": "an" - }, - { - "pos": "ADJ", - "text": "unlikely" - }, - { - "pos": "NOUN", - "text": "venue" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "speech" - }, - { - "pos": "PARTPRES", - "text": "touting" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "virtues" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "But" - }, - { - "pos": "NOUN", - "text": "hours" - }, - { - "pos": "PREP", - "text": "before" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "speech" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "VPAST", - "text": "announced" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VAUX", - "text": "would" - }, - { - "pos": "VI", - "text": "hire" - }, - { - "pos": "CARD", - "text": "10,000" - }, - { - "pos": "NOUN", - "text": "workers" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJPAP", - "text": "United" - }, - { - "pos": "NOUN", - "text": "States" - }, - { - "pos": "PREP", - "text": "over" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "next" - }, - { - "pos": "NOUN", - "text": "decade" - }, - { - "pos": "COSUB", - "text": "if" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "Pacific" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "agreement" - }, - { - "pos": "NOUN", - "text": "passes" - }, - { - "pos": "NOUN", - "text": "Congress" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PARTPRES", - "text": "Introducing" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Mark" - }, - { - "pos": "PROP", - "text": "Parker" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "POSS", - "text": "'s" - }, - { - "pos": "ADJ", - "text": "fast" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN", - "text": "growth" - }, - { - "pos": "NOUN", - "text": "success" - }, - { - "pos": "NOUN", - "text": "story" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VBPAST", - "text": "was" - }, - { - "pos": "VPAP", - "text": "made" - }, - { - "pos": "ADJ", - "text": "possible" - }, - { - "pos": "COSUB", - "text": "because" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "power" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "We" - }, - { - "pos": "VBPRES", - "text": "are" - }, - { - "pos": "ADV", - "text": "also" - }, - { - "pos": "ADJ", - "text": "proof" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "works" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "PRONPERS", - "text": "we" - }, - { - "pos": "VPRES", - "text": "believe" - }, - { - "pos": "DET", - "text": "that" - }, - { - "pos": "NOUN", - "text": "companies" - }, - { - "pos": "VAUX", - "text": "should" - }, - { - "pos": "VI", - "text": "see" - }, - { - "pos": "DET", - "text": "that" - }, - { - "pos": "NOUN", - "text": "kind" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "success" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "QUANT", - "text": "all" - }, - { - "pos": "NOUN", - "text": "companies" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PROP", - "text": "Parker" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Labor" - }, - { - "pos": "NOUN", - "text": "groups" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "COSUB", - "text": "if" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "wants" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "hire" - }, - { - "pos": "ADJ", - "text": "American" - }, - { - "pos": "NOUN", - "text": "workers" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VAUX", - "text": "shouldn't" - }, - { - "pos": "VBI", - "text": "be" - }, - { - "pos": "ADJ", - "text": "contingent" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "deal" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "We" - }, - { - "pos": "VHPRES", - "text": "have" - }, - { - "pos": "VPAP", - "text": "heard" - }, - { - "pos": "ADJ", - "text": "similar" - }, - { - "pos": "NOUN", - "text": "promises" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "NOUN", - "text": "companies" - }, - { - "pos": "COSUB", - "text": "before" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "ADV", - "text": "very" - }, - { - "pos": "QUANT", - "text": "few" - }, - { - "pos": "VHI", - "text": "have" - }, - { - "pos": "VPAP", - "text": "panned" - }, - { - "pos": "ADV", - "text": "out" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRONPERS", - "text": "We" - }, - { - "pos": "VPRES", - "text": "hope" - }, - { - "pos": "DET", - "text": "this" - }, - { - "pos": "NOUN", - "text": "time" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "ADJ", - "text": "different" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "PROP", - "text": "Eric" - }, - { - "pos": "PROP", - "text": "Hauser" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "AFL" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "CIO" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN", - "text": "Decades" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "experience" - }, - { - "pos": "VHPRES", - "text": "have" - }, - { - "pos": "VPAP", - "text": "taught" - }, - { - "pos": "PRONPERS", - "text": "us" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "ADJ", - "text": "corporate" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADJPAP", - "text": "driven" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "policy" - }, - { - "pos": "ADV", - "text": "too" - }, - { - "pos": "ADV", - "text": "often" - }, - { - "pos": "VPRES", - "text": "accelerates" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "global" - }, - { - "pos": "NOUN", - "text": "race" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "bottom" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PROP", - "text": "USA" - }, - { - "pos": "ADV", - "text": "TODAY" - }, - { - "pos": "ADJ", - "text": "Free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "critics" - }, - { - "pos": "VPAST", - "text": "hit" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "PREP", - "text": "over" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "visit" - }, - { - "pos": "PREP", - "text": "Like" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Clinton" - }, - { - "pos": "COSUB", - "text": "before" - }, - { - "pos": "PRONPERS", - "text": "him" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "POSS", - "text": "'s" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "push" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "VPAP", - "text": "met" - }, - { - "pos": "NOUN", - "text": "resistance" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "PREP", - "text": "within" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "ADJ", - "text": "own" - }, - { - "pos": "ADJ", - "text": "Democratic" - }, - { - "pos": "NOUN", - "text": "party" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "ADJ", - "text": "White" - }, - { - "pos": "NOUN", - "text": "House" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "VPAP", - "text": "argued" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "Trans" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "Pacific" - }, - { - "pos": "NOUN", - "text": "Partnership" - }, - { - "pos": "VAUX", - "text": "will" - }, - { - "pos": "VHI", - "text": "have" - }, - { - "pos": "QUANTCMP", - "text": "more" - }, - { - "pos": "NOUN", - "text": "labor" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "ADJ", - "text": "environmental" - }, - { - "pos": "NOUN", - "text": "protections" - }, - { - "pos": "COTHAN", - "text": "than" - }, - { - "pos": "ADJ", - "text": "previous" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "agreements" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "But" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VS", - "text": "'s" - }, - { - "pos": "ADV", - "text": "also" - }, - { - "pos": "PARTPRES", - "text": "pushing" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJ", - "text": "fast" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN", - "text": "track" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJING", - "text": "negotiating" - }, - { - "pos": "NOUN", - "text": "rules" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "PARTPAST", - "text": "known" - }, - { - "pos": "PREPADVAS", - "text": "as" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "promotion" - }, - { - "pos": "NOUN", - "text": "authority" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "PRON", - "text": "that" - }, - { - "pos": "VAUX", - "text": "would" - }, - { - "pos": "VI", - "text": "make" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "ADJ", - "text": "impossible" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "PROP", - "text": "Congress" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "insist" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "ADJCMP", - "text": "stronger" - }, - { - "pos": "NOUN", - "text": "provisions" - }, - { - "pos": "PREP", - "text": "before" - }, - { - "pos": "DET", - "text": "an" - }, - { - "pos": "ADV", - "text": "up" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "COORD", - "text": "or" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADV", - "text": "down" - }, - { - "pos": "NOUN", - "text": "vote" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "NOUN", - "text": "passage" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "acknowledged" - }, - { - "pos": "COSUB", - "text": "that" - }, - { - "pos": "ADJ", - "text": "intra" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN", - "text": "party" - }, - { - "pos": "NOUN", - "text": "debate" - }, - { - "pos": "NOUN", - "text": "Friday" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PARTPRES", - "text": "saying" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "QUANT", - "text": "Some" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "my" - }, - { - "pos": "ADJSUP", - "text": "dearest" - }, - { - "pos": "NOUN", - "text": "friends" - }, - { - "pos": "VBPRES", - "text": "are" - }, - { - "pos": "ADJ", - "text": "wrong" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "They" - }, - { - "pos": "VBPRES", - "text": "'re" - }, - { - "pos": "DET", - "text": "my" - }, - { - "pos": "NOUN", - "text": "fellow" - }, - { - "pos": "NOUN", - "text": "travelers" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "ADJ", - "text": "minimum" - }, - { - "pos": "NOUN", - "text": "wage" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "NOUN", - "text": "job" - }, - { - "pos": "PARTPRES", - "text": "training" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "ADJ", - "text": "clean" - }, - { - "pos": "NOUN", - "text": "energy" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRONPERS", - "text": "They" - }, - { - "pos": "VBPRES", - "text": "'re" - }, - { - "pos": "PREP", - "text": "with" - }, - { - "pos": "PRONPERS", - "text": "me" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "QUANT", - "text": "every" - }, - { - "pos": "ADJ", - "text": "progressive" - }, - { - "pos": "NOUN", - "text": "issue" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "ADV", - "text": "then" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "DET", - "text": "this" - }, - { - "pos": "PRONONE", - "text": "one" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRONPERS", - "text": "they" - }, - { - "pos": "VBPRES", - "text": "'re" - }, - { - "pos": "VPROG", - "text": "whupping" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "PRONPERS", - "text": "me" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "But" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "PRONPERS", - "text": "he" - }, - { - "pos": "VHPRES", - "text": "has" - }, - { - "pos": "DET", - "text": "no" - }, - { - "pos": "ADJ", - "text": "political" - }, - { - "pos": "NOUN", - "text": "reason" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "turn" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "back" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "DET", - "text": "those" - }, - { - "pos": "NOUN", - "text": "groups" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "I" - }, - { - "pos": "VHPRES", - "text": "'ve" - }, - { - "pos": "VPAP", - "text": "run" - }, - { - "pos": "DET", - "text": "my" - }, - { - "pos": "ADJ", - "text": "last" - }, - { - "pos": "NOUN", - "text": "election" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "ADJ", - "text": "only" - }, - { - "pos": "NOUN", - "text": "reason" - }, - { - "pos": "PRONPERS", - "text": "I" - }, - { - "pos": "VBPRES", - "text": "'m" - }, - { - "pos": "VDPROG", - "text": "doing" - }, - { - "pos": "PRON", - "text": "something" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "COSUB", - "text": "because" - }, - { - "pos": "PRONPERS", - "text": "I" - }, - { - "pos": "VPRES", - "text": "think" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VS", - "text": "'s" - }, - { - "pos": "ADVSUP", - "text": "best" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "ADJ", - "text": "American" - }, - { - "pos": "NOUN", - "text": "workers" - }, - { - "pos": "COORD", - "text": "and" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "American" - }, - { - "pos": "NOUN", - "text": "economy" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADV", - "text": "Ever" - }, - { - "pos": "COSUB", - "text": "since" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJ", - "text": "White" - }, - { - "pos": "NOUN", - "text": "House" - }, - { - "pos": "VPAST", - "text": "announced" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "visit" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "critics" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "ADJPAP", - "text": "proposed" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "NOUN", - "text": "deal" - }, - { - "pos": "VHPRES", - "text": "have" - }, - { - "pos": "VPAP", - "text": "questioned" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "appearances" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "PARTPRES", - "text": "using" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "NOUN", - "text": "company" - }, - { - "pos": "PARTPAST", - "text": "known" - }, - { - "pos": "PREP", - "text": "for" - }, - { - "pos": "PARTPRES", - "text": "outsourcing" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "promote" - }, - { - "pos": "ADJ", - "text": "free" - }, - { - "pos": "NOUN", - "text": "trade" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRONPERS", - "text": "It" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "ADJ", - "text": "sad" - }, - { - "pos": "INFTO", - "text": "to" - }, - { - "pos": "VI", - "text": "see" - }, - { - "pos": "WADV", - "text": "how" - }, - { - "pos": "PARTPAST", - "text": "detached" - }, - { - "pos": "PREP", - "text": "from" - }, - { - "pos": "NOUN", - "text": "reality" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "COSUB", - "text": "when" - }, - { - "pos": "PRONPERS", - "text": "it" - }, - { - "pos": "VPRES", - "text": "comes" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "PROP", - "text": "TPP" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VPAST", - "text": "said" - }, - { - "pos": "PROP", - "text": "Murshed" - }, - { - "pos": "PROP", - "text": "Zaheed" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "NOUN", - "text": "Credo" - }, - { - "pos": "NOUN", - "text": "Action" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "progressive" - }, - { - "pos": "NOUN", - "text": "activist" - }, - { - "pos": "NOUN", - "text": "group" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET", - "text": "The" - }, - { - "pos": "NOUN", - "text": "symbolism" - }, - { - "pos": "PREP", - "text": "of" - }, - { - "pos": "DET", - "text": "his" - }, - { - "pos": "NOUN", - "text": "speech" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "VPROG", - "text": "staggering" - }, - { - "pos": "PUNCT", - "text": "—" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "PROP", - "text": "Nike" - }, - { - "pos": "NOUN", - "text": "brand" - }, - { - "pos": "VBPAST", - "text": "was" - }, - { - "pos": "VPAP", - "text": "built" - }, - { - "pos": "PREP", - "text": "by" - }, - { - "pos": "PARTPRES", - "text": "outsourcing" - }, - { - "pos": "NOUNING", - "text": "manufacturing" - }, - { - "pos": "PREP", - "text": "to" - }, - { - "pos": "NOUN", - "text": "sweatshops" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "PROP", - "text": "Asia" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VI", - "text": "Follow" - }, - { - "pos": "MEAS", - "text": "@" - }, - { - "pos": "ADJ", - "text": "gregorykorte" - }, - { - "pos": "PREP", - "text": "on" - }, - { - "pos": "NOUN", - "text": "Twitter" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Demonstrators" - }, - { - "pos": "NOUN", - "text": "gather" - }, - { - "pos": "PREP", - "text": "near" - }, - { - "pos": "DET", - "text": "the" - }, - { - "pos": "NOUN", - "text": "Sentinel" - }, - { - "pos": "NOUN", - "text": "Hotel" - }, - { - "pos": "COSUB", - "text": "where" - }, - { - "pos": "TIT", - "text": "President" - }, - { - "pos": "PROP", - "text": "Obama" - }, - { - "pos": "VPAST", - "text": "spoke" - }, - { - "pos": "PREP", - "text": "at" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "Democratic" - }, - { - "pos": "NOUN", - "text": "fundraiser" - }, - { - "pos": "NOUN", - "text": "Thursday" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN", - "text": "Photo" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "PROP", - "text": "Thomas" - }, - { - "pos": "PROP", - "text": "Boyd" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "AP" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CARD", - "text": "438" - }, - { - "pos": "VI", - "text": "CONNECT" - }, - { - "pos": "CARD", - "text": "142" - }, - { - "pos": "NOUN", - "text": "TWEET" - }, - { - "pos": "CARD", - "text": "18" - }, - { - "pos": "PROP", - "text": "LINKEDIN" - }, - { - "pos": "CARD", - "text": "54" - }, - { - "pos": "PROP", - "text": "COMMENTEMAILMORE" - }, - { - "pos": "PROP", - "text": "Read" - }, - { - "pos": "COORD", - "text": "or" - }, - { - "pos": "VI", - "text": "Share" - }, - { - "pos": "DET", - "text": "this" - }, - { - "pos": "NOUN", - "text": "story" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "ADJ", - "text": "http" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "usat.ly" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "1bDiUq2" - }, - { - "pos": "PROP", - "text": "USA" - }, - { - "pos": "PROP", - "text": "NOW" - }, - { - "pos": "PROP", - "text": "Michael" - }, - { - "pos": "PROP", - "text": "Wolff" - }, - { - "pos": "SENT", - "text": ":" - }, - { - "pos": "PROP", - "text": "Britain" - }, - { - "pos": "VBPRES", - "text": "is" - }, - { - "pos": "DET", - "text": "a" - }, - { - "pos": "ADJ", - "text": "very" - }, - { - "pos": "ADJ", - "text": "conservative" - }, - { - "pos": "NOUN", - "text": "nation" - }, - { - "pos": "PROP", - "text": "May" - }, - { - "pos": "CARD", - "text": "08" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CARD", - "text": "2015" - } + "PROP", + "VPRES", + "NOUN", + "INFTO", + "VI", + "NOUN", + "PREP", + "PARTPRES", + "NOUN", + "PREP", + "PROP", + "PROP", + "PROP", + "PREP", + "NOUN", + "PREP", + "PROP", + "NOUN", + "SENT", + "VBI", + "DET", + "ORD", + "INFTO", + "VI", + "PREP", + "ADJ", + "NOUN", + "PREP", + "PROP", + "SENT", + "NOUN", + "ADV", + "INFTO", + "VI", + "CM", + "COORD", + "PRONPERS", + "VAUX", + "PROP", + "PUNCT", + "NOUN", + "PRONPERS", + "ADJ", + "NOUN", + "PREPADVAS", + "PRONPERS", + "VBPRES", + "VPAP", + "SENT", + "PRONPERS", + "VAUX", + "VI", + "ADJ", + "PROP", + "PUNCT", + "NOUN", + "NOUN", + "VPRES", + "QUANT", + "NOUN", + "DET", + "ADJ", + "NOUN", + "VBPRES", + "VPAP", + "SENT", + "PRONPERS", + "VBPRES", + "QUANT", + "NOUN", + "SENT" ], - "requestId": "7298beee-a818-4102-9842-1e54b7bb9eec", - "timers": { - "rblJe": 10, - "rliJe": 5, - "textExtractor": 17, - "urlContentDownloader": 181 - } + "tokens": [ + "Obama", + "asks", + "lawmakers", + "to", + "lift", + "obstacles", + "to", + "closing", + "prison", + "at", + "Guantanamo", + "Bay", + "The", + "inside", + "track", + "on", + "Washington", + "politics", + ".", + "Be", + "the", + "first", + "to", + "know", + "about", + "new", + "stories", + "from", + "PowerPost", + ".", + "Sign", + "up", + "to", + "follow", + ",", + "and", + "we", + "’ll", + "e", + "-", + "mail", + "you", + "free", + "updates", + "as", + "they", + "’re", + "published", + ".", + "You", + "’ll", + "receive", + "free", + "e", + "-", + "mail", + "news", + "updates", + "each", + "time", + "a", + "new", + "story", + "is", + "published", + ".", + "You", + "’re", + "all", + "set", + "!" + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-url-relationships.json b/api/src/test/mock-data/response/eng-url-relationships.json deleted file mode 100644 index 69efd0360d..0000000000 --- a/api/src/test/mock-data/response/eng-url-relationships.json +++ /dev/null @@ -1,943 +0,0 @@ -{ - "requestId": "8143276a-b6c5-4b5c-957b-f2c12b4378a8", - "relationships": [ - { - "predicate": "makes", - "arg1": "progressive case for trade\nPresident Obama", - "arg2": "took his campaign for a free trade deal to the world headquarters of Nike Friday" - }, - { - "predicate": "makes", - "arg1": "Log out Sign In FAQ\nGet the news\nFacebookEmail Twitter Google", - "arg2": "progressive case for trade\nPresident Obama took his campaign for a free trade deal to the world headquarters of Nike Friday" - }, - { - "predicate": "took", - "arg1": "progressive case for trade\nPresident Obama", - "arg2": "his campaign", - "adjuncts": [ - "for a free trade deal to the world headquarters of Nike", - "where he's extracted a pledge from the world's largest athletic shoe company that it will add 10,000 U.S. jobs" - ] - }, - { - "predicate": "took", - "arg1": "progressive case for trade President Obama", - "arg2": "his campaign", - "adjuncts": [ - "for a free trade deal to the world headquarters of Nike", - "where he's extracted a pledge from the world's largest athletic shoe company that it will add 10,000 U.S. jobs" - ] - }, - { - "predicate": "makes", - "arg1": "progressive case for trade President Obama", - "arg2": "took his campaign for a free trade deal to the world headquarters of Nike Friday" - }, - { - "predicate": "makes", - "arg1": "Post to Facebook Obama", - "arg2": "progressive case for trade President Obama took his campaign for a free trade deal to the world headquarters of Nike Friday" - }, - { - "predicate": "has", - "arg1": "CancelSend\nA link", - "arg2": "been sent to your friend's email address" - }, - { - "predicate": "has been sent", - "arg1": "CancelSend\nA link", - "adjuncts": [ - "to your friend's email address" - ] - }, - { - "predicate": "has", - "arg1": "A link", - "arg2": "been posted to your Facebook feed" - }, - { - "predicate": "has been posted", - "arg1": "A link", - "adjuncts": [ - "to your Facebook feed" - ] - }, - { - "predicate": "makes", - "arg1": "179\nTo find out more about Facebook commenting please read the Conversation Guidelines", - "arg2": "progressive case for trade\nGregory Korte" - }, - { - "predicate": "commenting please read", - "arg1": "more about Facebook", - "arg2": "the Conversation Guidelines" - }, - { - "predicate": "is", - "arg1": "May 8", - "arg2": "2015\nPresident Obama" - }, - { - "predicate": "takes", - "arg1": "trade\nGregory Korte", - "arg2": "USA TODAY", - "arg3": "the stage" - }, - { - "predicate": "takes", - "arg1": "trade\nGregory Korte", - "arg2": "May 8", - "arg3": "the stage" - }, - { - "predicate": "visited", - "arg1": "Obama", - "arg2": "the giant athletic apparel company", - "arg3": "to make his trade policy pitch as he struggles to win over Democrats" - }, - { - "predicate": "dressed", - "arg1": "58 LINKEDIN 179 COMMENTEMAILMORE\nPresident Obama", - "arg2": "his campaign for free trade in the clothing of" - }, - { - "predicate": "would help", - "arg1": "a Pacific trade deal", - "arg2": "American workers" - }, - { - "predicate": "cast", - "arg1": "Obama", - "arg2": "free trade", - "adjuncts": [ - "adopt clean energy", - "in the same terms", - "as his efforts to pass universal health care" - ] - }, - { - "predicate": "cast", - "arg1": "Obama", - "arg2": "free trade", - "adjuncts": [ - "raise the minimum wage", - "in the same terms", - "as his efforts to pass universal health care" - ] - }, - { - "predicate": "visited", - "arg1": "President Barack Obama", - "arg2": "Nike headquarters", - "adjuncts": [ - "to promote his trade agenda" - ] - }, - { - "predicate": "says", - "arg1": "a Trans-Pacific trade deal", - "arg2": "would allow it to benefit from lower tariffs on shoes" - }, - { - "predicate": "is", - "arg1": "notably Vermont Sen. Bernie Sanders", - "arg2": "a presidential candidate" - }, - { - "predicate": "says", - "arg1": "Nike", - "arg2": "a Trans-Pacific trade deal would allow it to benefit from lower tariffs on shoes" - }, - { - "predicate": "see", - "arg1": "many liberals", - "adjuncts": [ - "as a symbol of failed trade policies" - ] - }, - { - "predicate": "is", - "arg1": "the minimum wage", - "arg2": "56 cents an hour" - }, - { - "predicate": "make", - "arg1": "330,000 workers", - "arg2": "Nike shoes" - }, - { - "predicate": "said", - "arg1": "Obama", - "arg2": "would have to increase the minimum wage" - }, - { - "predicate": "seemed", - "arg1": "Nike", - "adjuncts": [ - "like an unlikely venue for a speech" - ] - }, - { - "predicate": "approves", - "arg1": "USA TODAY\nSenate panel", - "arg2": "trade bill", - "adjuncts": [ - "At first" - ] - }, - { - "predicate": "announced", - "arg1": "Nike", - "arg2": "it would hire 10,000 workers in the United States over the next decade" - }, - { - "predicate": "passes", - "arg1": "a Pacific trade agreement", - "arg2": "Congress" - }, - { - "predicate": "was made", - "arg1": "Nike's fast-growth success story", - "arg2": "possible", - "adjuncts": [ - "because of the power of trade" - ] - }, - { - "predicate": "said", - "arg1": "Nike President Mark Parker", - "arg2": "was made possible because of the power of trade" - }, - { - "predicate": "said", - "arg1": "Introducing Obama", - "arg2": "was made possible because of the power of trade" - }, - { - "predicate": "should see", - "arg1": "companies", - "arg2": "that kind of success" - }, - { - "predicate": "wants", - "arg1": "Nike", - "arg2": "to hire American workers" - }, - { - "predicate": "said", - "arg1": "Labor groups", - "arg2": "if Nike wants to hire American workers, it shouldn't be contingent on a trade deal" - }, - { - "predicate": "is", - "arg1": "this time", - "arg2": "different" - }, - { - "predicate": "has met", - "arg1": "Obama's free trade push", - "arg2": "resistance from within his own Democratic party" - }, - { - "predicate": "hit", - "arg1": "USA TODAY\nFree trade critics", - "arg2": "Obama", - "adjuncts": [ - "over Nike visit\nLike President Clinton", - "before him" - ] - }, - { - "predicate": "will have", - "arg1": "the Trans-Pacific Partnership", - "arg2": "more labor" - }, - { - "predicate": "has argued", - "arg1": "The White House", - "arg2": "that the Trans-Pacific Partnership will have more labor" - }, - { - "predicate": "to insist", - "arg1": "Congress", - "adjuncts": [ - "on stronger provisions before an up-or-down vote on passage" - ] - }, - { - "predicate": "acknowledged", - "arg1": "Obama", - "arg2": "that intra-party debate Friday" - }, - { - "predicate": "announced", - "arg1": "the White House", - "arg2": "have questioned the appearances" - }, - { - "predicate": "have questioned", - "arg1": "the Nike visit", - "arg2": "the appearances of using a company" - }, - { - "predicate": "was built", - "arg1": "the Nike brand", - "adjuncts": [ - "by outsourcing manufacturing to sweatshops in Asia" - ] - }, - { - "predicate": "is", - "arg1": "The symbolism of his speech", - "arg2": "staggering" - }, - { - "predicate": "gather", - "arg1": "Demonstrators", - "locatives": [ - "near the Sentinel Hotel" - ] - }, - { - "predicate": "spoke", - "arg1": "President Obama", - "adjuncts": [ - "at a Democratic fundraiser" - ] - }, - { - "predicate": "is", - "arg1": "Thomas Boyd", - "arg2": "VIDEO" - }, - { - "predicate": "based", - "arg1": "valuable states in America", - "adjuncts": [ - "on value of land per acre" - ] - }, - { - "predicate": "is", - "arg1": "Aziz Hamzaogullari", - "arg2": "portfolio manager for the Loomis Sayles Growth Fund" - }, - { - "predicate": "are wired", - "arg1": "THE DAY IN MONEYAmazon", - "arg2": "to keep growing market share" - }, - { - "predicate": "is", - "arg1": "00:59\nUnity Stoakes", - "arg2": "co-founder of StartUp Health" - }, - { - "predicate": "|", - "arg1": "THE DAY IN MONEYHealth care technology booms", - "arg2": "00:59\nUnity Stoakes" - }, - { - "predicate": "added", - "arg1": "Hamzaogullari", - "arg2": "that the anti-trust suit against Newslook\n2 of 42\nVIDEO" - }, - { - "predicate": "is", - "arg1": "Trisha Thadani", - "arg2": "Collin Brennan\n3 of 42\nVIDEO" - }, - { - "predicate": "share", - "arg1": "Buzz60's Leigh Scheps", - "arg2": "some tops" - }, - { - "predicate": "is", - "arg1": "Buzz60's Leigh Scheps", - "arg2": "@LeighTVReporters" - }, - { - "predicate": "introduced", - "arg1": "THE DAY IN MONEYAmazon launches", - "arg2": "free shipping for small" - }, - { - "predicate": "|", - "arg1": "free shipping on small items", - "arg2": "00:40\nAmazon", - "adjuncts": [ - "on Tuesday" - ] - }, - { - "predicate": "has stabilized", - "arg1": "04:40\nThe high yield bond market", - "arg2": "since worries about falling energy prices dragged it down last winter" - }, - { - "predicate": "says", - "arg1": "Morgan Stanley", - "arg2": "| 04:40\nThe high yield bond market has stabilized since worries about falling energy prices dragged it down last winter" - }, - { - "predicate": "|", - "arg1": "Morgan Stanley", - "arg2": "04:40\nThe high yield bond market has stabilized since worries about falling energy prices dragged it down last winter" - }, - { - "predicate": "says", - "arg1": "Richard Lindquist", - "arg2": "the good times will continue" - }, - { - "predicate": "says", - "arg1": "the good times", - "arg2": "will continue" - }, - { - "predicate": "is", - "arg1": "Richard Lindquist", - "arg2": "head of high yield at Morgan Stanley Investment Management" - }, - { - "predicate": "ended", - "arg1": "00:55\nShares of PVH Corp.", - "arg2": "making it TheStreet's Move of the Day", - "adjuncts": [ - "up 7 percent" - ] - }, - { - "predicate": "came", - "arg1": "Earnings per share", - "adjuncts": [ - "in at $0.71", - "were looking for" - ] - }, - { - "predicate": "polled", - "arg1": "the $0.59 analysts", - "adjuncts": [ - "by Thomson Reuters" - ] - }, - { - "predicate": "is keeping", - "arg1": "FireEye | 01:00\nTheStreet's Jim Cramer", - "arg2": "an eye on shares of FireEye" - }, - { - "predicate": "says", - "arg1": "one of his favorite themes for 2015", - "arg2": "is cyber security" - }, - { - "predicate": "says", - "arg1": "Cramer", - "arg2": "is cyber security" - }, - { - "predicate": "is", - "arg1": "one of his favorite themes for 2015", - "arg2": "cyber security" - }, - { - "predicate": "quashes", - "arg1": "THE DAY IN MONEYNintendo", - "arg2": "rumors of future deal with android | 02:00\nRumors of a Nintendo Android deal" - }, - { - "predicate": "were dismissed", - "arg1": "THE DAY IN MONEYNintendo quashes rumors of future deal with android | 02:00\nRumors of a Nintendo Android deal", - "adjuncts": [ - "by the big N", - "on Tuesday" - ] - }, - { - "predicate": "provided", - "arg1": "Video", - "adjuncts": [ - "by Newsy Newslook\n11 of 42\nVIDEO" - ] - }, - { - "predicate": "are under pressure", - "arg1": "U.S.-bred poultry suppliers", - "adjuncts": [ - "with the U.S. Department of Agriculture" - ] - }, - { - "predicate": "explains", - "arg1": "RealMoney Pro contributor", - "arg2": "how to cut your exposure to stocks" - }, - { - "predicate": "|", - "arg1": "Avoid companies with egg dependencies", - "arg2": "01:45" - }, - { - "predicate": "|", - "arg1": "earnings estimates", - "arg2": "stocks are" - }, - { - "predicate": "reported", - "arg1": "the company", - "arg2": "earnings on Tuesday" - }, - { - "predicate": "beats", - "arg1": "THE DAY IN MONEYCracker Barrel", - "arg2": "earnings estimates | 00:49\nCracker Barrel" - }, - { - "predicate": "beats", - "arg1": "earnings estimates", - "arg2": "| 00:49\nCracker Barrel" - }, - { - "predicate": "buys", - "arg1": "THE DAY IN MONEYBoot Barn", - "arg2": "western lifestyle retailer Sheplers", - "adjuncts": [ - "for $147M | 01:29\nBoot Barn Holdings Inc. said June 1 it has agreed to buy fellow western lifestyle retailer Sheplers Inc. for $147 million in cash" - ] - }, - { - "predicate": "said", - "arg1": "Boot Barn Holdings Inc.", - "arg2": "it has agreed to buy fellow western lifestyle retailer Sheplers Inc. for $147 million in cash" - }, - { - "predicate": "is", - "arg1": "The seller", - "arg2": "San Francisco-based private equity firm Gryphon Investors" - }, - { - "predicate": "slip", - "arg1": "factory orders", - "arg2": "shares" - }, - { - "predicate": "told", - "arg1": "A source", - "arg2": "The Deal's Richard Collings tha Newslook\n15 of 42\nVIDEO", - "adjuncts": [ - "THE DAY IN MONEYGM" - ] - }, - { - "predicate": "reported", - "arg1": "the automaker", - "arg2": "a 3 percent increase in domestic sales in May" - }, - { - "predicate": "beat", - "arg1": "Ford", - "arg2": "monthly sales forecasts" - }, - { - "predicate": "also beat", - "arg1": "Ford", - "arg2": "estimates", - "adjuncts": [ - "falling at a slower-than-expected pace in May" - ] - }, - { - "predicate": "announced", - "arg1": "the company", - "arg2": "a new camera" - }, - { - "predicate": "jumped", - "arg1": "Touchscreen", - "arg2": "as much as 7%", - "adjuncts": [ - "on Monday", - "after the company announced a new camera" - ] - }, - { - "predicate": "announced", - "arg1": "THE DAY IN MONEYGoPro", - "arg2": "a new camera with Touchscreen, Stock skyrockets | 01:01\nGoPro (GPRO) shares jumped as much as 7% on Monday" - }, - { - "predicate": "according to", - "arg1": "that features a built-in screen", - "arg2": "CNET" - }, - { - "predicate": "is", - "arg1": "The GoPro Hero", - "arg2": "a touchscreen camera that's only its second offering" - }, - { - "predicate": "|", - "arg1": "| America's Markets", - "arg2": "01:37\nUSA" - }, - { - "predicate": "might outsmart", - "arg1": "investors", - "arg2": "the usual June gloom", - "adjuncts": [ - "in this edition of America's Markets" - ] - }, - { - "predicate": "has", - "arg1": "Krystin Goodwin", - "arg2": "five things airlines don't want you to know" - }, - { - "predicate": "is", - "arg1": "Krystin Goodwin", - "arg2": "@Krystingoodwin" - }, - { - "predicate": "has", - "arg1": "five things airlines", - "arg2": "don't want you to know" - }, - { - "predicate": "drops", - "arg1": "THE DAY IN MONEYMacau's casino revenue", - "arg2": "37%", - "adjuncts": [ - "in twelve month" - ] - }, - { - "predicate": "has dropped", - "arg1": "casino revenue for the Chinese peninsula", - "arg2": "37.1 percent", - "adjuncts": [ - "in May", - "from last year's numbers" - ] - }, - { - "predicate": "opens", - "arg1": "THE DAY IN MONEYDenver", - "arg2": "its first marijuana-friendly hotel | 01:03\nThe Nativ is Colorado's first openly pot-friendly hotel" - }, - { - "predicate": "is", - "arg1": "The Nativ", - "arg2": "Colorado's first openly pot-friendly hotel" - }, - { - "predicate": "has", - "arg1": "TC Newman", - "arg2": "the details" - }, - { - "predicate": "Find out", - "arg1": "01:24", - "adjuncts": [ - "from a Halstead Property executive" - ] - }, - { - "predicate": "sits down", - "arg1": "Brian Lewis", - "arg2": "to discuss this exclusive market", - "adjuncts": [ - "with Fortune's Leigh Gallagher" - ] - }, - { - "predicate": "is", - "arg1": "Brian Lewis", - "arg2": "Executive VP of Halstead Property" - }, - { - "predicate": "may endorse", - "arg1": "the AFL CIO", - "adjuncts": [ - "in 2016" - ] - }, - { - "predicate": "is", - "arg1": "| 04:42\nMichael Lin", - "arg2": "president of the Taiwan Stock Exchange" - }, - { - "predicate": "talks", - "arg1": "more links", - "arg2": "| 04:42\nMichael Lin", - "adjuncts": [ - "about the planned trading link with Singapore" - ] - }, - { - "predicate": "seeks", - "arg1": "THE DAY IN MONEYTaiwan Exchange Chief", - "arg2": "more links with Singapore | 04:42\nMichael Lin, president of the Taiwan Stock Exchange, talks about the planned trading link with Singapore" - }, - { - "predicate": "are using", - "arg1": "THE DAY IN MONEYThe central bankers", - "arg2": "tomatoes", - "arg3": "to fight inflation" - }, - { - "predicate": "is struggling", - "arg1": "02:19\nIndonesia", - "arg2": "to fight its highest rate of inflation" - }, - { - "predicate": "makes", - "arg1": "Netflix", - "arg2": "a good graduation gift | 01:59\nTheStreet's Jim Cramer answers your Twitter questions about Blackstone (BX" - }, - { - "predicate": "says", - "arg1": "Netflix", - "arg2": "makes a good graduation gift" - }, - { - "predicate": "says", - "arg1": "THE DAY IN MONEYJim Cramer", - "arg2": "Netflix makes a good graduation gift" - }, - { - "predicate": "answers", - "arg1": "your Twitter", - "arg2": "questions about Blackstone" - }, - { - "predicate": "answers", - "arg1": "a good graduation gift", - "arg2": "| 01:59\nTheStreet's Jim Cramer", - "arg3": "your Twitter questions about Blackstone" - }, - { - "predicate": "said", - "arg1": "the Commerce Department", - "adjuncts": [ - "on Friday" - ] - }, - { - "predicate": "fell", - "arg1": "First-quarter gross domestic product", - "arg2": "0.7 percent" - }, - { - "predicate": "have", - "arg1": "Nebraska", - "arg2": "the lowest unemployment rates" - }, - { - "predicate": "have", - "arg1": "Utah", - "arg2": "the lowest unemployment rates" - }, - { - "predicate": "have", - "arg1": "North Dakota", - "arg2": "the lowest unemployment rates" - }, - { - "predicate": "has", - "arg1": "Douglas McIntyre of 24/7 Wall Street", - "arg2": "the details" - }, - { - "predicate": "are demanding", - "arg1": "action | 01:29\nWorried that their reputations will be tarnished by their links to FIFA", - "adjuncts": [ - "even warning it is prepared to jump ship", - "with Visa" - ] - }, - { - "predicate": "will be tarnished", - "arg1": "their reputations", - "adjuncts": [ - "by their links to FIFA" - ] - }, - { - "predicate": "just sped", - "arg1": "shuttle people between Los Angeles", - "arg2": "a bit closer to reality" - }, - { - "predicate": "is Getting", - "arg1": "THE DAY IN MONEYHyperloop", - "arg2": "a Test Track in California | 00:52\nThe" - }, - { - "predicate": "is returning", - "arg1": "THE DAY IN MONEYSkyMall", - "arg2": "online" - }, - { - "predicate": "found", - "arg1": "the quirky items", - "adjuncts": [ - "in the catalog returning to an airplane seat pocket near you" - ] - }, - { - "predicate": "shows", - "arg1": "TC Newman", - "arg2": "you some of the quirky items" - }, - { - "predicate": "was the next development", - "arg1": "The buzz at Google I/O", - "adjuncts": [ - "Google's partnership with GoPro" - ] - }, - { - "predicate": "is coming", - "arg1": "THE DAY IN MONEYVirtual reality", - "adjuncts": [ - "to YouTube | 00:44" - ] - }, - { - "predicate": "was the next development", - "arg1": "The buzz at Google I/O", - "adjuncts": [ - "of its Cardboard VR viewing device" - ] - }, - { - "predicate": "was", - "arg1": "The buzz at Google I/O", - "arg2": "the next development of its Cardboard VR viewing device" - }, - { - "predicate": "will record", - "arg1": "GoPro", - "arg2": "whose camera sets", - "arg3": "VR-ready videos" - }, - { - "predicate": "is offering", - "arg1": "| 00:50\nAmazon", - "arg2": "free same-day shipping for its Prime subscribers", - "adjuncts": [ - "in some of its key markets" - ] - }, - { - "predicate": "plans", - "arg1": "no one", - "arg2": "to slow oil production" - }, - { - "predicate": "shows", - "arg1": "OPEC", - "arg2": "thinks no one plans to slow oil production" - }, - { - "predicate": "announced", - "arg1": "Google's upgrades to Android", - "adjuncts": [ - "at Google I/O" - ] - }, - { - "predicate": "is", - "arg1": "05:25\nJuan Benitez", - "arg2": "chief technology officer at Braintree" - }, - { - "predicate": "will end", - "arg1": "oil glut", - "adjuncts": [ - "until at least 2017 | 01:50\nThe 12-nation conglomerate's long-term strategy report" - ] - }, - { - "predicate": "thinks", - "arg1": "OPEC", - "arg2": "no one plans to slow oil production" - }, - { - "predicate": "is", - "arg1": "Bloomberg's Cory Johnson", - "arg2": "chief technology officer at Braintree" - }, - { - "predicate": "thinks", - "arg1": "no one", - "arg2": "plans to slow oil production" - }, - { - "predicate": "ended", - "arg1": "| 00:49\nShares of data storage company Western Digital", - "adjuncts": [ - "following Goldman Sachs upgrade" - ] - }, - { - "predicate": "upgraded", - "arg1": "Goldman Sachs", - "arg2": "the stock", - "adjuncts": [ - "to BUY from NEUTRAL" - ] - }, - { - "predicate": "says", - "arg1": "North America's bandwidth", - "arg2": "| 01:21\nA new study", - "arg3": "Netflix accounts for about 37 percent of North American Internet traffic during peak hours" - }, - { - "predicate": "is apparently hogging", - "arg1": "THE DAY IN MONEYNetflix", - "arg2": "North America's bandwidth" - }, - { - "predicate": "is", - "arg1": "| 04:34\nSuccess", - "arg2": "life on your own terms" - }, - { - "predicate": "is", - "arg1": "The Dealmaker’s Ten Commandments", - "arg2": "a methodology for figuring out what the terms are for yourself" - }, - { - "predicate": "provided", - "arg1": "Video", - "adjuncts": [ - "by Newsy Newslook\n41 of 42\nVIDEO" - ] - }, - { - "predicate": "says", - "arg1": "The Dealmaker’s Ten Commandments", - "arg2": "is a methodology for figuring out what the terms are for yourself" - }, - { - "predicate": "is life", - "arg1": "| 04:34\nSuccess", - "adjuncts": [ - "on your own terms" - ] - }, - { - "predicate": "says", - "arg1": "THE DAY IN MONEYThe Hollywood Dealmaker’s Guide", - "arg2": "his book The Dealmaker’s Ten Commandments is a methodology for figuring out what the terms are for yourself" - } - ] -} diff --git a/api/src/test/mock-data/response/eng-url-sentiment.json b/api/src/test/mock-data/response/eng-url-sentiment.json index fc07388fd8..8bd8d348ec 100644 --- a/api/src/test/mock-data/response/eng-url-sentiment.json +++ b/api/src/test/mock-data/response/eng-url-sentiment.json @@ -1,20 +1,17 @@ { - "requestId": "8e277ba2-00e9-46ec-bd30-04d885b1882d", - "sentiment": [ + "document": { + "confidence": 0.8571296319875414, + "label": "pos" + }, + "entities": [ { - "confidence": 0.9156604769654398, - "label": "pos" - }, - { - "confidence": 0.08433952303456017, - "label": "neg" + "entityId": "Q76", + "mention": "Obama", + "sentiment": { + "confidence": 0.5059616098625916, + "label": "neg" + }, + "type": "PERSON" } - ], - "timers": { - "rblJe": 3, - "rliJe": 5, - "sent": 133, - "textExtractor": 14, - "urlContentDownloader": 105 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/fra-doc-categories.json b/api/src/test/mock-data/response/fra-doc-categories.json index d8db962d4d..21b78d9f93 100644 --- a/api/src/test/mock-data/response/fra-doc-categories.json +++ b/api/src/test/mock-data/response/fra-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "French is not supported by Rosette Categorizer", - "requestId": "956f3423-e3dc-4b30-a5ff-bca0478fe408" + "message": "FRENCH is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-doc-entities.json b/api/src/test/mock-data/response/fra-doc-entities.json index e4d6abad2a..b5747f28e6 100644 --- a/api/src/test/mock-data/response/fra-doc-entities.json +++ b/api/src/test/mock-data/response/fra-doc-entities.json @@ -1,242 +1,60 @@ { "entities": [ { - "confidence": 0.05105915239879063, - "count": 7, - "indocChainId": 4, - "mention": "Obama", - "normalized": "Obama", - "type": "PERSON" - }, - { - "confidence": 0.03971593578656515, - "count": 6, - "indocChainId": 8, - "mention": "M.", - "normalized": "M.", - "type": "TITLE" - }, - { - "confidence": 0.028711426258087158, - "count": 5, - "indocChainId": 3, - "mention": "président", - "normalized": "président", - "type": "TITLE" - }, - { - "confidence": 0.031732420126597084, - "count": 3, - "indocChainId": 0, - "mention": "Etats-Unis", - "normalized": "Etats-Unis", - "type": "LOCATION" - }, - { - "confidence": 0.03095032771428426, - "count": 3, - "indocChainId": 35, - "mention": "républicains", - "normalized": "républicains", - "type": "ORGANIZATION" - }, - { - "confidence": 0.01543426513671875, - "count": 2, - "indocChainId": 4, - "mention": "Barack Obama", - "normalized": "Barack Obama", - "type": "PERSON" - }, - { - "confidence": 0.019789844751358032, - "count": 2, - "indocChainId": 5, - "mention": "Amérique", - "normalized": "Amérique", - "type": "LOCATION" - }, - { - "confidence": 0.018558651208877563, - "count": 2, - "indocChainId": 10, - "mention": "Dean Baker", - "normalized": "Dean Baker", - "type": "PERSON" - }, - { - "confidence": 0.00832781195640564, - "count": 2, - "indocChainId": 14, - "mention": "républicain", - "normalized": "républicain", - "type": "ORGANIZATION" - }, - { - "confidence": 0.011866271495819092, "count": 2, - "indocChainId": 33, - "mention": "Congrès", - "normalized": "Congrès", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03181558847427368, - "count": 2, - "indocChainId": 44, - "mention": "Sénat", - "normalized": "Sénat", - "type": "ORGANIZATION" - }, - { - "confidence": 0.016073524951934814, - "count": 1, - "indocChainId": 1, - "mention": "Census Bureau", - "normalized": "Census Bureau", - "type": "ORGANIZATION" - }, - { - "confidence": 0.013657450675964355, - "count": 1, "indocChainId": 2, - "mention": "Insee", - "normalized": "Insee", - "type": "ORGANIZATION" - }, - { - "confidence": 0.009501934051513672, - "count": 1, - "indocChainId": 6, - "mention": "Maison Blanche", - "normalized": "Maison Blanche", - "type": "ORGANIZATION" - }, - { - "confidence": 0.01004105806350708, - "count": 1, - "indocChainId": 7, - "mention": "Parti démocrate", - "normalized": "Parti démocrate", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03106057643890381, - "count": 1, - "indocChainId": 10, - "mention": "Baker", - "normalized": "Baker", - "type": "PERSON" - }, - { - "confidence": 0.006049156188964844, - "count": 1, - "indocChainId": 11, - "mention": "démocrate", - "normalized": "démocrate", - "type": "ORGANIZATION" - }, - { - "confidence": 0.011113584041595459, - "count": 1, - "indocChainId": 12, - "mention": "Washington", - "normalized": "Washington", + "mention": "Afghanistan", + "normalized": "Afghanistan", "type": "LOCATION" }, { - "confidence": 0.010755836963653564, - "count": 1, - "indocChainId": 15, - "mention": "Ronald Reagan", - "normalized": "Ronald Reagan", - "type": "PERSON" - }, - { - "confidence": 0.020975351333618164, - "count": 1, - "indocChainId": 20, - "mention": "George Bush", - "normalized": "George Bush", - "type": "PERSON" - }, - { - "confidence": 0.01764160394668579, "count": 1, - "indocChainId": 22, - "mention": "Christina Romer", - "normalized": "Christina Romer", + "indocChainId": 0, + "mention": "Richard Holbrooke", + "normalized": "Richard Holbrooke", "type": "PERSON" }, { - "confidence": 0.003275454044342041, - "count": 1, - "indocChainId": 23, - "mention": "présidente du conseil économique", - "normalized": "présidente du conseil économique", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 28, - "mention": "Goldman Sachs", - "normalized": "Goldman Sachs", - "type": "ORGANIZATION" - }, - { - "confidence": 0.014990746974945068, "count": 1, - "indocChainId": 29, - "mention": "Jan Hatzius", - "normalized": "Jan Hatzius", + "indocChainId": 1, + "mention": "Obama", + "normalized": "Obama", "type": "PERSON" }, { - "confidence": 0.03833216428756714, "count": 1, - "indocChainId": 42, - "mention": "David Axelrod", - "normalized": "David Axelrod", - "type": "PERSON" + "indocChainId": 4, + "mention": "Inde", + "normalized": "Inde", + "type": "LOCATION" }, { - "confidence": 0.05773395299911499, "count": 1, - "indocChainId": 46, - "mention": "Harry Reid", - "normalized": "Harry Reid", - "type": "PERSON" + "indocChainId": 5, + "mention": "Russie", + "normalized": "Russie", + "type": "LOCATION" }, { - "confidence": 0.022663354873657227, "count": 1, - "indocChainId": 47, - "mention": "démocrates", - "normalized": "démocrates", - "type": "ORGANIZATION" + "indocChainId": 6, + "mention": "Turquie", + "normalized": "Turquie", + "type": "LOCATION" }, { - "confidence": 0.004793286323547363, "count": 1, - "indocChainId": 50, - "mention": "TARP", - "normalized": "TARP", - "type": "ORGANIZATION" + "indocChainId": 7, + "mention": "Arabie saoudite", + "normalized": "Arabie saoudite", + "type": "LOCATION" }, { - "confidence": 1.0, "count": 1, - "indocChainId": 53, - "mention": "http://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210", - "normalized": "http://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210", - "type": "IDENTIFIER:URL" + "indocChainId": 8, + "mention": "Emirats arabes unis", + "normalized": "Emirats arabes unis", + "type": "LOCATION" } - ], - "requestId": "fe809e0f-8caf-4180-8f1a-cbd27258df14", - "timers": { - "rblJe": 13, - "rexJe": 54, - "rliJe": 6 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/fra-doc-entities_linked.json b/api/src/test/mock-data/response/fra-doc-entities_linked.json index 2f0d602f21..e0eefd41fd 100644 --- a/api/src/test/mock-data/response/fra-doc-entities_linked.json +++ b/api/src/test/mock-data/response/fra-doc-entities_linked.json @@ -1,149 +1,40 @@ { "entities": [ { - "confidence": 0.7399947032225278, - "entityId": "Q30", + "confidence": 0.6892290282735442, + "entityId": "Q155649", "indocChainId": 0, - "mention": "Etats-Unis" + "mention": "Richard Holbrooke" }, { - "confidence": 0.7695386692779599, - "entityId": "Q637413", + "confidence": 0.5461756419093019, + "entityId": "Q76", "indocChainId": 1, - "mention": "Census Bureau" + "mention": "Obama" }, { - "confidence": 0.5632621294140603, - "entityId": "Q156616", + "confidence": 0.36385601467328577, + "entityId": "Q889", "indocChainId": 2, - "mention": "Insee" + "mention": "Afghanistan" }, { - "confidence": 0.5647101952655027, - "entityId": "Q76", + "confidence": 0.5442871655267161, + "entityId": "Q153317", "indocChainId": 4, - "mention": "Barack Obama" + "mention": "Inde" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.7114130215910187, + "entityId": "Q159", "indocChainId": 5, - "mention": "Amérique" + "mention": "Russie" }, { - "confidence": 0.33092102218083125, - "entityId": "Q12061445", + "confidence": 0.675335309236899, + "entityId": "Q43", "indocChainId": 6, - "mention": "Maison Blanche" - }, - { - "confidence": 0.6351177924228053, - "entityId": "Q587370", - "indocChainId": 7, - "mention": "Parti démocrate" - }, - { - "confidence": 0.4383803078324337, - "entityId": "Q222122", - "indocChainId": 10, - "mention": "Dean Baker" - }, - { - "confidence": 0.4106734597843912, - "entityId": "NEW-CLUSTER", - "indocChainId": 11, - "mention": "démocrate" - }, - { - "confidence": 0.030134547096501898, - "entityId": "Q61", - "indocChainId": 12, - "mention": "Washington" - }, - { - "confidence": 0.09650250560984247, - "entityId": "NEW-CLUSTER", - "indocChainId": 14, - "mention": "républicain" - }, - { - "confidence": 0.5634191715704597, - "entityId": "Q9960", - "indocChainId": 15, - "mention": "Ronald Reagan" - }, - { - "confidence": 0.32451423678740127, - "entityId": "Q207", - "indocChainId": 20, - "mention": "George Bush" - }, - { - "confidence": 0.5312767444554036, - "entityId": "Q270379", - "indocChainId": 22, - "mention": "Christina Romer" - }, - { - "confidence": 0.741644907969852, - "entityId": "Q193326", - "indocChainId": 28, - "mention": "Goldman Sachs" - }, - { - "confidence": 0.5171464236003176, - "entityId": "NEW-CLUSTER", - "indocChainId": 29, - "mention": "Jan Hatzius" - }, - { - "confidence": 0.41208003203903637, - "entityId": "Q2495862", - "indocChainId": 33, - "mention": "Congrès" - }, - { - "confidence": 0.10281969831910404, - "entityId": "NEW-CLUSTER", - "indocChainId": 35, - "mention": "républicains" - }, - { - "confidence": 0.2681724823103919, - "entityId": "Q519838", - "indocChainId": 42, - "mention": "David Axelrod" - }, - { - "confidence": 0.626544968074185, - "entityId": "Q215987", - "indocChainId": 44, - "mention": "Sénat" - }, - { - "confidence": 0.3161503511291147, - "entityId": "Q314459", - "indocChainId": 46, - "mention": "Harry Reid" - }, - { - "confidence": 0.09461631971440848, - "entityId": "Q1185830", - "indocChainId": 47, - "mention": "démocrates" - }, - { - "confidence": 0.7608374999013565, - "entityId": "Q2097742", - "indocChainId": 50, - "mention": "TARP" + "mention": "Turquie" } - ], - "requestId": "88f85c50-081d-49bd-9105-2e040c50735e", - "timers": { - "rblJe": 10, - "res": 822, - "rexJe": 46, - "rliJe": 6 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-doc-language.json b/api/src/test/mock-data/response/fra-doc-language.json index 9a6dafbd2f..012d7575d7 100644 --- a/api/src/test/mock-data/response/fra-doc-language.json +++ b/api/src/test/mock-data/response/fra-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.03904621249856588, + "confidence": 1.0, "language": "fra" - }, - { - "confidence": 0.013008506693825472, - "language": "cat" - }, - { - "confidence": 0.0122736724745941, - "language": "spa" - }, - { - "confidence": 0.009873975012486658, - "language": "ron" - }, - { - "confidence": 0.009735170679701866, - "language": "por" } - ], - "requestId": "128145b1-fd6f-4492-899d-a68ec9d2e60a", - "timers": { - "rliJe": 4 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-doc-morphology_complete.json b/api/src/test/mock-data/response/fra-doc-morphology_complete.json index becf3ee07c..560a2875a7 100644 --- a/api/src/test/mock-data/response/fra-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/fra-doc-morphology_complete.json @@ -1,9661 +1,517 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "le", - "text": "Les" - }, - { - "lemma": "état", - "text": "Etats" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "unir", - "text": "Unis" - }, - { - "lemma": "face", - "text": "face" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "défi", - "text": "défi" - }, - { - "lemma": "persistant", - "text": "persistant" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": "un", - "text": "Un" - }, - { - "lemma": "chômeur", - "text": "chômeur" - }, - { - "lemma": "américain", - "text": "américain" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "deux", - "text": "deux" - }, - { - "lemma": "dire", - "text": "dit" - }, - { - "lemma": "souffrir", - "text": "souffrir" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "anxiété", - "text": "anxiété" - }, - { - "lemma": "ou", - "text": "ou" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "dépression", - "text": "dépression" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "devoir", - "text": "dû" - }, - { - "lemma": "emprunter", - "text": "emprunter" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "argent", - "text": "argent" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "un", - "text": "des" - }, - { - "lemma": "ami", - "text": "amis" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "selon", - "text": "Selon" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "enquête", - "text": "enquête" - }, - { - "lemma": "publier", - "text": "publiée" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "lundi", - "text": "lundi" - }, - { - "lemma": "18", - "text": "18" - }, - { - "lemma": "janvier", - "text": "janvier" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "Census", - "text": "Census" - }, - { - "lemma": "bureau", - "text": "Bureau" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "équivalent", - "text": "équivalent" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Insee", - "text": "Insee" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "deux", - "text": "deux" - }, - { - "lemma": "an", - "text": "ans" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "nombre", - "text": "nombre" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "couple", - "text": "couples" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": "avec", - "text": "avec" - }, - { - "lemma": "enfant", - "text": "enfants" - }, - { - "lemma": "mineur", - "text": "mineurs" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "doubler", - "text": "doublé" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "près", - "text": "Près" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "40", - "text": "40" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "ce", - "text": "ces" - }, - { - "lemma": "parent", - "text": "parents" - }, - { - "lemma": "noter", - "text": "notent" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "modification", - "text": "modifications" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "comportement", - "text": "comportement" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "chez", - "text": "chez" - }, - { - "lemma": "leur", - "text": "leurs" - }, - { - "lemma": "enfant", - "text": "enfants" - }, - { - "lemma": "que", - "text": "qu'" - }, - { - "lemma": "il", - "text": "ils" - }, - { - "lemma": "attribuer", - "text": "attribuent" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "perte", - "text": "perte" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "travail", - "text": "travail" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "moitié", - "text": "moitié" - }, - { - "lemma": "évoquer", - "text": "évoquent" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "transformation", - "text": "transformation" - }, - { - "lemma": "fondamental", - "text": "fondamentale" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "existence", - "text": "existence" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "premier", - "text": "premier" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "changement", - "text": "changements" - }, - { - "lemma": "consister", - "text": "consistant" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "perte", - "text": "perte" - }, - { - "lemma": "presque", - "text": "presque" - }, - { - "lemma": "instantané", - "text": "instantanée" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "tout", - "text": "toute" - }, - { - "lemma": "couverture", - "text": "couverture" - }, - { - "lemma": "social", - "text": "sociale" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "durant", - "text": "Durant" - }, - { - "lemma": "tout", - "text": "tout" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "mois", - "text": "mois" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "décembre", - "text": "décembre" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "approche", - "text": "approche" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "anniversaire", - "text": "anniversaire" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "prise", - "text": "prise" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "fonction", - "text": "fonctions" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "président", - "text": "président" - }, - { - "lemma": "Barack", - "text": "Barack" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "20", - "text": "20" - }, - { - "lemma": "janvier", - "text": "janvier" - }, - { - "lemma": "2009", - "text": "2009" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "reportage", - "text": "reportages" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "enquête", - "text": "enquêtes" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "conséquence", - "text": "conséquences" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "ce", - "text": "ces" - }, - { - "lemma": "destruction", - "text": "destructions" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": "être", - "text": "sont" - }, - { - "lemma": "devenir", - "text": "devenus" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "préoccupation", - "text": "préoccupation" - }, - { - "lemma": "obsédant", - "text": "obsédante" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "médias", - "text": "médias" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "je", - "text": "Je" - }, - { - "lemma": "me", - "text": "me" - }, - { - "lemma": "sentir", - "text": "sens" - }, - { - "lemma": "comme", - "text": "comme" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "lie", - "text": "lie" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "terre", - "text": "terre" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "dire", - "text": "disait" - }, - { - "lemma": "récemment", - "text": "récemment" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "chômeur", - "text": "chômeur" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "heure", - "text": "heure" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "grand", - "text": "grande" - }, - { - "lemma": "écoute", - "text": "écoute" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "alors", - "text": "Alors" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Amérique", - "text": "Amérique" - }, - { - "lemma": "découvrir", - "text": "découvre" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "écran", - "text": "écrans" - }, - { - "lemma": "tout", - "text": "tous" - }, - { - "lemma": "ce", - "text": "ces" - }, - { - "lemma": "visage", - "text": "visages" - }, - { - "lemma": "ravager", - "text": "ravagés" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "évoquer", - "text": "évoquent" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "honte", - "text": "honte" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "interroger", - "text": "interroge" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "10", - "text": "10" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "comment", - "text": "comment" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "est", - "text": "est" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "on", - "text": "on" - }, - { - "lemma": "arriver", - "text": "arrivé" - }, - { - "lemma": "là", - "text": "là" - }, - { - "lemma": "?", - "text": "?" - }, - { - "lemma": "pour", - "text": "Pour" - }, - { - "lemma": "beaucoup", - "text": "beaucoup" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "analyste", - "text": "analystes" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "ce", - "text": "c'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "avoir", - "text": "avoir" - }, - { - "lemma": "négliger", - "text": "négligé" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "impact", - "text": "impact" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": "alors", - "text": "alors" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "se", - "text": "se" - }, - { - "lemma": "profiler", - "text": "profilaient" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "signe", - "text": "signes" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "reprise", - "text": "reprise" - }, - { - "lemma": "économique", - "text": "économique" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "surtout", - "text": "surtout" - }, - { - "lemma": "financier", - "text": "financière" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "maison", - "text": "Maison" - }, - { - "lemma": "blanc", - "text": "Blanche" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "parti", - "text": "Parti" - }, - { - "lemma": "démocrate", - "text": "démocrate" - }, - { - "lemma": "se", - "text": "se" - }, - { - "lemma": "trouver", - "text": "trouvent" - }, - { - "lemma": "confronter", - "text": "confrontés" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "fort", - "text": "forte" - }, - { - "lemma": "désaffection", - "text": "désaffection" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "opinion", - "text": "opinion" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "dix", - "text": "dix" - }, - { - "lemma": "mois", - "text": "mois" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "élection", - "text": "élections" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "mi", - "text": "mi" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "mandat", - "text": "mandat" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "novembre", - "text": "novembre" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "alors", - "text": "Alors" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "thème", - "text": "thème" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": "envahir", - "text": "envahissait" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "champ", - "text": "champ" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "préoccupation", - "text": "préoccupations" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "M.", - "text": "M." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "continuer", - "text": "continué" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "donner", - "text": "donner" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "priorité", - "text": "priorité" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "réforme", - "text": "réforme" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "santé", - "text": "santé" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "lutte", - "text": "lutte" - }, - { - "lemma": "contre", - "text": "contre" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "réchauffement", - "text": "réchauffement" - }, - { - "lemma": "climatique", - "text": "climatique" - }, - { - "lemma": "ou", - "text": "ou" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "régulation", - "text": "régulation" - }, - { - "lemma": "financier", - "text": "financière" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "tout", - "text": "Tous" - }, - { - "lemma": "sujet", - "text": "sujets" - }, - { - "lemma": "essentiel", - "text": "essentiels" - }, - { - "lemma": "mais", - "text": "mais" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "bien", - "text": "bien" - }, - { - "lemma": "moins", - "text": "moins" - }, - { - "lemma": "palpable", - "text": "palpables" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "période", - "text": "période" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "crise", - "text": "crise" - }, - { - "lemma": "aigu", - "text": "aiguë" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "araser", - "text": "arase" - }, - { - "lemma": "tout", - "text": "tout" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "note", - "text": "note" - }, - { - "lemma": "Dean", - "text": "Dean" - }, - { - "lemma": "Baker", - "text": "Baker" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "codirecteur", - "text": "codirecteur" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "centre", - "text": "Centre" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "recherche", - "text": "recherches" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "politique", - "text": "politiques" - }, - { - "lemma": "économique", - "text": "économiques" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "groupe", - "text": "groupe" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "réflexion", - "text": "réflexion" - }, - { - "lemma": "démocrate", - "text": "démocrate" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "Washington", - "text": "Washington" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "un", - "text": "Une" - }, - { - "lemma": "étude", - "text": "étude" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "département", - "text": "département" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "travail", - "text": "travail" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "publier", - "text": "publiée" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": "janvier", - "text": "janvier" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "montrer", - "text": "montre" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "différence", - "text": "différence" - }, - { - "lemma": "essentiel", - "text": "essentielle" - }, - { - "lemma": "entre", - "text": "entre" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "impact", - "text": "impact" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "crise", - "text": "crise" - }, - { - "lemma": "actuel", - "text": "actuelle" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "précédent", - "text": "précédentes" - }, - { - "lemma": "récession", - "text": "récessions" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "lors", - "text": "Lors" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "celui", - "text": "celles" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "1974", - "text": "1974" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "1976", - "text": "1976" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "1990", - "text": "1990" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "1993", - "text": "1993" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": "être", - "text": "était" - }, - { - "lemma": "moins", - "text": "moins" - }, - { - "lemma": "important", - "text": "important" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "tant", - "text": "tant" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "chiffre", - "text": "chiffres" - }, - { - "lemma": "absolu", - "text": "absolus" - }, - { - "lemma": "que", - "text": "qu'" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "durée", - "text": "durée" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "ce", - "text": "Cette" - }, - { - "lemma": "comparaison", - "text": "comparaison" - }, - { - "lemma": "reste", - "text": "reste" - }, - { - "lemma": "valide", - "text": "valide" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "récession", - "text": "récession" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "1981", - "text": "1981" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "1983", - "text": "1983" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "vivre", - "text": "vit" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "président", - "text": "président" - }, - { - "lemma": "républicain", - "text": "républicain" - }, - { - "lemma": "Ronald", - "text": "Ronald" - }, - { - "lemma": "Reagan", - "text": "Reagan" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "après", - "text": "après" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "élection", - "text": "élection" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "enregistrer", - "text": "enregistrer" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "plus", - "text": "plus" - }, - { - "lemma": "bas", - "text": "bas" - }, - { - "lemma": "soutien", - "text": "soutien" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "opinion", - "text": "opinion" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "pour", - "text": "Pour" - }, - { - "lemma": "résumer", - "text": "résumer" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "désastre", - "text": "désastre" - }, - { - "lemma": "actuel", - "text": "actuel" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "état", - "text": "Etats" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "uni", - "text": "Unis" - }, - { - "lemma": "avoir", - "text": "ont" - }, - { - "lemma": "perdre", - "text": "perdu" - }, - { - "lemma": "depuis", - "text": "depuis" - }, - { - "lemma": "deux", - "text": "deux" - }, - { - "lemma": "an", - "text": "ans" - }, - { - "lemma": "5,24", - "text": "5,24" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "alors", - "text": "alors" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "chute", - "text": "chute" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "avoir", - "text": "avait" - }, - { - "lemma": "être", - "text": "été" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "1,4", - "text": "1,4" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "pire", - "text": "pire" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "lors", - "text": "lors" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "récession", - "text": "récessions" - }, - { - "lemma": "précédent", - "text": "précédentes" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "entre", - "text": "Entre" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": "total", - "text": "total" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "partiel", - "text": "partiel" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "crise", - "text": "crise" - }, - { - "lemma": "toucher", - "text": "touche" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "travail", - "text": "travail" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "près", - "text": "près" - }, - { - "lemma": "d", - "text": "d" - }, - { - "lemma": "'", - "text": "'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "américain", - "text": "Américain" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "cinq", - "text": "cinq" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "ne", - "text": "N'" - }, - { - "lemma": "avoir", - "text": "ayant" - }, - { - "lemma": "cesser", - "text": "cessé" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "répéter", - "text": "répéter" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "pays", - "text": "pays" - }, - { - "lemma": "affronter", - "text": "affrontait" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "pire", - "text": "pire" - }, - { - "lemma": "crise", - "text": "crise" - }, - { - "lemma": "depuis", - "text": "depuis" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "grand", - "text": "Grande" - }, - { - "lemma": "dépression", - "text": "Dépression" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "année", - "text": "années" - }, - { - "lemma": "1930", - "text": "1930" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Barack", - "text": "Barack" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "avoir", - "text": "avait" - }, - { - "lemma": "donner", - "text": "donné" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "sentiment", - "text": "sentiment" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "être", - "text": "être" - }, - { - "lemma": "très", - "text": "très" - }, - { - "lemma": "conscient", - "text": "conscient" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "problème", - "text": "problème" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "or", - "text": "Or" - }, - { - "lemma": "là", - "text": "là" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "paradoxe", - "text": "paradoxe" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "fois", - "text": "fois" - }, - { - "lemma": "élu", - "text": "élu" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "président", - "text": "président" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "apparaître", - "text": "apparu" - }, - { - "lemma": "comme", - "text": "comme" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "dirigeant", - "text": "dirigeant" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "faire", - "text": "fait" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "diagnostic", - "text": "diagnostic" - }, - { - "lemma": "correct", - "text": "correct" - }, - { - "lemma": "mais", - "text": "mais" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "tirer", - "text": "tiré" - }, - { - "lemma": "aucun", - "text": "aucune" - }, - { - "lemma": "conclusion", - "text": "conclusion" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "L'" - }, - { - "lemma": "Amérique", - "text": "Amérique" - }, - { - "lemma": "avoir", - "text": "avait" - }, - { - "lemma": "perdre", - "text": "perdu" - }, - { - "lemma": "3078000", - "text": "3 078 000" - }, - { - "lemma": "chômeur", - "text": "chômeurs" - }, - { - "lemma": "lors", - "text": "lors" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "dernier", - "text": "dernière" - }, - { - "lemma": "année", - "text": "année" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "mandat", - "text": "mandat" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "George", - "text": "George" - }, - { - "lemma": "Bush", - "text": "Bush" - }, - { - "lemma": ";", - "text": ";" - }, - { - "lemma": "il", - "text": "elle" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "perdre", - "text": "perdu" - }, - { - "lemma": "4228000", - "text": "4 228 000" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "présidence", - "text": "présidence" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "!", - "text": "!" - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "10", - "text": "10" - }, - { - "lemma": "janvier", - "text": "janvier" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "invoquer", - "text": "invoquant" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "urgence", - "text": "urgence" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Christina", - "text": "Christina" - }, - { - "lemma": "Romer", - "text": "Romer" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "président", - "text": "présidente" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "conseil", - "text": "conseil" - }, - { - "lemma": "économique", - "text": "économique" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "M.", - "text": "M." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "appeler", - "text": "appelé" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "vite", - "text": "vite" - }, - { - "lemma": "injecter", - "text": "injecter" - }, - { - "lemma": "75", - "text": "75" - }, - { - "lemma": "milliard", - "text": "milliards" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "dollar", - "text": "dollars" - }, - { - "lemma": "supplémentaire", - "text": "supplémentaires" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "régénérer", - "text": "régénérer" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "nul", - "text": "Nul" - }, - { - "lemma": "ne", - "text": "ne" - }, - { - "lemma": "douter", - "text": "doute" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "M.", - "text": "M." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "privilégier", - "text": "privilégiera" - }, - { - "lemma": "ce", - "text": "cette" - }, - { - "lemma": "nécessité", - "text": "nécessité" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "comment", - "text": "Comment" - }, - { - "lemma": "remédier", - "text": "remédier" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "problème", - "text": "problème" - }, - { - "lemma": "?", - "text": "?" - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "plupart", - "text": "plupart" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "analyste", - "text": "analystes" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "constater", - "text": "constatant" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "découplage", - "text": "découplage" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "entre", - "text": "entre" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "reprise", - "text": "reprise" - }, - { - "lemma": "économique", - "text": "économique" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "celui", - "text": "celle" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "être", - "text": "sont" - }, - { - "lemma": "circonspect", - "text": "circonspects" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "chef", - "text": "Chef" - }, - { - "lemma": "économiste", - "text": "économiste" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Goldman", - "text": "Goldman" - }, - { - "lemma": "Sachs", - "text": "Sachs" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "jan", - "text": "Jan" - }, - { - "lemma": "Hatzius", - "text": "Hatzius" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "texte", - "text": "texte" - }, - { - "lemma": "intituler", - "text": "intitulé" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "10", - "text": "10" - }, - { - "lemma": "question", - "text": "questions" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "attendre", - "text": "attend" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "solde", - "text": "solde" - }, - { - "lemma": "positif", - "text": "positif" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "100000", - "text": "100 000" - }, - { - "lemma": "emploi", - "text": "emplois" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "mois", - "text": "mois" - }, - { - "lemma": "dès", - "text": "dès" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "second", - "text": "second" - }, - { - "lemma": "trimestre", - "text": "trimestre" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "insuffisant", - "text": "insuffisant" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "modifier", - "text": "modifier" - }, - { - "lemma": "significativement", - "text": "significativement" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "taux", - "text": "taux" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "chômage", - "text": "chômage" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "compte", - "text": "Compte" - }, - { - "lemma": "tenu", - "text": "tenu" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "évolution", - "text": "évolution" - }, - { - "lemma": "démographique", - "text": "démographique" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "état", - "text": "Etats" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "uni", - "text": "Unis" - }, - { - "lemma": "devoir", - "text": "doivent" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "effet", - "text": "effet" - }, - { - "lemma": "créer", - "text": "créer" - }, - { - "lemma": "100000", - "text": "100 000" - }, - { - "lemma": "emploi", - "text": "emplois" - }, - { - "lemma": "mensuel", - "text": "mensuels" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "juste", - "text": "juste" - }, - { - "lemma": "stabiliser", - "text": "stabiliser" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Dean", - "text": "Dean" - }, - { - "lemma": "Baker", - "text": "Baker" - }, - { - "lemma": "expliquer", - "text": "explique" - }, - { - "lemma": "encore", - "text": "encore" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "marge", - "text": "marge" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "manoeuvre", - "text": "manoeuvre" - }, - { - "lemma": "présidentiel", - "text": "présidentielle" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "restreindre", - "text": "restreinte" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "rater", - "text": "raté" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "coche", - "text": "coche" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "limiter", - "text": "limitant" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "plan", - "text": "plan" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "relance", - "text": "relance" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "maintenant", - "text": "Maintenant" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "lui", - "text": "lui" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "politiquement", - "text": "politiquement" - }, - { - "lemma": "impossible", - "text": "impossible" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "retourner", - "text": "retourner" - }, - { - "lemma": "devant", - "text": "devant" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "congrès", - "text": "Congrès" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "augmenter", - "text": "augmenter" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "Les" - }, - { - "lemma": "conséquence", - "text": "conséquences" - }, - { - "lemma": "être", - "text": "sont" - }, - { - "lemma": "désastreux", - "text": "désastreuses" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "même", - "text": "Même" - }, - { - "lemma": "si", - "text": "s'" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "lui", - "text": "lui" - }, - { - "lemma": "rester", - "text": "reste" - }, - { - "lemma": "200", - "text": "200" - }, - { - "lemma": "milliard", - "text": "milliards" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "dollar", - "text": "dollars" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "dépenser", - "text": "dépenser" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "787", - "text": "787" - }, - { - "lemma": "milliard", - "text": "milliards" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "essentiel", - "text": "essentiel" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "impact", - "text": "impact" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "plan", - "text": "plan" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "passer", - "text": "passé" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "pire", - "text": "pire" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "selon", - "text": "selon" - }, - { - "lemma": "lui", - "text": "lui" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "président", - "text": "président" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "faire", - "text": "fait" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "choix", - "text": "choix" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "tout", - "text": "toute" - }, - { - "lemma": "connaissance", - "text": "connaissance" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "cause", - "text": "cause" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "privilégier", - "text": "privilégier" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "politique", - "text": "politique" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "ce", - "text": "C'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "dire", - "text": "dire" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "compromis", - "text": "compromis" - }, - { - "lemma": "avec", - "text": "avec" - }, - { - "lemma": "certain", - "text": "certains" - }, - { - "lemma": "républicain", - "text": "républicains" - }, - { - "lemma": "que", - "text": "qu'" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "jamais", - "text": "jamais" - }, - { - "lemma": "obtenir", - "text": "obtenu" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "pour", - "text": "Pour" - }, - { - "lemma": "M.", - "text": "M." - }, - { - "lemma": "Baker", - "text": "Baker" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "ce", - "text": "cette" - }, - { - "lemma": "quête", - "text": "quête" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "consensus", - "text": "consensus" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "entraîner", - "text": "entraîné" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "parti", - "text": "parti" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "état", - "text": "état" - }, - { - "lemma": "où", - "text": "où" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "et", - "text": "Et" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "conclure", - "text": "conclure" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "Les" - }, - { - "lemma": "républicain", - "text": "républicains" - }, - { - "lemma": "avoir", - "text": "ont" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "stratégie", - "text": "stratégie" - }, - { - "lemma": "efficace", - "text": "efficace" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "il", - "text": "ils" - }, - { - "lemma": "bloquer", - "text": "bloquent" - }, - { - "lemma": "tout", - "text": "tout" - }, - { - "lemma": "changement", - "text": "changement" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "dénoncer", - "text": "dénoncer" - }, - { - "lemma": "ensuite", - "text": "ensuite" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "président", - "text": "président" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "agir", - "text": "agit" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "il", - "text": "Il" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "temps", - "text": "temps" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "celui", - "text": "celui" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "ci", - "text": "ci" - }, - { - "lemma": "dénoncer", - "text": "dénonce" - }, - { - "lemma": "ce", - "text": "ce" - }, - { - "lemma": "comportement", - "text": "comportement" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "sabotage", - "text": "sabotage" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "économie", - "text": "économie" - }, - { - "lemma": "national", - "text": "nationale" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "mercredi", - "text": "Mercredi" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "M.", - "text": "M." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "dire", - "text": "dit" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "regretter", - "text": "regretter" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "avoir", - "text": "avoir" - }, - { - "lemma": "perdre", - "text": "perdu" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "sens", - "text": "sens" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "contact", - "text": "contact" - }, - { - "lemma": "direct", - "text": "direct" - }, - { - "lemma": "avec", - "text": "avec" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "américain", - "text": "Américains" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "leur", - "text": "leurs" - }, - { - "lemma": "valeur", - "text": "valeurs" - }, - { - "lemma": "essentiel", - "text": "essentielles" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "son", - "text": "Son" - }, - { - "lemma": "principal", - "text": "principal" - }, - { - "lemma": "conseiller", - "text": "conseiller" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Axelrod", - "text": "Axelrod" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "évoquer", - "text": "évoqué" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "salaire", - "text": "salaires" - }, - { - "lemma": "bloquer", - "text": "bloqués" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "emploi", - "text": "emplois" - }, - { - "lemma": "perdu", - "text": "perdus" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "pour", - "text": "Pour" - }, - { - "lemma": "autant", - "text": "autant" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "changer", - "text": "changera" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "t", - "text": "t" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "attitude", - "text": "attitude" - }, - { - "lemma": "vis", - "text": "vis" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "vis", - "text": "vis" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "congrès", - "text": "Congrès" - }, - { - "lemma": "?", - "text": "?" - }, - { - "lemma": "peu", - "text": "Peu" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "croire", - "text": "croient" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "chambre", - "text": "Chambre" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "voter", - "text": "voté" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "décembre", - "text": "décembre" - }, - { - "lemma": "2009", - "text": "2009" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "loi", - "text": "loi" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "création", - "text": "création" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "emploi", - "text": "emplois" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "174", - "text": "174" - }, - { - "lemma": "milliard", - "text": "milliards" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "dollar", - "text": "dollars" - }, - { - "lemma": "non", - "text": "non" - }, - { - "lemma": "encore", - "text": "encore" - }, - { - "lemma": "adopter", - "text": "adoptée" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "sénat", - "text": "Sénat" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "Les" - }, - { - "lemma": "républicain", - "text": "républicains" - }, - { - "lemma": "assimiler", - "text": "assimilent" - }, - { - "lemma": "désormais", - "text": "désormais" - }, - { - "lemma": "tout", - "text": "toute" - }, - { - "lemma": "dépense", - "text": "dépense" - }, - { - "lemma": "public", - "text": "publique" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "gabegie", - "text": "gabegie" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Harry", - "text": "Harry" - }, - { - "lemma": "Reid", - "text": "Reid" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "leader", - "text": "leader" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "démocrate", - "text": "démocrates" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "sénat", - "text": "Sénat" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "négocier", - "text": "négocierait" - }, - { - "lemma": "déjà", - "text": "déjà" - }, - { - "lemma": "avec", - "text": "avec" - }, - { - "lemma": "lui", - "text": "eux" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "certains", - "text": "Certains" - }, - { - "lemma": "imaginer", - "text": "imaginent" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "abandon", - "text": "abandon" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "pourtant", - "text": "pourtant" - }, - { - "lemma": "peu", - "text": "peu" - }, - { - "lemma": "probable", - "text": "probable" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "plan", - "text": "plan" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "assurance", - "text": "assurance" - }, - { - "lemma": "santé", - "text": "santé" - }, - { - "lemma": "afin", - "text": "afin" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "parvenir", - "text": "parvenir" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "soutien", - "text": "soutien" - }, - { - "lemma": "républicain", - "text": "républicain" - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "embauche", - "text": "embauches" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "PME", - "text": "PME" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "de", - "text": "D'" - }, - { - "lemma": "autre", - "text": "autres" - }, - { - "lemma": "envisager", - "text": "envisagent" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "affecter", - "text": "affecter" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "emploi", - "text": "emploi" - }, - { - "lemma": "75", - "text": "75" - }, - { - "lemma": "milliard", - "text": "milliards" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "dollar", - "text": "dollars" - }, - { - "lemma": "pris", - "text": "pris" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "plan", - "text": "plan" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "sauvetage", - "text": "sauvetage" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "finance", - "text": "finance" - }, - { - "lemma": "américain", - "text": "américaine" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "dit", - "text": "dit" - }, - { - "lemma": "TARP", - "text": "TARP" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "plus", - "text": "Plus" - }, - { - "lemma": "encore", - "text": "encore" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "M.", - "text": "M." - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "ce", - "text": "c'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "parti", - "text": "parti" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "tétaniser", - "text": "tétanisé" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "perspective", - "text": "perspective" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "défaite", - "text": "défaite" - }, - { - "lemma": "électoral", - "text": "électorale" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "dix", - "text": "dix" - }, - { - "lemma": "mois", - "text": "mois" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "besoin", - "text": "besoin" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "mesure", - "text": "mesures" - }, - { - "lemma": "rapide", - "text": "rapides" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "www.lemonde.fr", - "text": "www.lemonde.fr" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "amerique", - "text": "ameriques" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "article", - "text": "article" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "01", - "text": "01" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "21", - "text": "21" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "état", - "text": "etats" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "uni", - "text": "unis" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "face", - "text": "face" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "défi", - "text": "defi" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "persistant", - "text": "persistant" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "chômage", - "text": "chomage" - }, - { - "lemma": "_", - "text": "_" - }, - { - "lemma": "1294839", - "text": "1294839" - }, - { - "lemma": "_", - "text": "_" - }, - { - "lemma": "3222", - "text": "3222" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "html", - "text": "html" - }, - { - "lemma": "#", - "text": "#" - }, - { - "lemma": "xtor", - "text": "xtor" - }, - { - "lemma": "=", - "text": "=" - }, - { - "lemma": "RSS", - "text": "RSS" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "3210", - "text": "3210" - }, - { - "lemma": "2010.01.21", - "text": "2010.01.21" - } + "Richard", + "Holbrooke", + "vouloir", + "souligner", + "à", + "quel", + "point", + "le", + "administration", + "Obama", + "être", + "engager", + "dans", + "un", + "\"", + "intense", + "processus", + "diplomatique", + "\"", + "pour", + "prendre", + "en", + "compte", + "le", + "dimension", + "régional", + "de le", + "conflit", + "en", + "Afghanistan", + ".", + "\"", + "il", + "ne", + "y", + "avoir", + "pas", + "de", + "issue", + "en", + "Afghanistan", + "sans", + "prendre", + "en", + "compte", + "tout", + "celui", + "qui", + "avoir", + "un", + "intérêt", + "stratégique", + "(", + "dans", + "le", + "région", + ")", + ",", + "tout", + "le", + "acteur", + ",", + "y", + "comprendre", + "celui", + "qui", + "ne", + "avoir", + "pas", + "de", + "frontière", + "commun", + "avec", + "ce", + "pays", + "\"", + ",", + "dire", + "-", + "il", + ",", + "en", + "mentionner", + "le", + "Inde", + ",", + "le", + "Russie", + ",", + "le", + "Turquie", + ",", + "le", + "Arabie", + "saoudite", + ",", + "le", + "émirat", + "arabe", + "uni", + "." ], "posTags": [ - { - "pos": "DET_PL", - "text": "Les" - }, - { - "pos": "NOUN_PL", - "text": "Etats" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADJ_PL", - "text": "Unis" - }, - { - "pos": "NOUN_SG", - "text": "face" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "défi" - }, - { - "pos": "ADJ_SG", - "text": "persistant" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "DET_SG", - "text": "Un" - }, - { - "pos": "NOUN_SG", - "text": "chômeur" - }, - { - "pos": "ADJ_SG", - "text": "américain" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "NUM", - "text": "deux" - }, - { - "pos": "VERB_P3SG", - "text": "dit" - }, - { - "pos": "VERB_INF", - "text": "souffrir" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "anxiété" - }, - { - "pos": "COORD", - "text": "ou" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "dépression" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "dû" - }, - { - "pos": "VERB_INF", - "text": "emprunter" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "argent" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_PL", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "amis" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Selon" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "enquête" - }, - { - "pos": "ADJ_SG", - "text": "publiée" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "lundi" - }, - { - "pos": "NUM", - "text": "18" - }, - { - "pos": "NOUN_SG", - "text": "janvier" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "Census" - }, - { - "pos": "NOUN_SG", - "text": "Bureau" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN_SG", - "text": "équivalent" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Insee" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NUM", - "text": "deux" - }, - { - "pos": "NOUN_PL", - "text": "ans" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "nombre" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "couples" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "PREP", - "text": "avec" - }, - { - "pos": "NOUN_PL", - "text": "enfants" - }, - { - "pos": "ADJ_PL", - "text": "mineurs" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "doublé" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Près" - }, - { - "pos": "DET_PL", - "text": "de" - }, - { - "pos": "NUM", - "text": "40" - }, - { - "pos": "SYM", - "text": "%" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "DET_PL", - "text": "ces" - }, - { - "pos": "NOUN_PL", - "text": "parents" - }, - { - "pos": "VERB_P3PL", - "text": "notent" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_PL", - "text": "modifications" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "comportement" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "chez" - }, - { - "pos": "DET_PL", - "text": "leurs" - }, - { - "pos": "NOUN_PL", - "text": "enfants" - }, - { - "pos": "CONJQUE", - "text": "qu'" - }, - { - "pos": "PRON", - "text": "ils" - }, - { - "pos": "VERB_P3PL", - "text": "attribuent" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "NOUN_SG", - "text": "perte" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "travail" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "moitié" - }, - { - "pos": "VERB_P3PL", - "text": "évoquent" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_SG", - "text": "transformation" - }, - { - "pos": "ADJ_SG", - "text": "fondamentale" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "NOUN_SG", - "text": "existence" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "premier" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "changements" - }, - { - "pos": "VERB_PRP", - "text": "consistant" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "perte" - }, - { - "pos": "ADV", - "text": "presque" - }, - { - "pos": "ADJ_SG", - "text": "instantanée" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "toute" - }, - { - "pos": "NOUN_SG", - "text": "couverture" - }, - { - "pos": "ADJ_SG", - "text": "sociale" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Durant" - }, - { - "pos": "ADV", - "text": "tout" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "mois" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "décembre" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "approche" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "anniversaire" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "prise" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "fonctions" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "président" - }, - { - "pos": "NOUN_INV", - "text": "Barack" - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NUM", - "text": "20" - }, - { - "pos": "NOUN_SG", - "text": "janvier" - }, - { - "pos": "NUM", - "text": "2009" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "reportages" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "enquêtes" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "conséquences" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_PL", - "text": "ces" - }, - { - "pos": "NOUN_PL", - "text": "destructions" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "VAUX_P3PL", - "text": "sont" - }, - { - "pos": "PAP_PL", - "text": "devenus" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "préoccupation" - }, - { - "pos": "ADJ_SG", - "text": "obsédante" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "médias" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRON_P1P2", - "text": "Je" - }, - { - "pos": "PC", - "text": "me" - }, - { - "pos": "VERB_P1P2", - "text": "sens" - }, - { - "pos": "COMME", - "text": "comme" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "lie" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "terre" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_P3SG", - "text": "disait" - }, - { - "pos": "ADV", - "text": "récemment" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "chômeur" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "heure" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "ADJ2_SG", - "text": "grande" - }, - { - "pos": "NOUN_SG", - "text": "écoute" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Alors" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "Amérique" - }, - { - "pos": "VERB_P3SG", - "text": "découvre" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "écrans" - }, - { - "pos": "PRON", - "text": "tous" - }, - { - "pos": "DET_PL", - "text": "ces" - }, - { - "pos": "NOUN_PL", - "text": "visages" - }, - { - "pos": "ADJ_PL", - "text": "ravagés" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VERB_P3PL", - "text": "évoquent" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_SG", - "text": "honte" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VERB_P3SG", - "text": "interroge" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "NUM", - "text": "10" - }, - { - "pos": "SYM", - "text": "%" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONN", - "text": "comment" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "est" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON", - "text": "on" - }, - { - "pos": "PAP_SG", - "text": "arrivé" - }, - { - "pos": "ADV", - "text": "là" - }, - { - "pos": "SENT", - "text": "?" - }, - { - "pos": "PREP", - "text": "Pour" - }, - { - "pos": "ADV", - "text": "beaucoup" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_PL", - "text": "analystes" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "c'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VAUX_INF", - "text": "avoir" - }, - { - "pos": "PAP_SG", - "text": "négligé" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "impact" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "ADV", - "text": "alors" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "PC", - "text": "se" - }, - { - "pos": "VERB_P3PL", - "text": "profilaient" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "signes" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "reprise" - }, - { - "pos": "ADJ_SG", - "text": "économique" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "ADV", - "text": "surtout" - }, - { - "pos": "ADJ_SG", - "text": "financière" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "Maison" - }, - { - "pos": "ADJ_SG", - "text": "Blanche" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "Parti" - }, - { - "pos": "ADJ_SG", - "text": "démocrate" - }, - { - "pos": "PC", - "text": "se" - }, - { - "pos": "VERB_P3PL", - "text": "trouvent" - }, - { - "pos": "ADJ_PL", - "text": "confrontés" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "ADJ_SG", - "text": "forte" - }, - { - "pos": "NOUN_SG", - "text": "désaffection" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "opinion" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NUM", - "text": "dix" - }, - { - "pos": "NOUN_INV", - "text": "mois" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "élections" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "mi" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "mandat" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "novembre" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Alors" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "thème" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "VERB_P3SG", - "text": "envahissait" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "champ" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "préoccupations" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "M." - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "continué" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "donner" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "priorité" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "réforme" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "santé" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "lutte" - }, - { - "pos": "PREP", - "text": "contre" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "réchauffement" - }, - { - "pos": "ADJ_SG", - "text": "climatique" - }, - { - "pos": "COORD", - "text": "ou" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "régulation" - }, - { - "pos": "ADJ_SG", - "text": "financière" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_PL", - "text": "Tous" - }, - { - "pos": "NOUN_PL", - "text": "sujets" - }, - { - "pos": "ADJ_PL", - "text": "essentiels" - }, - { - "pos": "COORD", - "text": "mais" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADV", - "text": "bien" - }, - { - "pos": "ADV", - "text": "moins" - }, - { - "pos": "ADJ_PL", - "text": "palpables" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "période" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "crise" - }, - { - "pos": "ADJ_SG", - "text": "aiguë" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VERB_P3SG", - "text": "arase" - }, - { - "pos": "ADV", - "text": "tout" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "note" - }, - { - "pos": "NOUN_INV", - "text": "Dean" - }, - { - "pos": "NOUN_INV", - "text": "Baker" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "codirecteur" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "Centre" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "recherches" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "politiques" - }, - { - "pos": "ADJ_PL", - "text": "économiques" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "groupe" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "réflexion" - }, - { - "pos": "ADJ_SG", - "text": "démocrate" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "Washington" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Une" - }, - { - "pos": "NOUN_SG", - "text": "étude" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "département" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "travail" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PAP_SG", - "text": "publiée" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NUM", - "text": "8" - }, - { - "pos": "NOUN_SG", - "text": "janvier" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_P3SG", - "text": "montre" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "différence" - }, - { - "pos": "ADJ_SG", - "text": "essentielle" - }, - { - "pos": "PREP", - "text": "entre" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "impact" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "crise" - }, - { - "pos": "ADJ_SG", - "text": "actuelle" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "ADJ_PL", - "text": "précédentes" - }, - { - "pos": "NOUN_PL", - "text": "récessions" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Lors" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "PRON", - "text": "celles" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "1974" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "1976" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "1990" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "1993" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "VAUX_P3SG", - "text": "était" - }, - { - "pos": "ADV", - "text": "moins" - }, - { - "pos": "ADJ_SG", - "text": "important" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "tant" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_PL", - "text": "chiffres" - }, - { - "pos": "NOUN_PL", - "text": "absolus" - }, - { - "pos": "CONJQUE", - "text": "qu'" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "durée" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Cette" - }, - { - "pos": "NOUN_SG", - "text": "comparaison" - }, - { - "pos": "NOUN_SG", - "text": "reste" - }, - { - "pos": "ADJ_SG", - "text": "valide" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "récession" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "1981" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "1983" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VERB_P3SG", - "text": "vit" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "président" - }, - { - "pos": "ADJ_SG", - "text": "républicain" - }, - { - "pos": "NOUN_INV", - "text": "Ronald" - }, - { - "pos": "NOUN_INV", - "text": "Reagan" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "an" - }, - { - "pos": "PREP", - "text": "après" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "élection" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_INF", - "text": "enregistrer" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_INV", - "text": "plus" - }, - { - "pos": "NOUN_INV", - "text": "bas" - }, - { - "pos": "NOUN_SG", - "text": "soutien" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "opinion" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Pour" - }, - { - "pos": "VERB_INF", - "text": "résumer" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "désastre" - }, - { - "pos": "ADJ_SG", - "text": "actuel" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "Etats" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_PL", - "text": "Unis" - }, - { - "pos": "VAUX_P3PL", - "text": "ont" - }, - { - "pos": "PAP_SG", - "text": "perdu" - }, - { - "pos": "PREP", - "text": "depuis" - }, - { - "pos": "NUM", - "text": "deux" - }, - { - "pos": "NOUN_PL", - "text": "ans" - }, - { - "pos": "NUM", - "text": "5,24" - }, - { - "pos": "SYM", - "text": "%" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "alors" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "chute" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "VAUX_P3SG", - "text": "avait" - }, - { - "pos": "VAUX_PAP", - "text": "été" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "1,4" - }, - { - "pos": "SYM", - "text": "%" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NUM", - "text": "3" - }, - { - "pos": "SYM", - "text": "%" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "pire" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "lors" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "récessions" - }, - { - "pos": "ADJ_PL", - "text": "précédentes" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Entre" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "ADJ_SG", - "text": "total" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "ADJ_SG", - "text": "partiel" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "crise" - }, - { - "pos": "VERB_P3SG", - "text": "touche" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "travail" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "PREP", - "text": "près" - }, - { - "pos": "NOUN_INV", - "text": "d" - }, - { - "pos": "PUNCT", - "text": "'" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "Américain" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "NUM", - "text": "cinq" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NEG", - "text": "N'" - }, - { - "pos": "VAUX_PRP", - "text": "ayant" - }, - { - "pos": "PAP_SG", - "text": "cessé" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "répéter" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_INV", - "text": "pays" - }, - { - "pos": "VERB_P3SG", - "text": "affrontait" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "ADJ_SG", - "text": "pire" - }, - { - "pos": "NOUN_SG", - "text": "crise" - }, - { - "pos": "PREP", - "text": "depuis" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "ADJ2_SG", - "text": "Grande" - }, - { - "pos": "NOUN_SG", - "text": "Dépression" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "années" - }, - { - "pos": "NUM", - "text": "1930" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_INV", - "text": "Barack" - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "VAUX_P3SG", - "text": "avait" - }, - { - "pos": "PAP_SG", - "text": "donné" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "sentiment" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "VAUX_INF", - "text": "être" - }, - { - "pos": "ADV", - "text": "très" - }, - { - "pos": "ADJ_SG", - "text": "conscient" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "problème" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COORD", - "text": "Or" - }, - { - "pos": "ADV", - "text": "là" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "paradoxe" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_INV", - "text": "fois" - }, - { - "pos": "ADJ_SG", - "text": "élu" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "président" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "apparu" - }, - { - "pos": "COMME", - "text": "comme" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "dirigeant" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "fait" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "diagnostic" - }, - { - "pos": "ADJ_SG", - "text": "correct" - }, - { - "pos": "COORD", - "text": "mais" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "PC", - "text": "en" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "tiré" - }, - { - "pos": "DET_SG", - "text": "aucune" - }, - { - "pos": "NOUN_SG", - "text": "conclusion" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "L'" - }, - { - "pos": "NOUN_SG", - "text": "Amérique" - }, - { - "pos": "VAUX_P3SG", - "text": "avait" - }, - { - "pos": "PAP_SG", - "text": "perdu" - }, - { - "pos": "NUM", - "text": "3 078 000" - }, - { - "pos": "NOUN_PL", - "text": "chômeurs" - }, - { - "pos": "ADV", - "text": "lors" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "ADJ2_SG", - "text": "dernière" - }, - { - "pos": "NOUN_SG", - "text": "année" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "mandat" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "George" - }, - { - "pos": "NOUN_INV", - "text": "Bush" - }, - { - "pos": "PUNCT", - "text": ";" - }, - { - "pos": "PRON", - "text": "elle" - }, - { - "pos": "PC", - "text": "en" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "perdu" - }, - { - "pos": "NUM", - "text": "4 228 000" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "an" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "présidence" - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "SENT", - "text": "!" - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "NUM", - "text": "10" - }, - { - "pos": "NOUN_SG", - "text": "janvier" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_PRP", - "text": "invoquant" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "urgence" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_INV", - "text": "Christina" - }, - { - "pos": "NOUN_INV", - "text": "Romer" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "présidente" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "conseil" - }, - { - "pos": "ADJ_SG", - "text": "économique" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "M." - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "appelé" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "ADV", - "text": "vite" - }, - { - "pos": "VERB_INF", - "text": "injecter" - }, - { - "pos": "NUM", - "text": "75" - }, - { - "pos": "NOUN_PL", - "text": "milliards" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "dollars" - }, - { - "pos": "ADJ_PL", - "text": "supplémentaires" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VERB_INF", - "text": "régénérer" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "Nul" - }, - { - "pos": "NEG", - "text": "ne" - }, - { - "pos": "VERB_P3SG", - "text": "doute" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "NOUN_SG", - "text": "M." - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "VERB_P3SG", - "text": "privilégiera" - }, - { - "pos": "DET_SG", - "text": "cette" - }, - { - "pos": "NOUN_SG", - "text": "nécessité" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "CONN", - "text": "Comment" - }, - { - "pos": "VERB_INF", - "text": "remédier" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "problème" - }, - { - "pos": "SENT", - "text": "?" - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "plupart" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "analystes" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_PRP", - "text": "constatant" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_SG", - "text": "découplage" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "entre" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "reprise" - }, - { - "pos": "ADJ_SG", - "text": "économique" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "PRON", - "text": "celle" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3PL", - "text": "sont" - }, - { - "pos": "ADJ_PL", - "text": "circonspects" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_SG", - "text": "Chef" - }, - { - "pos": "NOUN_SG", - "text": "économiste" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Goldman" - }, - { - "pos": "NOUN_INV", - "text": "Sachs" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "Jan" - }, - { - "pos": "NOUN_INV", - "text": "Hatzius" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "texte" - }, - { - "pos": "ADJ_SG", - "text": "intitulé" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NUM", - "text": "10" - }, - { - "pos": "NOUN_PL", - "text": "questions" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VERB_P3SG", - "text": "attend" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "solde" - }, - { - "pos": "ADJ_SG", - "text": "positif" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "100 000" - }, - { - "pos": "NOUN_PL", - "text": "emplois" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "NOUN_INV", - "text": "mois" - }, - { - "pos": "PREP", - "text": "dès" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "ADJ2_SG", - "text": "second" - }, - { - "pos": "NOUN_SG", - "text": "trimestre" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADJ_SG", - "text": "insuffisant" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VERB_INF", - "text": "modifier" - }, - { - "pos": "ADV", - "text": "significativement" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "taux" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "chômage" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_SG", - "text": "Compte" - }, - { - "pos": "ADJ_SG", - "text": "tenu" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "NOUN_SG", - "text": "évolution" - }, - { - "pos": "ADJ_SG", - "text": "démographique" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "Etats" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_PL", - "text": "Unis" - }, - { - "pos": "VERB_P3PL", - "text": "doivent" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "effet" - }, - { - "pos": "VERB_INF", - "text": "créer" - }, - { - "pos": "NUM", - "text": "100 000" - }, - { - "pos": "NOUN_PL", - "text": "emplois" - }, - { - "pos": "ADJ_PL", - "text": "mensuels" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "ADJ_SG", - "text": "juste" - }, - { - "pos": "VERB_INF", - "text": "stabiliser" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_INV", - "text": "Dean" - }, - { - "pos": "NOUN_INV", - "text": "Baker" - }, - { - "pos": "VERB_P3SG", - "text": "explique" - }, - { - "pos": "ADV", - "text": "encore" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "marge" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "manoeuvre" - }, - { - "pos": "ADJ_SG", - "text": "présidentielle" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "restreinte" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "raté" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "coche" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "VERB_PRP", - "text": "limitant" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "plan" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "relance" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Maintenant" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "PC", - "text": "lui" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "ADV", - "text": "politiquement" - }, - { - "pos": "ADJ_SG", - "text": "impossible" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "retourner" - }, - { - "pos": "PREP", - "text": "devant" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "Congrès" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "PC", - "text": "l'" - }, - { - "pos": "VERB_INF", - "text": "augmenter" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_PL", - "text": "Les" - }, - { - "pos": "NOUN_PL", - "text": "conséquences" - }, - { - "pos": "VAUX_P3PL", - "text": "sont" - }, - { - "pos": "ADJ_PL", - "text": "désastreuses" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Même" - }, - { - "pos": "CONN", - "text": "s'" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "PC", - "text": "lui" - }, - { - "pos": "VERB_P3SG", - "text": "reste" - }, - { - "pos": "NUM", - "text": "200" - }, - { - "pos": "NOUN_PL", - "text": "milliards" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "dollars" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "VERB_INF", - "text": "dépenser" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "NUM", - "text": "787" - }, - { - "pos": "NOUN_PL", - "text": "milliards" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "essentiel" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "impact" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "plan" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "passé" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "NOUN_SG", - "text": "pire" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "selon" - }, - { - "pos": "PRON", - "text": "lui" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "président" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "fait" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_INV", - "text": "choix" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DET_SG", - "text": "toute" - }, - { - "pos": "NOUN_SG", - "text": "connaissance" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "cause" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VERB_INF", - "text": "privilégier" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "politique" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "C'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "VERB_INF", - "text": "dire" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_INV", - "text": "compromis" - }, - { - "pos": "PREP", - "text": "avec" - }, - { - "pos": "DET_PL", - "text": "certains" - }, - { - "pos": "NOUN_PL", - "text": "républicains" - }, - { - "pos": "CONJQUE", - "text": "qu'" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "ADV", - "text": "jamais" - }, - { - "pos": "PAP_SG", - "text": "obtenu" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Pour" - }, - { - "pos": "NOUN_SG", - "text": "M." - }, - { - "pos": "NOUN_INV", - "text": "Baker" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "cette" - }, - { - "pos": "NOUN_SG", - "text": "quête" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "consensus" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "entraîné" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "parti" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "état" - }, - { - "pos": "CONN", - "text": "où" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COORD", - "text": "Et" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "conclure" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_PL", - "text": "Les" - }, - { - "pos": "NOUN_PL", - "text": "républicains" - }, - { - "pos": "VAUX_P3PL", - "text": "ont" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "stratégie" - }, - { - "pos": "ADJ_SG", - "text": "efficace" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PRON", - "text": "ils" - }, - { - "pos": "VERB_P3PL", - "text": "bloquent" - }, - { - "pos": "DET_SG", - "text": "tout" - }, - { - "pos": "NOUN_SG", - "text": "changement" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VERB_INF", - "text": "dénoncer" - }, - { - "pos": "ADV", - "text": "ensuite" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "président" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "VERB_P3SG", - "text": "agit" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "Il" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "NOUN_INV", - "text": "temps" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "PRON", - "text": "celui" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADV", - "text": "ci" - }, - { - "pos": "VERB_P1P2", - "text": "dénonce" - }, - { - "pos": "DET_SG", - "text": "ce" - }, - { - "pos": "NOUN_SG", - "text": "comportement" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "sabotage" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "économie" - }, - { - "pos": "ADJ_SG", - "text": "nationale" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_SG", - "text": "Mercredi" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "M." - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "dit" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VERB_INF", - "text": "regretter" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "VAUX_INF", - "text": "avoir" - }, - { - "pos": "PAP_SG", - "text": "perdu" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "sens" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "contact" - }, - { - "pos": "ADJ_SG", - "text": "direct" - }, - { - "pos": "PREP", - "text": "avec" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "Américains" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_PL", - "text": "leurs" - }, - { - "pos": "NOUN_PL", - "text": "valeurs" - }, - { - "pos": "ADJ_PL", - "text": "essentielles" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Son" - }, - { - "pos": "ADJ2_SG", - "text": "principal" - }, - { - "pos": "NOUN_SG", - "text": "conseiller" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Axelrod" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "évoqué" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "salaires" - }, - { - "pos": "ADJ_PL", - "text": "bloqués" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "emplois" - }, - { - "pos": "ADJ_PL", - "text": "perdus" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Pour" - }, - { - "pos": "ADV", - "text": "autant" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_P3SG", - "text": "changera" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_INV", - "text": "t" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "attitude" - }, - { - "pos": "NOUN_INV", - "text": "vis" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_INV", - "text": "vis" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_INV", - "text": "Congrès" - }, - { - "pos": "SENT", - "text": "?" - }, - { - "pos": "PRON", - "text": "Peu" - }, - { - "pos": "PC", - "text": "y" - }, - { - "pos": "VERB_P3PL", - "text": "croient" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "Chambre" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "voté" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "décembre" - }, - { - "pos": "NUM", - "text": "2009" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "loi" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "création" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_PL", - "text": "emplois" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "174" - }, - { - "pos": "NOUN_PL", - "text": "milliards" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "dollars" - }, - { - "pos": "ADV", - "text": "non" - }, - { - "pos": "ADV", - "text": "encore" - }, - { - "pos": "PAP_SG", - "text": "adoptée" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "Sénat" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_PL", - "text": "Les" - }, - { - "pos": "NOUN_PL", - "text": "républicains" - }, - { - "pos": "VERB_P3PL", - "text": "assimilent" - }, - { - "pos": "ADV", - "text": "désormais" - }, - { - "pos": "DET_SG", - "text": "toute" - }, - { - "pos": "NOUN_SG", - "text": "dépense" - }, - { - "pos": "ADJ_SG", - "text": "publique" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "gabegie" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_INV", - "text": "Harry" - }, - { - "pos": "NOUN_INV", - "text": "Reid" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "leader" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "démocrates" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "Sénat" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_P3SG", - "text": "négocierait" - }, - { - "pos": "ADV", - "text": "déjà" - }, - { - "pos": "PREP", - "text": "avec" - }, - { - "pos": "PRON", - "text": "eux" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "Certains" - }, - { - "pos": "VERB_P3PL", - "text": "imaginent" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "abandon" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "pourtant" - }, - { - "pos": "ADV", - "text": "peu" - }, - { - "pos": "ADJ_SG", - "text": "probable" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "plan" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "assurance" - }, - { - "pos": "NOUN_SG", - "text": "santé" - }, - { - "pos": "MISC", - "text": "afin" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "parvenir" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "soutien" - }, - { - "pos": "ADJ_SG", - "text": "républicain" - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "embauches" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_INV", - "text": "PME" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_PL", - "text": "D'" - }, - { - "pos": "ADJ_PL", - "text": "autres" - }, - { - "pos": "VERB_P3PL", - "text": "envisagent" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "VERB_INF", - "text": "affecter" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "emploi" - }, - { - "pos": "NUM", - "text": "75" - }, - { - "pos": "NOUN_PL", - "text": "milliards" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "dollars" - }, - { - "pos": "ADJ_INV", - "text": "pris" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "plan" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "sauvetage" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "finance" - }, - { - "pos": "ADJ_SG", - "text": "américaine" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN_SG", - "text": "dit" - }, - { - "pos": "NOUN_INV", - "text": "TARP" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Plus" - }, - { - "pos": "ADV", - "text": "encore" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "NOUN_SG", - "text": "M." - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "c'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "parti" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADJ_SG", - "text": "tétanisé" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "perspective" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "défaite" - }, - { - "pos": "ADJ_SG", - "text": "électorale" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "NUM", - "text": "dix" - }, - { - "pos": "NOUN_INV", - "text": "mois" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "NOUN_SG", - "text": "besoin" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "mesures" - }, - { - "pos": "ADJ_PL", - "text": "rapides" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_SG", - "text": "http" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUN_INV", - "text": "www.lemonde.fr" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUN_PL", - "text": "ameriques" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUN_SG", - "text": "article" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NUM", - "text": "01" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NUM", - "text": "21" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_PL", - "text": "etats" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_PL", - "text": "unis" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "face" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "defi" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADJ_SG", - "text": "persistant" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "chomage" - }, - { - "pos": "SYM", - "text": "_" - }, - { - "pos": "NUM", - "text": "1294839" - }, - { - "pos": "SYM", - "text": "_" - }, - { - "pos": "NUM", - "text": "3222" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_SG", - "text": "html" - }, - { - "pos": "SYM", - "text": "#" - }, - { - "pos": "NOUN_SG", - "text": "xtor" - }, - { - "pos": "SYM", - "text": "=" - }, - { - "pos": "NOUN_INV", - "text": "RSS" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "3210" - }, - { - "pos": "NUM", - "text": "2010.01.21" - } + "NOUN_INV", + "NOUN_INV", + "VERB_P3SG", + "VERB_INF", + "PREP_A", + "DET_SG", + "NOUN_SG", + "DET_SG", + "NOUN_SG", + "NOUN_INV", + "VAUX_P3SG", + "PAP_SG", + "PREP", + "DET_SG", + "PUNCT", + "ADJ_SG", + "NOUN_INV", + "ADJ_SG", + "PUNCT", + "PREP", + "VERB_INF", + "PREP", + "NOUN_SG", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PREP_DE", + "NOUN_SG", + "PREP", + "NOUN_INV", + "SENT", + "PUNCT", + "PRON", + "NEG", + "PC", + "VAUX_P3SG", + "ADV", + "PREP_DE", + "NOUN_SG", + "PREP", + "NOUN_INV", + "PREP", + "VERB_INF", + "PREP", + "NOUN_SG", + "DET_PL", + "PRON", + "RELPRO", + "VAUX_P3PL", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PUNCT", + "PREP", + "DET_SG", + "NOUN_SG", + "PUNCT", + "CM", + "PRON", + "DET_PL", + "NOUN_PL", + "CM", + "PC", + "VERB_P1P2", + "PRON", + "RELPRO", + "NEG", + "VAUX_P3PL", + "ADV", + "PREP_DE", + "NOUN_SG", + "ADJ_SG", + "PREP", + "DET_SG", + "NOUN_INV", + "PUNCT", + "CM", + "VERB_P3SG", + "PUNCT", + "PRON", + "CM", + "PREP", + "VERB_PRP", + "DET_SG", + "NOUN_INV", + "CM", + "DET_SG", + "NOUN_INV", + "CM", + "DET_SG", + "NOUN_INV", + "CM", + "DET_SG", + "NOUN_INV", + "ADJ_SG", + "CM", + "DET_PL", + "NOUN_PL", + "ADJ_PL", + "NOUN_PL", + "SENT" ], - "requestId": "c4bdf301-9d26-41cf-b9ef-26f83ded0fb9", - "timers": { - "rblJe": 535, - "rliJe": 4 - } + "tokens": [ + "Richard", + "Holbrooke", + "veut", + "souligner", + "à", + "quel", + "point", + "l'", + "administration", + "Obama", + "est", + "engagée", + "dans", + "un", + "\"", + "intense", + "processus", + "diplomatique", + "\"", + "pour", + "prendre", + "en", + "compte", + "la", + "dimension", + "régionale", + "du", + "conflit", + "en", + "Afghanistan", + ".", + "\"", + "Il", + "n'", + "y", + "a", + "pas", + "d'", + "issue", + "en", + "Afghanistan", + "sans", + "prendre", + "en", + "compte", + "tous", + "ceux", + "qui", + "ont", + "un", + "intérêt", + "stratégique", + "(", + "dans", + "la", + "région", + ")", + ",", + "tous", + "les", + "acteurs", + ",", + "y", + "compris", + "ceux", + "qui", + "n'", + "ont", + "pas", + "de", + "frontière", + "commune", + "avec", + "ce", + "pays", + "\"", + ",", + "dit", + "-", + "il", + ",", + "en", + "mentionnant", + "l'", + "Inde", + ",", + "la", + "Russie", + ",", + "la", + "Turquie", + ",", + "l'", + "Arabie", + "saoudite", + ",", + "les", + "Emirats", + "arabes", + "unis", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-doc-sentiment.json b/api/src/test/mock-data/response/fra-doc-sentiment.json index 0e3023082c..0e5ffd4658 100644 --- a/api/src/test/mock-data/response/fra-doc-sentiment.json +++ b/api/src/test/mock-data/response/fra-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "French is not supported by Rosette Sentiment Analyzer", - "requestId": "a2c25ed3-7a25-4174-94df-81f1a858a00c" + "message": "Unsupported language: French" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-categories.json b/api/src/test/mock-data/response/fra-sentence-categories.json deleted file mode 100644 index 8e0b19f692..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "French is not supported by Rosette Categorizer", - "requestId": "699101dd-4350-4c3f-afe4-7fea556f140c" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-categories.status b/api/src/test/mock-data/response/fra-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-entities.json b/api/src/test/mock-data/response/fra-sentence-entities.json deleted file mode 100644 index cfd0dcbe46..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-entities.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.005682140588760376, - "count": 2, - "indocChainId": 2, - "mention": "Afghanistan", - "normalized": "Afghanistan", - "type": "LOCATION" - }, - { - "confidence": 0.005184590816497803, - "count": 1, - "indocChainId": 0, - "mention": "Richard Holbrooke", - "normalized": "Richard Holbrooke", - "type": "PERSON" - }, - { - "confidence": 0.006463110446929932, - "count": 1, - "indocChainId": 1, - "mention": "Obama", - "normalized": "Obama", - "type": "PERSON" - }, - { - "confidence": 0.007083892822265625, - "count": 1, - "indocChainId": 4, - "mention": "Inde", - "normalized": "Inde", - "type": "LOCATION" - }, - { - "confidence": 0.00651097297668457, - "count": 1, - "indocChainId": 5, - "mention": "Russie", - "normalized": "Russie", - "type": "LOCATION" - }, - { - "confidence": 0.006072402000427246, - "count": 1, - "indocChainId": 6, - "mention": "Turquie", - "normalized": "Turquie", - "type": "LOCATION" - }, - { - "confidence": 0.005214691162109375, - "count": 1, - "indocChainId": 7, - "mention": "Arabie saoudite", - "normalized": "Arabie saoudite", - "type": "LOCATION" - }, - { - "confidence": 0.00521475076675415, - "count": 1, - "indocChainId": 8, - "mention": "Emirats arabes unis", - "normalized": "Emirats arabes unis", - "type": "LOCATION" - } - ], - "requestId": "a153dfb0-d82c-40f3-82d8-f6da36b7901a", - "timers": { - "rblJe": 1, - "rexJe": 9, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-entities.status b/api/src/test/mock-data/response/fra-sentence-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-entities_linked.json b/api/src/test/mock-data/response/fra-sentence-entities_linked.json deleted file mode 100644 index 1f0868ceff..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-entities_linked.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.5999774000449077, - "entityId": "Q155649", - "indocChainId": 0, - "mention": "Richard Holbrooke" - }, - { - "confidence": 0.5542817281359562, - "entityId": "Q76", - "indocChainId": 1, - "mention": "Obama" - }, - { - "confidence": 0.344601070328921, - "entityId": "Q889", - "indocChainId": 2, - "mention": "Afghanistan" - }, - { - "confidence": 0.48661730641588585, - "entityId": "Q153317", - "indocChainId": 4, - "mention": "Inde" - }, - { - "confidence": 0.6275727091341415, - "entityId": "Q159", - "indocChainId": 5, - "mention": "Russie" - }, - { - "confidence": 0.6695511508771029, - "entityId": "Q43", - "indocChainId": 6, - "mention": "Turquie" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 7, - "mention": "Arabie saoudite" - }, - { - "confidence": 0.5250845514345862, - "entityId": "NEW-CLUSTER", - "indocChainId": 8, - "mention": "Emirats arabes unis" - } - ], - "requestId": "bfffb197-066d-4282-96e6-c6b5adb6b91d", - "timers": { - "rblJe": 2, - "res": 113, - "rexJe": 5, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-entities_linked.status b/api/src/test/mock-data/response/fra-sentence-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-language.json b/api/src/test/mock-data/response/fra-sentence-language.json deleted file mode 100644 index a7be570d95..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.022020024095284807, - "language": "fra" - }, - { - "confidence": 0.007541103556368278, - "language": "cat" - }, - { - "confidence": 0.007162807923754788, - "language": "spa" - }, - { - "confidence": 0.005914737677344184, - "language": "eng" - }, - { - "confidence": 0.005347023739733947, - "language": "ron" - } - ], - "requestId": "c6e91eff-63f2-49b1-9f4e-8573d4a4ffee", - "timers": { - "rliJe": 3 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-language.status b/api/src/test/mock-data/response/fra-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-morphology_complete.json b/api/src/test/mock-data/response/fra-sentence-morphology_complete.json deleted file mode 100644 index ca2857a02c..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-morphology_complete.json +++ /dev/null @@ -1,821 +0,0 @@ -{ - "compounds": [], - "hanReadings": [], - "lemmas": [ - { - "lemma": "Richard", - "text": "Richard" - }, - { - "lemma": "Holbrooke", - "text": "Holbrooke" - }, - { - "lemma": "vouloir", - "text": "veut" - }, - { - "lemma": "souligner", - "text": "souligner" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "quel", - "text": "quel" - }, - { - "lemma": "point", - "text": "point" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "administration", - "text": "administration" - }, - { - "lemma": "Obama", - "text": "Obama" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "engager", - "text": "engagée" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "intense", - "text": "intense" - }, - { - "lemma": "processus", - "text": "processus" - }, - { - "lemma": "diplomatique", - "text": "diplomatique" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "prendre", - "text": "prendre" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "compte", - "text": "compte" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "dimension", - "text": "dimension" - }, - { - "lemma": "régional", - "text": "régionale" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "conflit", - "text": "conflit" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "Afghanistan", - "text": "Afghanistan" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "il", - "text": "Il" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "issue", - "text": "issue" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "Afghanistan", - "text": "Afghanistan" - }, - { - "lemma": "sans", - "text": "sans" - }, - { - "lemma": "prendre", - "text": "prendre" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "compte", - "text": "compte" - }, - { - "lemma": "tout", - "text": "tous" - }, - { - "lemma": "celui", - "text": "ceux" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "avoir", - "text": "ont" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "intérêt", - "text": "intérêt" - }, - { - "lemma": "stratégique", - "text": "stratégique" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "région", - "text": "région" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "tout", - "text": "tous" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "acteur", - "text": "acteurs" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "comprendre", - "text": "compris" - }, - { - "lemma": "celui", - "text": "ceux" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "avoir", - "text": "ont" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "frontière", - "text": "frontière" - }, - { - "lemma": "commun", - "text": "commune" - }, - { - "lemma": "avec", - "text": "avec" - }, - { - "lemma": "ce", - "text": "ce" - }, - { - "lemma": "pays", - "text": "pays" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "dire", - "text": "dit" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "mentionner", - "text": "mentionnant" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Inde", - "text": "Inde" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "Russie", - "text": "Russie" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "Turquie", - "text": "Turquie" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Arabie", - "text": "Arabie" - }, - { - "lemma": "saoudite", - "text": "saoudite" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "émirat", - "text": "Emirats" - }, - { - "lemma": "arabe", - "text": "arabes" - }, - { - "lemma": "uni", - "text": "unis" - }, - { - "lemma": ".", - "text": "." - } - ], - "posTags": [ - { - "pos": "NOUN_INV", - "text": "Richard" - }, - { - "pos": "NOUN_INV", - "text": "Holbrooke" - }, - { - "pos": "VERB_P3SG", - "text": "veut" - }, - { - "pos": "VERB_INF", - "text": "souligner" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "quel" - }, - { - "pos": "NOUN_SG", - "text": "point" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "administration" - }, - { - "pos": "NOUN_INV", - "text": "Obama" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "engagée" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJ_SG", - "text": "intense" - }, - { - "pos": "NOUN_INV", - "text": "processus" - }, - { - "pos": "ADJ_SG", - "text": "diplomatique" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VERB_INF", - "text": "prendre" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "compte" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "dimension" - }, - { - "pos": "ADJ_SG", - "text": "régionale" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "conflit" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_INV", - "text": "Afghanistan" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRON", - "text": "Il" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "PC", - "text": "y" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "issue" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_INV", - "text": "Afghanistan" - }, - { - "pos": "PREP", - "text": "sans" - }, - { - "pos": "VERB_INF", - "text": "prendre" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "compte" - }, - { - "pos": "DET_PL", - "text": "tous" - }, - { - "pos": "PRON", - "text": "ceux" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VAUX_P3PL", - "text": "ont" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "intérêt" - }, - { - "pos": "ADJ_SG", - "text": "stratégique" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "région" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "tous" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "acteurs" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PC", - "text": "y" - }, - { - "pos": "VERB_P1P2", - "text": "compris" - }, - { - "pos": "PRON", - "text": "ceux" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "VAUX_P3PL", - "text": "ont" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "frontière" - }, - { - "pos": "ADJ_SG", - "text": "commune" - }, - { - "pos": "PREP", - "text": "avec" - }, - { - "pos": "DET_SG", - "text": "ce" - }, - { - "pos": "NOUN_INV", - "text": "pays" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_P3SG", - "text": "dit" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "VERB_PRP", - "text": "mentionnant" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Inde" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_INV", - "text": "Russie" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_INV", - "text": "Turquie" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Arabie" - }, - { - "pos": "ADJ_SG", - "text": "saoudite" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "Emirats" - }, - { - "pos": "ADJ_PL", - "text": "arabes" - }, - { - "pos": "NOUN_PL", - "text": "unis" - }, - { - "pos": "SENT", - "text": "." - } - ], - "requestId": "128a54c2-5721-4313-9583-f3d8ec527182", - "timers": { - "rblJe": 2, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-morphology_complete.status b/api/src/test/mock-data/response/fra-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-sentiment.json b/api/src/test/mock-data/response/fra-sentence-sentiment.json deleted file mode 100644 index 282e9e4362..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "French is not supported by Rosette Sentiment Analyzer", - "requestId": "f9c728f7-24d7-4cdf-ba62-65f75fa890e8" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-sentence-sentiment.status b/api/src/test/mock-data/response/fra-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/fra-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-url-categories.json b/api/src/test/mock-data/response/fra-url-categories.json index b9a0667be6..21b78d9f93 100644 --- a/api/src/test/mock-data/response/fra-url-categories.json +++ b/api/src/test/mock-data/response/fra-url-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "French is not supported by Rosette Categorizer", - "requestId": "9ed4ec63-536a-465a-b6cc-0f37fe5a9ca5" + "message": "FRENCH is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-url-entities.json b/api/src/test/mock-data/response/fra-url-entities.json index 47a4e39a24..bd117b9bbd 100644 --- a/api/src/test/mock-data/response/fra-url-entities.json +++ b/api/src/test/mock-data/response/fra-url-entities.json @@ -1,372 +1,165 @@ { "entities": [ { - "confidence": 0.02106780807177226, "count": 6, - "indocChainId": 0, - "mention": "David Cameron", - "normalized": "David Cameron", - "type": "PERSON" - }, - { - "confidence": 0.012439978122711182, - "count": 5, - "indocChainId": 14, - "mention": "SNP", - "normalized": "SNP", - "type": "ORGANIZATION" - }, - { - "confidence": 0.013739681243896485, - "count": 5, - "indocChainId": 18, - "mention": "Ecosse", - "normalized": "Ecosse", + "indocChainId": 1, + "mention": "France", + "normalized": "France", "type": "LOCATION" }, { - "confidence": 0.016117572784423828, "count": 3, - "indocChainId": 12, - "mention": "démocrates", - "normalized": "démocrates", + "indocChainId": 4, + "mention": "Mars", + "normalized": "Mars", "type": "ORGANIZATION" }, { - "confidence": 0.015858054161071777, "count": 3, - "indocChainId": 16, - "mention": "Ukip", - "normalized": "Ukip", - "type": "ORGANIZATION" - }, - { - "confidence": 0.008270978927612305, - "count": 3, - "indocChainId": 17, - "mention": "Labour", - "normalized": "Labour", - "type": "ORGANIZATION" - }, - { - "confidence": 0.02269589900970459, - "count": 2, - "indocChainId": 5, - "mention": "Royaume-Uni", - "normalized": "Royaume-Uni", + "indocChainId": 7, + "mention": "Pays-Bas", + "normalized": "Pays-Bas", "type": "LOCATION" }, { - "confidence": 0.021167248487472534, "count": 2, - "indocChainId": 6, - "mention": "Union européenne", - "normalized": "Union européenne", + "indocChainId": 0, + "mention": "Europe", + "normalized": "Europe", "type": "LOCATION" }, { - "confidence": 0.014843016862869263, - "count": 2, - "indocChainId": 37, - "mention": "député", - "normalized": "député", - "type": "TITLE" - }, - { - "confidence": 0.011724323034286499, "count": 2, - "indocChainId": 48, - "mention": "Bourse de Londres", - "normalized": "Bourse de Londres", + "indocChainId": 3, + "mention": "Snickers", + "normalized": "Snickers", "type": "ORGANIZATION" }, { - "confidence": 0.0036743879318237305, - "count": 1, - "indocChainId": 0, - "mention": "David Cameron\nChallenges", - "normalized": "David Cameron Challenges", - "type": "PERSON" + "count": 2, + "indocChainId": 6, + "mention": "Allemagne", + "normalized": "Allemagne", + "type": "LOCATION" }, { - "confidence": 0.0036674141883850098, - "count": 1, - "indocChainId": 1, - "mention": "Europe", - "normalized": "Europe", + "count": 2, + "indocChainId": 16, + "mention": "Veghel", + "normalized": "Veghel", "type": "LOCATION" }, { - "confidence": 0.004899203777313232, "count": 1, "indocChainId": 8, - "mention": "Kirsty Wigglesworth", - "normalized": "Kirsty Wigglesworth", - "type": "PERSON" + "mention": "Royaume-Uni", + "normalized": "Royaume-Uni", + "type": "LOCATION" }, { - "confidence": 0.002910017967224121, "count": 1, "indocChainId": 9, - "mention": "AP", - "normalized": "AP", - "type": "ORGANIZATION" + "mention": "Belgique", + "normalized": "Belgique", + "type": "LOCATION" }, { - "confidence": 0.009074151515960693, "count": 1, "indocChainId": 10, - "mention": "Elizabeth II", - "normalized": "Elizabeth II", - "type": "PERSON" + "mention": "Italie", + "normalized": "Italie", + "type": "LOCATION" }, { - "confidence": 0.00494539737701416, "count": 1, "indocChainId": 11, - "mention": "Buckingham", - "normalized": "Buckingham", + "mention": "Espagne", + "normalized": "Espagne", "type": "LOCATION" }, { - "confidence": 0.006138741970062256, "count": 1, - "indocChainId": 13, - "mention": "députés", - "normalized": "députés", - "type": "TITLE" - }, - { - "confidence": 0.014360666275024414, - "count": 1, - "indocChainId": 20, - "mention": "Nigel Farage", - "normalized": "Nigel Farage", - "type": "PERSON" + "indocChainId": 12, + "mention": "AFP Eline Bijveld", + "normalized": "AFP Eline Bijveld", + "type": "ORGANIZATION" }, { - "confidence": 0.014366745948791504, "count": 1, "indocChainId": 21, - "mention": "chef", - "normalized": "chef", - "type": "TITLE" - }, - { - "confidence": 0.0030326247215270996, - "count": 1, - "indocChainId": 23, - "mention": "South Thanet", - "normalized": "South Thanet", + "mention": "Rhin", + "normalized": "Rhin", "type": "LOCATION" }, { - "confidence": 0.01049792766571045, "count": 1, - "indocChainId": 25, - "mention": "démocrate", - "normalized": "démocrate", + "indocChainId": 22, + "mention": "Uncle Ben's", + "normalized": "Uncle Ben's", "type": "ORGANIZATION" }, { - "confidence": 0.021206259727478027, - "count": 1, - "indocChainId": 26, - "mention": "Nick Clegg", - "normalized": "Nick Clegg", - "type": "PERSON" - }, - { - "confidence": 0.004912674427032471, - "count": 1, - "indocChainId": 27, - "mention": "Miliband", - "normalized": "Miliband", - "type": "PERSON" - }, - { - "confidence": 0.0247611403465271, - "count": 1, - "indocChainId": 27, - "mention": "Ed Miliband", - "normalized": "Ed Miliband", - "type": "PERSON" - }, - { - "confidence": 0.032201409339904785, "count": 1, - "indocChainId": 32, - "mention": "Chambre des Communes", - "normalized": "Chambre des Communes", + "indocChainId": 23, + "mention": "Kraft Foods", + "normalized": "Kraft Foods", "type": "ORGANIZATION" }, { - "confidence": 0.03113532066345215, "count": 1, - "indocChainId": 33, - "mention": "Alex Salmond", - "normalized": "Alex Salmond", - "type": "PERSON" - }, - { - "confidence": 0.009601056575775146, - "count": 1, - "indocChainId": 35, - "mention": "Mhairi Black", - "normalized": "Mhairi Black", - "type": "PERSON" - }, - { - "confidence": 0.008572161197662354, - "count": 1, - "indocChainId": 36, - "mention": "Westminster", - "normalized": "Westminster", - "type": "LOCATION" - }, - { - "confidence": 0.00962144136428833, - "count": 1, - "indocChainId": 38, - "mention": "Labour Douglas Alexander", - "normalized": "Labour Douglas Alexander", + "indocChainId": 24, + "mention": "Nestlé", + "normalized": "Nestlé", "type": "ORGANIZATION" }, { - "confidence": 0.011308491230010986, - "count": 1, - "indocChainId": 39, - "mention": "Ed Balls", - "normalized": "Ed Balls", - "type": "PERSON" - }, - { - "confidence": 0.0160825252532959, - "count": 1, - "indocChainId": 41, - "mention": "Jim Murphy", - "normalized": "Jim Murphy", - "type": "PERSON" - }, - { - "confidence": 0.002979457378387451, "count": 1, - "indocChainId": 44, - "mention": "Vince Cable", - "normalized": "Vince Cable", - "type": "PERSON" - }, - { - "confidence": 0.008275032043457031, - "count": 1, - "indocChainId": 45, - "mention": "ministre", - "normalized": "ministre", - "type": "TITLE" - }, - { - "confidence": 0.011619985103607178, - "count": 1, - "indocChainId": 50, - "mention": "UE", - "normalized": "UE", + "indocChainId": 28, + "mention": "Haguenau", + "normalized": "Haguenau", "type": "LOCATION" }, { - "confidence": 0.022272944450378418, "count": 1, - "indocChainId": 54, - "mention": "Glasgow", - "normalized": "Glasgow", + "indocChainId": 29, + "mention": "Alsace", + "normalized": "Alsace", "type": "LOCATION" }, { - "confidence": 0.003254711627960205, "count": 1, - "indocChainId": 55, - "mention": "Edimbourg", - "normalized": "Edimbourg", + "indocChainId": 30, + "mention": "Viersen", + "normalized": "Viersen", "type": "LOCATION" }, { - "confidence": 0.019964516162872314, "count": 1, - "indocChainId": 57, - "mention": "Patrick Dunleavy", - "normalized": "Patrick Dunleavy", - "type": "PERSON" + "indocChainId": 32, + "mention": "Pologne", + "normalized": "Pologne", + "type": "LOCATION" }, { - "confidence": 0.01763540506362915, "count": 1, - "indocChainId": 58, - "mention": "London School of Economics", - "normalized": "London School of Economics", + "indocChainId": 33, + "mention": "Ikea", + "normalized": "Ikea", "type": "ORGANIZATION" }, { - "confidence": 0.008434712886810303, "count": 1, - "indocChainId": 58, - "mention": "LSE", - "normalized": "LSE", + "indocChainId": 34, + "mention": "McDonald's", + "normalized": "McDonald's", "type": "ORGANIZATION" }, { - "confidence": 0.025185048580169678, "count": 1, - "indocChainId": 60, - "mention": "Premier ministre", - "normalized": "Premier ministre", - "type": "TITLE" - }, - { - "confidence": 0.0143471360206604, - "count": 1, - "indocChainId": 61, - "mention": "maire", - "normalized": "maire", - "type": "TITLE" - }, - { - "confidence": 0.009080350399017334, - "count": 1, - "indocChainId": 62, - "mention": "Londres", - "normalized": "Londres", - "type": "LOCATION" - }, - { - "confidence": 0.015038907527923584, - "count": 1, - "indocChainId": 63, - "mention": "Boris Johnson", - "normalized": "Boris Johnson", - "type": "PERSON" - }, - { - "confidence": 0.009148657321929932, - "count": 1, - "indocChainId": 65, - "mention": "Uxbridge", - "normalized": "Uxbridge", + "indocChainId": 35, + "mention": "Japon", + "normalized": "Japon", "type": "LOCATION" - }, - { - "confidence": 0.1097421646118164, - "count": 1, - "indocChainId": 67, - "mention": "AFP", - "normalized": "AFP", - "type": "ORGANIZATION" } - ], - "requestId": "aa75dc98-1189-4f37-a623-8a804d788ee7", - "timers": { - "rblJe": 4, - "rexJe": 231, - "rliJe": 5, - "textExtractor": 22, - "urlContentDownloader": 74 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/fra-url-entities_linked.json b/api/src/test/mock-data/response/fra-url-entities_linked.json index 97a11927ae..188230cf43 100644 --- a/api/src/test/mock-data/response/fra-url-entities_linked.json +++ b/api/src/test/mock-data/response/fra-url-entities_linked.json @@ -1,229 +1,124 @@ { "entities": [ { - "confidence": 0.487369937159575, - "entityId": "Q192", + "confidence": 0.6278290704480178, + "entityId": "Q46", "indocChainId": 0, - "mention": "David Cameron Challenges" + "mention": "Europe" }, { - "confidence": 0.5411345883548877, - "entityId": "Q46", + "confidence": 0.26797922005208435, + "entityId": "Q142", "indocChainId": 1, - "mention": "Europe" + "mention": "France" }, { - "confidence": 0.7207765469292666, - "entityId": "Q145", - "indocChainId": 5, - "mention": "Royaume-Uni" + "confidence": 0.28586766300142136, + "entityId": "Q183", + "indocChainId": 6, + "mention": "Allemagne" }, { - "confidence": 0.26558639130170675, - "entityId": "Q458", - "indocChainId": 6, - "mention": "Union européenne" + "confidence": 0.7633181906636387, + "entityId": "Q55", + "indocChainId": 7, + "mention": "Pays-Bas" }, { - "confidence": 0.8390447767541483, - "entityId": "NEW-CLUSTER", + "confidence": 0.6380378704667378, + "entityId": "Q145", "indocChainId": 8, - "mention": "Kirsty Wigglesworth" + "mention": "Royaume-Uni" }, { - "confidence": 0.21607979033495858, - "entityId": "Q40469", + "confidence": 0.5636089252390188, + "entityId": "Q31", "indocChainId": 9, - "mention": "AP" + "mention": "Belgique" }, { - "confidence": 0.8751098420612002, - "entityId": "Q9682", + "confidence": 0.8353182234498455, + "entityId": "Q38", "indocChainId": 10, - "mention": "Elizabeth II" + "mention": "Italie" }, { - "confidence": 0.08751416407915574, - "entityId": "Q23229", + "confidence": 0.5245676968960624, + "entityId": "Q29", "indocChainId": 11, - "mention": "Buckingham" - }, - { - "confidence": 0.09432890294643219, - "entityId": "Q1185830", - "indocChainId": 12, - "mention": "démocrates" + "mention": "Espagne" }, { - "confidence": 0.5410398782455267, - "entityId": "Q10658", - "indocChainId": 14, - "mention": "SNP" - }, - { - "confidence": 0.7840718470407755, - "entityId": "Q10647", + "confidence": 0.6719866799760033, + "entityId": "Q9874", "indocChainId": 16, - "mention": "Ukip" + "mention": "Veghel" }, { - "confidence": 0.35499804903332943, - "entityId": "Q9630", - "indocChainId": 17, - "mention": "Labour" + "confidence": 0.4252201450000884, + "entityId": "Q584", + "indocChainId": 21, + "mention": "Rhin" }, { - "confidence": 0.6897989554049982, - "entityId": "Q22", - "indocChainId": 18, - "mention": "Ecosse" + "confidence": 0.748254439597306, + "entityId": "Q566095", + "indocChainId": 22, + "mention": "Uncle Ben's" }, { - "confidence": 0.6382972614940312, - "entityId": "Q318471", - "indocChainId": 20, - "mention": "Nigel Farage" + "confidence": 0.6998173498118883, + "entityId": "Q233658", + "indocChainId": 23, + "mention": "Kraft Foods" }, { - "confidence": 0.6252531222570918, - "entityId": "Q988835", - "indocChainId": 23, - "mention": "South Thanet" + "confidence": 0.9312790176097803, + "entityId": "Q160746", + "indocChainId": 24, + "mention": "Nestlé" }, { - "confidence": 0.42886951782887706, - "entityId": "NEW-CLUSTER", - "indocChainId": 25, - "mention": "démocrate" + "confidence": 0.5747434482807012, + "entityId": "Q22730", + "indocChainId": 28, + "mention": "Haguenau" }, { - "confidence": 0.6586169984625931, - "entityId": "Q189947", - "indocChainId": 26, - "mention": "Nick Clegg" + "confidence": 0.4692822760158057, + "entityId": "Q1142", + "indocChainId": 29, + "mention": "Alsace" }, { - "confidence": 0.6859030458013254, - "entityId": "Q216594", - "indocChainId": 27, - "mention": "Ed Miliband" + "confidence": 0.36123963965357503, + "entityId": "Q3902", + "indocChainId": 30, + "mention": "Viersen" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.5657148609067122, + "entityId": "Q36", "indocChainId": 32, - "mention": "Chambre des Communes" + "mention": "Pologne" }, { - "confidence": 0.6711155231554004, - "entityId": "Q10652", + "confidence": 0.8666684622903684, + "entityId": "Q54078", "indocChainId": 33, - "mention": "Alex Salmond" - }, - { - "confidence": 0.14035519084151224, - "entityId": "NEW-CLUSTER", - "indocChainId": 35, - "mention": "Mhairi Black" - }, - { - "confidence": 0.06297074414148623, - "entityId": "Q5933", - "indocChainId": 36, - "mention": "Westminster" - }, - { - "confidence": 0.3147751315322906, - "entityId": "NEW-CLUSTER", - "indocChainId": 38, - "mention": "Labour Douglas Alexander" + "mention": "Ikea" }, { - "confidence": 0.7066427879428141, - "entityId": "Q260464", - "indocChainId": 39, - "mention": "Ed Balls" + "confidence": 0.9953937151298564, + "entityId": "Q38076", + "indocChainId": 34, + "mention": "McDonald's" }, { - "confidence": 0.326144884684962, - "entityId": "Q333702", - "indocChainId": 41, - "mention": "Jim Murphy" - }, - { - "confidence": 0.6630758149696234, - "entityId": "Q244312", - "indocChainId": 44, - "mention": "Vince Cable" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 48, - "mention": "Bourse de Londres" - }, - { - "confidence": 0.5026706356051871, - "entityId": "Q458", - "indocChainId": 50, - "mention": "UE" - }, - { - "confidence": 0.08400702472233276, - "entityId": "Q4093", - "indocChainId": 54, - "mention": "Glasgow" - }, - { - "confidence": 0.6032523276618472, - "entityId": "NEW-CLUSTER", - "indocChainId": 55, - "mention": "Edimbourg" - }, - { - "confidence": 0.5800514092105746, - "entityId": "Q7146420", - "indocChainId": 57, - "mention": "Patrick Dunleavy" - }, - { - "confidence": 0.7817361386181069, - "entityId": "Q174570", - "indocChainId": 58, - "mention": "London School of Economics" - }, - { - "confidence": 0.8823916944348363, - "entityId": "Q84", - "indocChainId": 62, - "mention": "Londres" - }, - { - "confidence": 0.5246796846919077, - "entityId": "Q180589", - "indocChainId": 63, - "mention": "Boris Johnson" - }, - { - "confidence": 0.17523536683256627, - "entityId": "Q3552816", - "indocChainId": 65, - "mention": "Uxbridge" - }, - { - "confidence": 0.23969179335946114, - "entityId": "Q40464", - "indocChainId": 67, - "mention": "AFP" + "confidence": 0.7216227779147698, + "entityId": "Q17", + "indocChainId": 35, + "mention": "Japon" } - ], - "requestId": "6954f9b9-f2c5-421b-b3ee-741cd09e8386", - "timers": { - "rblJe": 4, - "res": 1143, - "rexJe": 35, - "rliJe": 5, - "textExtractor": 33, - "urlContentDownloader": 83 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-url-language.json b/api/src/test/mock-data/response/fra-url-language.json index 59a29cc13a..5539fa8dc9 100644 --- a/api/src/test/mock-data/response/fra-url-language.json +++ b/api/src/test/mock-data/response/fra-url-language.json @@ -1,30 +1,24 @@ { "languageDetections": [ { - "confidence": 0.0376633577964306, + "confidence": 0.034311066676906976, "language": "fra" }, { - "confidence": 0.011350827336480962, + "confidence": 0.011794604796825148, "language": "cat" }, { - "confidence": 0.01042540417014437, + "confidence": 0.010436044556915491, "language": "spa" }, { - "confidence": 0.00913729347637604, + "confidence": 0.00834383682347728, "language": "ron" }, { - "confidence": 0.007858062386031262, + "confidence": 0.008255285785545685, "language": "por" } - ], - "requestId": "cdd7a5c2-1cec-4391-808e-2917851016f4", - "timers": { - "rliJe": 5, - "textExtractor": 33, - "urlContentDownloader": 342 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-url-morphology_complete.json b/api/src/test/mock-data/response/fra-url-morphology_complete.json index 7a0502608e..083cb72209 100644 --- a/api/src/test/mock-data/response/fra-url-morphology_complete.json +++ b/api/src/test/mock-data/response/fra-url-morphology_complete.json @@ -1,8287 +1,3527 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "élection", - "text": "Elections" - }, - { - "lemma": "britannique", - "text": "britanniques" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "triomphe", - "text": "triomphe" - }, - { - "lemma": "éclatant", - "text": "éclatant" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "challenge", - "text": "Challenges" - }, - { - "lemma": ">", - "text": ">" - }, - { - "lemma": "Europe", - "text": "Europe" - }, - { - "lemma": ">", - "text": ">" - }, - { - "lemma": "élection", - "text": "Elections" - }, - { - "lemma": "britannique", - "text": "britanniques" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "triomphe", - "text": "triomphe" - }, - { - "lemma": "éclatant", - "text": "éclatant" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "élection", - "text": "Elections" - }, - { - "lemma": "britannique", - "text": "britanniques" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "triomphe", - "text": "triomphe" - }, - { - "lemma": "éclatant", - "text": "éclatant" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "voir", - "text": "Voir" - }, - { - "lemma": "tout", - "text": "tous" - }, - { - "lemma": "son", - "text": "ses" - }, - { - "lemma": "article", - "text": "articles" - }, - { - "lemma": "publier", - "text": "Publié" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "08", - "text": "08" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "05", - "text": "05" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "2015", - "text": "2015" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "17h57", - "text": "17h57" - }, - { - "lemma": "mettre", - "text": "Mis" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "jour", - "text": "jour" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "19h13", - "text": "19h13" - }, - { - "lemma": "à", - "text": "A" - }, - { - "lemma": "+", - "text": "+" - }, - { - "lemma": "à", - "text": "A" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "brillamment", - "text": "brillamment" - }, - { - "lemma": "remporter", - "text": "remporté" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "législatives", - "text": "législatives" - }, - { - "lemma": "britannique", - "text": "britanniques" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "faire", - "text": "font" - }, - { - "lemma": "planer", - "text": "planer" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "menace", - "text": "menace" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "sortie", - "text": "sortie" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "royaume", - "text": "Royaume" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "uni", - "text": "Uni" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "union", - "text": "Union" - }, - { - "lemma": "européen", - "text": "européenne" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "consacrer", - "text": "consacrent" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "succès", - "text": "succès" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "nationaliste", - "text": "nationalistes" - }, - { - "lemma": "écossais", - "text": "écossais" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "élection", - "text": "élection" - }, - { - "lemma": "mai", - "text": "mai" - }, - { - "lemma": "2015", - "text": "2015" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "Kirsty", - "text": "Kirsty" - }, - { - "lemma": "Wigglesworth", - "text": "Wigglesworth" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "AP", - "text": "AP" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "SIPA", - "text": "SIPA" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "conforter", - "text": "Conforté" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "résultat", - "text": "résultat" - }, - { - "lemma": "inespéré", - "text": "inespéré" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "leader", - "text": "leader" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "tory", - "text": "Tories" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "rendre", - "text": "rendu" - }, - { - "lemma": "visite", - "text": "visite" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "tout", - "text": "tout" - }, - { - "lemma": "début", - "text": "début" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "après", - "text": "après" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "midi", - "text": "midi" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "reine", - "text": "reine" - }, - { - "lemma": "Elizabeth", - "text": "Elizabeth" - }, - { - "lemma": "II", - "text": "II" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "palais", - "text": "palais" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Buckingham", - "text": "Buckingham" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "afin", - "text": "afin" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "recueillir", - "text": "recueillir" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "assentiment", - "text": "assentiment" - }, - { - "lemma": "formel", - "text": "formel" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "vue", - "text": "vue" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "former", - "text": "former" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "prochain", - "text": "prochain" - }, - { - "lemma": "gouvernement", - "text": "gouvernement" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "je", - "text": "Je" - }, - { - "lemma": "aller", - "text": "vais" - }, - { - "lemma": "maintenant", - "text": "maintenant" - }, - { - "lemma": "former", - "text": "former" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "gouvernement", - "text": "gouvernement" - }, - { - "lemma": "conservateur", - "text": "conservateur" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "majorité", - "text": "majorité" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "t", - "text": "t" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "annoncer", - "text": "annoncé" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "premier", - "text": "premier" - }, - { - "lemma": "jour", - "text": "jour" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "second", - "text": "second" - }, - { - "lemma": "mandat", - "text": "mandat" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "en", - "text": "En" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "tory", - "text": "Tories" - }, - { - "lemma": "avoir", - "text": "avaient" - }, - { - "lemma": "avoir", - "text": "eu" - }, - { - "lemma": "besoin", - "text": "besoin" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "libéral", - "text": "libéraux" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "démocrate", - "text": "démocrates" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "gouverner", - "text": "gouverner" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "un", - "text": "Un" - }, - { - "lemma": "gouvernement", - "text": "gouvernement" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "majorité", - "text": "majorité" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "Les" - }, - { - "lemma": "résultat", - "text": "résultats" - }, - { - "lemma": "définitif", - "text": "définitifs" - }, - { - "lemma": "après", - "text": "après" - }, - { - "lemma": "dépouillement", - "text": "dépouillement" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "650", - "text": "650" - }, - { - "lemma": "circonscription", - "text": "circonscriptions" - }, - { - "lemma": "allouer", - "text": "allouent" - }, - { - "lemma": "331", - "text": "331" - }, - { - "lemma": "député", - "text": "députés" - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "conservateur", - "text": "conservateurs" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "+", - "text": "+" - }, - { - "lemma": "24", - "text": "24" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "232", - "text": "232" - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "travailliste", - "text": "travaillistes" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "26", - "text": "26" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "56", - "text": "56" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "SNP", - "text": "SNP" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "+", - "text": "+" - }, - { - "lemma": "50", - "text": "50" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "libéral", - "text": "libéraux" - }, - { - "lemma": "démocrate", - "text": "démocrates" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "49", - "text": "49" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "1", - "text": "1" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Ukip", - "text": "Ukip" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "1", - "text": "1" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "labour", - "text": "Labour" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "être", - "text": "été" - }, - { - "lemma": "laminer", - "text": "laminé" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "Écosse", - "text": "Ecosse" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "où", - "text": "où" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "indépendantiste", - "text": "indépendantistes" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "SNP", - "text": "SNP" - }, - { - "lemma": "avoir", - "text": "ont" - }, - { - "lemma": "rafler", - "text": "raflé" - }, - { - "lemma": "56", - "text": "56" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "59", - "text": "59" - }, - { - "lemma": "siège", - "text": "sièges" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "jeu", - "text": "jeu" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "région", - "text": "région" - }, - { - "lemma": "autonome", - "text": "autonome" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "jusqu'", - "text": "jusqu'" - }, - { - "lemma": "ici", - "text": "ici" - }, - { - "lemma": "considérer", - "text": "considérée" - }, - { - "lemma": "comme", - "text": "comme" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "fief", - "text": "fief" - }, - { - "lemma": "travailliste", - "text": "travailliste" - }, - { - "lemma": "inexpugnable", - "text": "inexpugnable" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "nombre", - "text": "Nombre" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "analyste", - "text": "analystes" - }, - { - "lemma": "avoir", - "text": "avaient" - }, - { - "lemma": "prédire", - "text": "prédit" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "bain", - "text": "bain" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "sang", - "text": "sang" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "politique", - "text": "politique" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "il", - "text": "ils" - }, - { - "lemma": "avoir", - "text": "avaient" - }, - { - "lemma": "raison", - "text": "raison" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "ce", - "text": "ce" - }, - { - "lemma": "point", - "text": "point" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "bain", - "text": "Bain" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "sang", - "text": "sang" - }, - { - "lemma": "politique", - "text": "politique" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Nigel", - "text": "Nigel" - }, - { - "lemma": "Farage", - "text": "Farage" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "chef", - "text": "chef" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "file", - "text": "file" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "parti", - "text": "parti" - }, - { - "lemma": "europhobere", - "text": "europhobe" - }, - { - "lemma": "Ukip", - "text": "Ukip" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "battre", - "text": "battu" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "South", - "text": "South" - }, - { - "lemma": "Thanet", - "text": "Thanet" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "être", - "text": "été" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "premier", - "text": "premier" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "démissionner", - "text": "démissionner" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "mettre", - "text": "mettant" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "exécution", - "text": "exécution" - }, - { - "lemma": "son", - "text": "sa" - }, - { - "lemma": "promesse", - "text": "promesse" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "tirer", - "text": "tirer" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "rideau", - "text": "rideau" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "cas", - "text": "cas" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "échec", - "text": "échec" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "son", - "text": "Son" - }, - { - "lemma": "départ", - "text": "départ" - }, - { - "lemma": "porter", - "text": "porte" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "coup", - "text": "coup" - }, - { - "lemma": "extrêmement", - "text": "extrêmement" - }, - { - "lemma": "sévère", - "text": "sévère" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "parti", - "text": "parti" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "pourtant", - "text": "pourtant" - }, - { - "lemma": "créditer", - "text": "crédité" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "score", - "text": "score" - }, - { - "lemma": "flatteur", - "text": "flatteur" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "près", - "text": "près" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "13", - "text": "13" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "voix", - "text": "voix" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "L'" - }, - { - "lemma": "homme", - "text": "homme" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "orchestre", - "text": "orchestre" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Ukip", - "text": "Ukip" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "toutefois", - "text": "toutefois" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": "exclure", - "text": "exclu" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "comere", - "text": "come" - }, - { - "lemma": "back", - "text": "back" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "peu", - "text": "Peu" - }, - { - "lemma": "après", - "text": "après" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "leader", - "text": "leader" - }, - { - "lemma": "libéral", - "text": "libéral" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "démocrate", - "text": "démocrate" - }, - { - "lemma": "Nick", - "text": "Nick" - }, - { - "lemma": "Clegg", - "text": "Clegg" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "48", - "text": "48" - }, - { - "lemma": "an", - "text": "ans" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "jeter", - "text": "jeté" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "éponge", - "text": "éponge" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "sortir", - "text": "sortir" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "nuit", - "text": "nuit" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "dévastateur", - "text": "dévastatrice" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "selon", - "text": "selon" - }, - { - "lemma": "son", - "text": "sa" - }, - { - "lemma": "propre", - "text": "propre" - }, - { - "lemma": "expression", - "text": "expression" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Ed", - "text": "Ed" - }, - { - "lemma": "Miliband", - "text": "Miliband" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "45", - "text": "45" - }, - { - "lemma": "an", - "text": "ans" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "patron", - "text": "patron" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "travailliste", - "text": "travaillistes" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "suivre", - "text": "suivi" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "même", - "text": "même" - }, - { - "lemma": "chemin", - "text": "chemin" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "endosser", - "text": "endossant" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "entier", - "text": "entière" - }, - { - "lemma": "responsabilité", - "text": "responsabilité" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "défaite", - "text": "défaite" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "tsunami", - "text": "Tsunami" - }, - { - "lemma": "nationaliste", - "text": "nationaliste" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Écosse", - "text": "Ecosse" - }, - { - "lemma": "le", - "text": "Les" - }, - { - "lemma": "autre", - "text": "autres" - }, - { - "lemma": "grand", - "text": "grands" - }, - { - "lemma": "perdant", - "text": "perdants" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "scrutin", - "text": "scrutin" - }, - { - "lemma": "être", - "text": "sont" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "institut", - "text": "instituts" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "sondage", - "text": "sondages" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "ne", - "text": "n'" - }, - { - "lemma": "avoir", - "text": "ont" - }, - { - "lemma": "cesser", - "text": "cessé" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "prédire", - "text": "prédire" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "résultat", - "text": "résultat" - }, - { - "lemma": "ultra", - "text": "ultra" - }, - { - "lemma": "serrer", - "text": "serré" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "renvoyer", - "text": "renvoyant" - }, - { - "lemma": "dos", - "text": "dos" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "dos", - "text": "dos" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "deux", - "text": "deux" - }, - { - "lemma": "parti", - "text": "partis" - }, - { - "lemma": "traditionnel", - "text": "traditionnels" - }, - { - "lemma": "frapper", - "text": "frappés" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "déclin", - "text": "déclin" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "paysage", - "text": "paysage" - }, - { - "lemma": "caractériser", - "text": "caractérisé" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "multipartisme", - "text": "multipartisme" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "labour", - "text": "Labour" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "abord", - "text": "abord" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "avant", - "text": "avant" - }, - { - "lemma": "tout", - "text": "tout" - }, - { - "lemma": "victime", - "text": "victime" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "tsunami", - "text": "tsunami" - }, - { - "lemma": "nationaliste", - "text": "nationaliste" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "déferler", - "text": "déferlé" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "Écosse", - "text": "Ecosse" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "SNP", - "text": "SNP" - }, - { - "lemma": "décupler", - "text": "décuplant" - }, - { - "lemma": "presque", - "text": "presque" - }, - { - "lemma": "son", - "text": "sa" - }, - { - "lemma": "représentation", - "text": "représentation" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "chambre", - "text": "Chambre" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "commune", - "text": "Communes" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "lion", - "text": "lion" - }, - { - "lemma": "écossais", - "text": "écossais" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "rugir", - "text": "rugi" - }, - { - "lemma": "ce", - "text": "cette" - }, - { - "lemma": "nuit", - "text": "nuit" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "féliciter", - "text": "félicité" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "ancien", - "text": "ancien" - }, - { - "lemma": "leader", - "text": "leader" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Alex", - "text": "Alex" - }, - { - "lemma": "Salmond", - "text": "Salmond" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "triomphe", - "text": "triomphe" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "SNP", - "text": "SNP" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "symboliser", - "text": "symbolisé" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "élection", - "text": "élection" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Mhairi", - "text": "Mhairi" - }, - { - "lemma": "black", - "text": "Black" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "étudiant", - "text": "étudiante" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "20", - "text": "20" - }, - { - "lemma": "an", - "text": "ans" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "devenir", - "text": "devient" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "plus", - "text": "plus" - }, - { - "lemma": "jeune", - "text": "jeune" - }, - { - "lemma": "députer", - "text": "députée" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Westminster", - "text": "Westminster" - }, - { - "lemma": "depuis", - "text": "depuis" - }, - { - "lemma": "1667", - "text": "1667" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "dépens", - "text": "dépens" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "député", - "text": "député" - }, - { - "lemma": "sortant", - "text": "sortant" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "cadre", - "text": "cadre" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "labour", - "text": "Labour" - }, - { - "lemma": "Douglas", - "text": "Douglas" - }, - { - "lemma": "Alexander", - "text": "Alexander" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "tentation", - "text": "tentation" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Brexit", - "text": "Brexit" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Ed", - "text": "Ed" - }, - { - "lemma": "Balls", - "text": "Balls" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "bras", - "text": "bras" - }, - { - "lemma": "droit", - "text": "droit" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Miliband", - "text": "Miliband" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Jim", - "text": "Jim" - }, - { - "lemma": "Murphy", - "text": "Murphy" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "patron", - "text": "patron" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "labour", - "text": "Labour" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "Écosse", - "text": "Ecosse" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "Vince", - "text": "Vince" - }, - { - "lemma": "Câble", - "text": "Cable" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "ancien", - "text": "ancien" - }, - { - "lemma": "ministre", - "text": "ministre" - }, - { - "lemma": "lib", - "text": "lib" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "dem", - "text": "dem" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "commerce", - "text": "Commerce" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "faire", - "text": "font" - }, - { - "lemma": "partie", - "text": "partie" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "autre", - "text": "autres" - }, - { - "lemma": "victime", - "text": "victimes" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "marque", - "text": "marque" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "scrutin", - "text": "scrutin" - }, - { - "lemma": "assassin", - "text": "assassin" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "avoir", - "text": "avait" - }, - { - "lemma": "être", - "text": "été" - }, - { - "lemma": "critiquer", - "text": "critiqué" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "manque", - "text": "manque" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "engagement", - "text": "engagement" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "début", - "text": "début" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "campagne", - "text": "campagne" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "à", - "text": "A" - }, - { - "lemma": "peine", - "text": "peine" - }, - { - "lemma": "réélire", - "text": "réélu" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "réitérer", - "text": "réitéré" - }, - { - "lemma": "son", - "text": "sa" - }, - { - "lemma": "principal", - "text": "principale" - }, - { - "lemma": "promesse", - "text": "promesse" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "organisation", - "text": "organisation" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "ici", - "text": "ici" - }, - { - "lemma": "2017", - "text": "2017" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "référendum", - "text": "référendum" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "maintien", - "text": "maintien" - }, - { - "lemma": "ou", - "text": "ou" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "pays", - "text": "pays" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "union", - "text": "Union" - }, - { - "lemma": "européen", - "text": "européenne" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "un", - "text": "Une" - }, - { - "lemma": "perspective", - "text": "perspective" - }, - { - "lemma": "qui", - "text": "qui" - }, - { - "lemma": "inquiéter", - "text": "inquiète" - }, - { - "lemma": "son", - "text": "ses" - }, - { - "lemma": "partenaire", - "text": "partenaires" - }, - { - "lemma": "européen", - "text": "européens" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "raison", - "text": "raison" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "possibilité", - "text": "possibilité" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "Brexit", - "text": "Brexit" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "acronyme", - "text": "acronyme" - }, - { - "lemma": "désigner", - "text": "désignant" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "sortie", - "text": "sortie" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "club", - "text": "club" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "28", - "text": "28" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "nouvelle", - "text": "nouvelle" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "victoire", - "text": "victoire" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "conservateur", - "text": "conservateurs" - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "traduire", - "text": "traduite" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "bond", - "text": "bond" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "livre", - "text": "livre" - }, - { - "lemma": "britannique", - "text": "britannique" - }, - { - "lemma": "face", - "text": "face" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "dollar", - "text": "dollar" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "euro", - "text": "euro" - }, - { - "lemma": "vendredi", - "text": "vendredi" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "marché", - "text": "marchés" - }, - { - "lemma": "asiatique", - "text": "asiatiques" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "bourse", - "text": "Bourse" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Londres", - "text": "Londres" - }, - { - "lemma": "évoluer", - "text": "évoluait" - }, - { - "lemma": "également", - "text": "également" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "hausser", - "text": "hausse" - }, - { - "lemma": "vendredi", - "text": "vendredi" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "malgré", - "text": "malgré" - }, - { - "lemma": "un", - "text": "des" - }, - { - "lemma": "incertitude", - "text": "incertitudes" - }, - { - "lemma": "européen", - "text": "européennes" - }, - { - "lemma": "potentiellement", - "text": "potentiellement" - }, - { - "lemma": "préjudiciable", - "text": "préjudiciables" - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "affaire", - "text": "affaires" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "La" - }, - { - "lemma": "bourse", - "text": "Bourse" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Londres", - "text": "Londres" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "diapason", - "text": "diapason" - }, - { - "lemma": "qui", - "text": "Qui" - }, - { - "lemma": "plus", - "text": "plus" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "éventuel", - "text": "éventuelle" - }, - { - "lemma": "sortie", - "text": "sortie" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "UE", - "text": "UE" - }, - { - "lemma": "pouvoir", - "text": "pourrait" - }, - { - "lemma": "avoir", - "text": "avoir" - }, - { - "lemma": "par", - "text": "par" - }, - { - "lemma": "contrecoup", - "text": "contrecoup" - }, - { - "lemma": "de le", - "text": "des" - }, - { - "lemma": "répercussion", - "text": "répercussions" - }, - { - "lemma": "profond", - "text": "profondes" - }, - { - "lemma": "sur", - "text": "sur" - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "maintien", - "text": "maintien" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "l", - "text": "l" - }, - { - "lemma": "'", - "text": "'" - }, - { - "lemma": "Écosse", - "text": "Ecosse" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "largement", - "text": "largement" - }, - { - "lemma": "pro", - "text": "pro" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "européen", - "text": "européenne" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "sein", - "text": "sein" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "royaume", - "text": "Royaume" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "uni", - "text": "Uni" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "tout", - "text": "Toute" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "journée", - "text": "journée" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "jeudi", - "text": "jeudi" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "militant", - "text": "militants" - }, - { - "lemma": "SNP", - "text": "SNP" - }, - { - "lemma": "sortir", - "text": "sortant" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "isoloir", - "text": "isoloir" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "Glasgow", - "text": "Glasgow" - }, - { - "lemma": "ou", - "text": "ou" - }, - { - "lemma": "Édimbourg", - "text": "Edimbourg" - }, - { - "lemma": "ne", - "text": "ne" - }, - { - "lemma": "faire", - "text": "faisaient" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": "mystère", - "text": "mystère" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "leur", - "text": "leur" - }, - { - "lemma": "volonté", - "text": "volonté" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "revanche", - "text": "revanche" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "il", - "text": "Ils" - }, - { - "lemma": "aspirer", - "text": "aspirent" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "effet", - "text": "effet" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "tenue", - "text": "tenue" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "nouveau", - "text": "nouveau" - }, - { - "lemma": "référendum", - "text": "référendum" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "indépendance", - "text": "indépendance" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "après", - "text": "après" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "premier", - "text": "premier" - }, - { - "lemma": "rendre", - "text": "rendez" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "vous", - "text": "vous" - }, - { - "lemma": "manquer", - "text": "manqué" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "septembre", - "text": "septembre" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "il", - "text": "Il" - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "agir", - "text": "agit" - }, - { - "lemma": "là", - "text": "là" - }, - { - "lemma": "de", - "text": "d'" - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "menace", - "text": "menace" - }, - { - "lemma": "non", - "text": "non" - }, - { - "lemma": "négligeable", - "text": "négligeable" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "même", - "text": "même" - }, - { - "lemma": "si", - "text": "si" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "sensiblement", - "text": "sensiblement" - }, - { - "lemma": "accroire", - "text": "accru" - }, - { - "lemma": "son", - "text": "sa" - }, - { - "lemma": "stature", - "text": "stature" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "selon", - "text": "selon" - }, - { - "lemma": "Patrick", - "text": "Patrick" - }, - { - "lemma": "Dunleavy", - "text": "Dunleavy" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "expert", - "text": "expert" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "London", - "text": "London" - }, - { - "lemma": "School", - "text": "School" - }, - { - "lemma": "of", - "text": "of" - }, - { - "lemma": "Economics", - "text": "Economics" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "LSE", - "text": "LSE" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "Le" - }, - { - "lemma": "plus", - "text": "plus" - }, - { - "lemma": "jeune", - "text": "jeune" - }, - { - "lemma": "premier", - "text": "Premier" - }, - { - "lemma": "ministre", - "text": "ministre" - }, - { - "lemma": "britannique", - "text": "britannique" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "deux", - "text": "deux" - }, - { - "lemma": "siècle", - "text": "siècles" - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "comporter", - "text": "comporté" - }, - { - "lemma": "bien", - "text": "bien" - }, - { - "lemma": "mieux", - "text": "mieux" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "prévoir", - "text": "prévu" - }, - { - "lemma": "dans", - "text": "dans" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "urne", - "text": "urnes" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "mais", - "text": "mais" - }, - { - "lemma": "pouvoir", - "text": "pourrait" - }, - { - "lemma": "avoir", - "text": "avoir" - }, - { - "lemma": "un", - "text": "des" - }, - { - "lemma": "difficulté", - "text": "difficultés" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "faire", - "text": "faire" - }, - { - "lemma": "quoi", - "text": "quoi" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "ce", - "text": "ce" - }, - { - "lemma": "être", - "text": "soit" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "radical", - "text": "radical" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "t", - "text": "t" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "ajouter", - "text": "ajouté" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "de", - "text": "De" - }, - { - "lemma": "nouveau", - "text": "nouveaux" - }, - { - "lemma": "ambitieux", - "text": "ambitieux" - }, - { - "lemma": "Cameron", - "text": "Cameron" - }, - { - "lemma": "devoir", - "text": "devra" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "faire", - "text": "fait" - }, - { - "lemma": "contenir", - "text": "contenir" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "grogne", - "text": "grogne" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "frange", - "text": "frange" - }, - { - "lemma": "eurosceptique", - "text": "eurosceptique" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "son", - "text": "son" - }, - { - "lemma": "parti", - "text": "parti" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "tenir", - "text": "tenir" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "distance", - "text": "distance" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "prétendant", - "text": "prétendants" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "son", - "text": "sa" - }, - { - "lemma": "succession", - "text": "succession" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "alors", - "text": "alors" - }, - { - "lemma": "que", - "text": "qu'" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "avoir", - "text": "a" - }, - { - "lemma": "annoncer", - "text": "annoncé" - }, - { - "lemma": "pendant", - "text": "pendant" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "campagne", - "text": "campagne" - }, - { - "lemma": "que", - "text": "qu'" - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "ne", - "text": "ne" - }, - { - "lemma": "briguer", - "text": "briguerait" - }, - { - "lemma": "pas", - "text": "pas" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "troisième", - "text": "troisième" - }, - { - "lemma": "mandat", - "text": "mandat" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "le", - "text": "L'" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "deux", - "text": "deux" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "le", - "text": "le" - }, - { - "lemma": "bouillir", - "text": "bouillant" - }, - { - "lemma": "maire", - "text": "maire" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Londres", - "text": "Londres" - }, - { - "lemma": "Boris", - "text": "Boris" - }, - { - "lemma": "Johnson", - "text": "Johnson" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "être", - "text": "est" - }, - { - "lemma": "faire", - "text": "fait" - }, - { - "lemma": "élire", - "text": "élire" - }, - { - "lemma": "député", - "text": "député" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "Uxbridge", - "text": "Uxbridge" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "un", - "text": "une" - }, - { - "lemma": "étape", - "text": "étape" - }, - { - "lemma": "essentiel", - "text": "essentielle" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "prétendre", - "text": "prétendre" - }, - { - "lemma": "à", - "text": "à" - }, - { - "lemma": "le", - "text": "la" - }, - { - "lemma": "direction", - "text": "direction" - }, - { - "lemma": "de le", - "text": "du" - }, - { - "lemma": "parti", - "text": "parti" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "dans", - "text": "Dans" - }, - { - "lemma": "le", - "text": "l'" - }, - { - "lemma": "immédiat", - "text": "immédiat" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "il", - "text": "il" - }, - { - "lemma": "appartenir", - "text": "appartenait" - }, - { - "lemma": "à le", - "text": "aux" - }, - { - "lemma": "travailliste", - "text": "travaillistes" - }, - { - "lemma": "et", - "text": "et" - }, - { - "lemma": "libéral", - "text": "libéraux" - }, - { - "lemma": "démocrate", - "text": "démocrates" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "retrousser", - "text": "retrousser" - }, - { - "lemma": "le", - "text": "les" - }, - { - "lemma": "manche", - "text": "manches" - }, - { - "lemma": "pour", - "text": "pour" - }, - { - "lemma": "se", - "text": "s'" - }, - { - "lemma": "attaquer", - "text": "attaquer" - }, - { - "lemma": "à le", - "text": "au" - }, - { - "lemma": "pénible", - "text": "pénible" - }, - { - "lemma": "chantier", - "text": "chantier" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "reconstruction", - "text": "reconstruction" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "avec", - "text": "Avec" - }, - { - "lemma": "AFP", - "text": "AFP" - }, - { - "lemma": ")", - "text": ")" - } + "message", + "en", + "cas", + "de", + "erreur", + "à le", + "focu", + "sur", + "le", + "champ", + "vouloir", + "saisir", + "le", + "code", + "de", + "sécurité", + "ci", + "-", + "dessous", + ":", + "ajouter", + "à le", + "favoris", + "ce", + "article", + "avoir", + "être", + "ajouter", + "dans", + "votre", + "favoris", + ".", + "ce", + "être", + "un", + "petit", + "bout", + "de", + "plastique", + "qui", + "mettre", + "le", + "géant", + "Mars", + "sens", + "dessus", + "dessous", + ".", + "le", + "groupe", + "avoir", + "ordonner", + "mardi", + "un", + "gigantesque", + "rappel", + "de", + "produit", + "en", + "Europe", + "et", + "en", + "France", + ".", + "en", + "tout", + "55", + "pays", + "être", + "concerner", + ",", + "après", + "que", + "un", + "consommateur", + "avoir", + "trouver", + "donc", + "\"", + "un", + "petit", + "bout", + "de", + "plastique", + "\"", + "dans", + "un", + "produit", + ".", + "en", + "France", + ",", + "le", + "rappel", + "concerner", + "de le", + "barre", + "Mars", + "et", + "Snickers", + ",", + "et", + "de le", + "bonbon", + "\"", + "célébration", + "\"", + ",", + "selon", + "un", + "communiqué", + "de", + "Mars", + "France", + ".", + "le", + "groupe", + "dire", + "également", + "rappeler", + "certain", + "de", + "son", + "produit", + "en", + "Allemagne", + ",", + "à le", + "pays", + "-", + "bas", + ",", + "à le", + "royaume", + "-", + "uni", + ",", + "en", + "Belgique", + ",", + "en", + "Italie", + "et", + "en", + "Espagne", + ",", + "mais", + "avec", + "un", + "référence", + "différent", + "selon", + "le", + "pays", + ".", + "\"", + "de", + "ce", + "que", + "nous", + "savon", + ",", + "55", + "pays", + "être", + "concerner", + "\"", + ",", + "avoir", + "déclarer", + "à", + "le", + "AFP", + "Eline", + "Bijveld", + ",", + "un", + "responsable", + "de le", + "groupe", + "pour", + "le", + "pays", + "-", + "bas", + ",", + "ajouter", + "que", + "le", + "rappel", + "concerner", + "\"", + "uniquement", + "le", + "production", + "à le", + "pays", + "-", + "bas", + "\"", + ",", + "dans", + "un", + "usine", + "Mars", + "de", + "le", + "ville", + "Veghel", + "(", + "sud", + ")", + "et", + "destiner", + "à", + "le", + "exportation", + ".", + "en", + "France", + ",", + "le", + "rappel", + "concerner", + "de le", + "barre", + "Mars", + "dont", + "le", + "date", + "limite", + "de", + "consommation", + "être", + "comprendre", + "entre", + "le", + "4", + "septembre", + "et", + "le", + "16", + "octobre", + "2016", + ",", + "de le", + "Snickers", + "(", + "entre", + "le", + "3", + "juillet", + "et", + "le", + "21", + "août", + "2016", + ")", + ",", + "un", + "paquet", + "de", + "miniature", + "Mix", + "tubo", + "(", + "entre", + "le", + "10", + "juillet", + "et", + "le", + "11", + "septembre", + "2016", + ")", + "et", + "de le", + "bonbon", + "\"", + "célébration", + "\"", + "(", + "entre", + "le", + "19", + "juin", + "et", + "le", + "21", + "août", + "2016", + ")", + ",", + "selon", + "un", + "communiqué", + "de", + "Mars", + "France", + ".", + "le", + "groupe", + "précis", + ":", + "\"", + "il", + "se", + "agir", + "de", + "un", + "incident", + "isolé", + "et", + "strictement", + "délimiter", + ",", + "ne", + "concerner", + "que", + "le", + "produit", + "mentionner", + "ci", + "-", + "dessus", + ".", + "aucun", + "autre", + "format", + ",", + "référence", + "ou", + "variété", + "de", + "barre", + "chocolaté", + "ne", + "être", + "concerner", + "par", + "ce", + "rappel", + ".", + "\"", + "il", + "être", + "conseiller", + "à le", + "consommateur", + "avoir", + "acheter", + "le", + "un", + "de", + "ce", + "produit", + "de", + "\"", + "ne", + "pas", + "le", + "consommer", + "\"", + "et", + "de", + "contacter", + "le", + "service", + "consommateur", + "par", + "téléphone", + "ou", + "Internet", + ".", + "plus", + "de", + "10", + "million", + "de", + "barre", + "chocolaté", + "produire", + "chaque", + "jour", + "dans", + "un", + "communiqué", + ",", + "le", + "branche", + "allemand", + "de le", + "groupe", + "expliquer", + ":", + "\"", + "nous", + "vouloir", + "éviter", + "que", + "le", + "client", + "qui", + "avoir", + "acheter", + "un", + "de", + "ce", + "produit", + "le", + "consommer", + ".", + "nous", + "avoir", + "délibérément", + "choisir", + "un", + "plage", + "de", + "production", + "très", + "long", + "(", + "avec", + "un", + "date", + "de", + "péremption", + "compris", + "entre", + "le", + "19", + "juin", + "2016", + "et", + "le", + "8", + "janvier", + "2017", + ",", + "outre", + "-", + "Rhin", + ")", + "pour", + "nous", + "assurer", + "que", + "tout", + "le", + "produit", + "potentiellement", + "concerner", + "être", + "rappeler", + "\"", + ".", + "\"", + "Mars", + "être", + "en", + "contact", + "étroit", + "avec", + "le", + "autorité", + "sanitaire", + "pour", + "se", + "assurer", + "que", + "tout", + "le", + "disposition", + "légal", + "entourer", + "le", + "rappel", + "être", + "respecter", + "\"", + ",", + "avoir", + "assurer", + "le", + "filiale", + "allemand", + ".", + "Mars", + "Inc.", + "être", + "un", + "géant", + "américain", + "de", + "le", + "agro", + "-", + "alimentaire", + ",", + "non", + "coter", + ",", + "et", + "très", + "secret", + ".", + "connu", + "pour", + "son", + "confiserie", + "-", + "celui", + "toucher", + "par", + "le", + "rappel", + "mais", + "aussi", + "Balisto", + ",", + "Twix", + "ou", + "encore", + "M", + "&", + "me", + "s", + "-", + "il", + "fabriquer", + "aussi", + "entre", + "autre", + "de le", + "riz", + "(", + "Uncle", + "Ben's", + ")", + "et", + "de le", + "pâte", + ",", + "ainsi", + "que", + "de", + "le", + "nourriture", + "pour", + "animal", + "(", + "Whiskas", + ")", + ".", + "il", + "réaliser", + "plus", + "de", + "30", + "milliard", + "de", + "dollar", + "de", + "chiffre", + "de", + "affaire", + "par", + "an", + "et", + "jouer", + "dans", + "le", + "cour", + "de le", + "grand", + "de le", + "secteur", + "agroalimentaire", + "à le", + "côté", + "de", + "kraft", + "Foods", + "et", + "Nestlé", + ".", + "le", + "groupe", + "avoir", + "plusieurs", + "usine", + "en", + "Europe", + ",", + "dont", + "celui", + "de", + "Veghel", + ",", + "un", + "en", + "France", + "à", + "Haguenau", + "(", + "Alsace", + ")", + ",", + "un", + "à", + "Viersen", + "dans", + "le", + "ouest", + "de", + "le", + "Allemagne", + ",", + "qui", + "produire", + "quelque", + "10", + "million", + "de", + "\"", + "snack", + "\"", + "par", + "jour", + ",", + "ou", + "encore", + "un", + "en", + "Pologne", + ".", + "le", + "industrie", + "agroalimentaire", + ",", + "étroitement", + "surveiller", + ",", + "faire", + "régulièrement", + "le", + "objet", + "de", + "scandale", + "et", + "de", + "rappel", + ".", + "certains", + "être", + "rester", + "mémorable", + ",", + "comme", + "le", + "affaire", + "de", + "le", + "viande", + "de", + "cheval", + "trouver", + "dans", + "un", + "lasagnes", + "surgelé", + "et", + "un", + "kyrielle", + "de", + "autre", + "produit", + "dont", + "le", + "boulette", + "de", + "Ikea", + ",", + "en", + "2013", + ".", + "récemment", + "un", + "dent", + "humain", + "avoir", + "être", + "trouver", + "dans", + "un", + "frite", + "chez", + "McDonald's", + "à le", + "Japon", + "." ], "posTags": [ - { - "pos": "NOUN_PL", - "text": "Elections" - }, - { - "pos": "ADJ_PL", - "text": "britanniques" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "NOUN_SG", - "text": "triomphe" - }, - { - "pos": "ADJ_SG", - "text": "éclatant" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "NOUN_PL", - "text": "Challenges" - }, - { - "pos": "SYM", - "text": ">" - }, - { - "pos": "NOUN_INV", - "text": "Europe" - }, - { - "pos": "SYM", - "text": ">" - }, - { - "pos": "NOUN_PL", - "text": "Elections" - }, - { - "pos": "ADJ_PL", - "text": "britanniques" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "NOUN_SG", - "text": "triomphe" - }, - { - "pos": "ADJ_SG", - "text": "éclatant" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "NOUN_PL", - "text": "Elections" - }, - { - "pos": "ADJ_PL", - "text": "britanniques" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "NOUN_SG", - "text": "triomphe" - }, - { - "pos": "ADJ_SG", - "text": "éclatant" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "VERB_INF", - "text": "Voir" - }, - { - "pos": "DET_PL", - "text": "tous" - }, - { - "pos": "DET_PL", - "text": "ses" - }, - { - "pos": "NOUN_PL", - "text": "articles" - }, - { - "pos": "ADJ_SG", - "text": "Publié" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NUM", - "text": "08" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "05" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "2015" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "17h57" - }, - { - "pos": "PAP_INV", - "text": "Mis" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_SG", - "text": "jour" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "19h13" - }, - { - "pos": "PREP_A", - "text": "A" - }, - { - "pos": "SYM", - "text": "+" - }, - { - "pos": "PREP_A", - "text": "A" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "ADV", - "text": "brillamment" - }, - { - "pos": "PAP_SG", - "text": "remporté" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "législatives" - }, - { - "pos": "ADJ_PL", - "text": "britanniques" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VERB_P3PL", - "text": "font" - }, - { - "pos": "VERB_INF", - "text": "planer" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "menace" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "sortie" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "Royaume" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "Uni" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "Union" - }, - { - "pos": "ADJ_SG", - "text": "européenne" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "VERB_P3PL", - "text": "consacrent" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "succès" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "nationalistes" - }, - { - "pos": "ADJ_INV", - "text": "écossais" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "NOUN_SG", - "text": "élection" - }, - { - "pos": "NOUN_SG", - "text": "mai" - }, - { - "pos": "NUM", - "text": "2015" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN_INV", - "text": "Kirsty" - }, - { - "pos": "NOUN_INV", - "text": "Wigglesworth" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUN_INV", - "text": "AP" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUN_INV", - "text": "SIPA" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "ADJ_SG", - "text": "Conforté" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "résultat" - }, - { - "pos": "ADJ_SG", - "text": "inespéré" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "leader" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "Tories" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "rendu" - }, - { - "pos": "NOUN_SG", - "text": "visite" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DET_SG", - "text": "tout" - }, - { - "pos": "NOUN_SG", - "text": "début" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "ADV", - "text": "après" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "midi" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "reine" - }, - { - "pos": "NOUN_INV", - "text": "Elizabeth" - }, - { - "pos": "NUM", - "text": "II" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_INV", - "text": "palais" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Buckingham" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "MISC", - "text": "afin" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "recueillir" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "assentiment" - }, - { - "pos": "ADJ_SG", - "text": "formel" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "vue" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "former" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "ADJ2_SG", - "text": "prochain" - }, - { - "pos": "NOUN_SG", - "text": "gouvernement" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PRON_P1P2", - "text": "Je" - }, - { - "pos": "VERB_P1P2", - "text": "vais" - }, - { - "pos": "ADV", - "text": "maintenant" - }, - { - "pos": "VERB_INF", - "text": "former" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "gouvernement" - }, - { - "pos": "ADJ_SG", - "text": "conservateur" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "majorité" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_INV", - "text": "t" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "PAP_SG", - "text": "annoncé" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "ADJ2_SG", - "text": "premier" - }, - { - "pos": "NOUN_SG", - "text": "jour" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "ADJ2_SG", - "text": "second" - }, - { - "pos": "NOUN_SG", - "text": "mandat" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "En" - }, - { - "pos": "NUM", - "text": "2010" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "Tories" - }, - { - "pos": "VAUX_P3PL", - "text": "avaient" - }, - { - "pos": "VAUX_PAP", - "text": "eu" - }, - { - "pos": "NOUN_SG", - "text": "besoin" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "libéraux" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_PL", - "text": "démocrates" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VERB_INF", - "text": "gouverner" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "Un" - }, - { - "pos": "NOUN_SG", - "text": "gouvernement" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "majorité" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_PL", - "text": "Les" - }, - { - "pos": "NOUN_PL", - "text": "résultats" - }, - { - "pos": "ADJ_PL", - "text": "définitifs" - }, - { - "pos": "PREP", - "text": "après" - }, - { - "pos": "NOUN_SG", - "text": "dépouillement" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NUM", - "text": "650" - }, - { - "pos": "NOUN_PL", - "text": "circonscriptions" - }, - { - "pos": "VERB_P3PL", - "text": "allouent" - }, - { - "pos": "NUM", - "text": "331" - }, - { - "pos": "NOUN_PL", - "text": "députés" - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "conservateurs" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "SYM", - "text": "+" - }, - { - "pos": "NUM", - "text": "24" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NUM", - "text": "232" - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "travaillistes" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "26" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NUM", - "text": "56" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_INV", - "text": "SNP" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "SYM", - "text": "+" - }, - { - "pos": "NUM", - "text": "50" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NUM", - "text": "8" - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "libéraux" - }, - { - "pos": "ADJ_PL", - "text": "démocrates" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "49" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NUM", - "text": "1" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Ukip" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NUM", - "text": "1" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "NOUN_SG", - "text": "Labour" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "VAUX_PAP", - "text": "été" - }, - { - "pos": "PAP_SG", - "text": "laminé" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_INV", - "text": "Ecosse" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONN", - "text": "où" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "indépendantistes" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_INV", - "text": "SNP" - }, - { - "pos": "VAUX_P3PL", - "text": "ont" - }, - { - "pos": "PAP_SG", - "text": "raflé" - }, - { - "pos": "NUM", - "text": "56" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NUM", - "text": "59" - }, - { - "pos": "NOUN_PL", - "text": "sièges" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "jeu" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "NOUN_SG", - "text": "région" - }, - { - "pos": "ADJ_SG", - "text": "autonome" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "jusqu'" - }, - { - "pos": "ADV", - "text": "ici" - }, - { - "pos": "PAP_SG", - "text": "considérée" - }, - { - "pos": "COMME", - "text": "comme" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "fief" - }, - { - "pos": "ADJ_SG", - "text": "travailliste" - }, - { - "pos": "ADJ_SG", - "text": "inexpugnable" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_SG", - "text": "Nombre" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_PL", - "text": "analystes" - }, - { - "pos": "VAUX_P3PL", - "text": "avaient" - }, - { - "pos": "PAP_SG", - "text": "prédit" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "bain" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "sang" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJ_SG", - "text": "politique" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "PRON", - "text": "ils" - }, - { - "pos": "VAUX_P3PL", - "text": "avaient" - }, - { - "pos": "NOUN_SG", - "text": "raison" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "ce" - }, - { - "pos": "NOUN_SG", - "text": "point" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_SG", - "text": "Bain" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "sang" - }, - { - "pos": "ADJ_SG", - "text": "politique" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "Nigel" - }, - { - "pos": "NOUN_INV", - "text": "Farage" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "chef" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "file" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "parti" - }, - { - "pos": "VERB_P3SG", - "text": "europhobe" - }, - { - "pos": "NOUN_INV", - "text": "Ukip" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PAP_SG", - "text": "battu" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "South" - }, - { - "pos": "NOUN_INV", - "text": "Thanet" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "VAUX_PAP", - "text": "été" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "ADJ2_SG", - "text": "premier" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "VERB_INF", - "text": "démissionner" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_PRP", - "text": "mettant" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_SG", - "text": "exécution" - }, - { - "pos": "DET_SG", - "text": "sa" - }, - { - "pos": "NOUN_SG", - "text": "promesse" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VERB_INF", - "text": "tirer" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "rideau" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_INV", - "text": "cas" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "échec" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Son" - }, - { - "pos": "NOUN_SG", - "text": "départ" - }, - { - "pos": "VERB_P3SG", - "text": "porte" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "coup" - }, - { - "pos": "ADV", - "text": "extrêmement" - }, - { - "pos": "ADJ_SG", - "text": "sévère" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "parti" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "pourtant" - }, - { - "pos": "PAP_SG", - "text": "crédité" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "score" - }, - { - "pos": "ADJ_SG", - "text": "flatteur" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "ADV", - "text": "près" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "13" - }, - { - "pos": "SYM", - "text": "%" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_INV", - "text": "voix" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "L'" - }, - { - "pos": "NOUN_SG", - "text": "homme" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "orchestre" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Ukip" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "ADV", - "text": "toutefois" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "PAP_SG", - "text": "exclu" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VERB_P3SG", - "text": "come" - }, - { - "pos": "NOUN_SG", - "text": "back" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Peu" - }, - { - "pos": "ADV", - "text": "après" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "leader" - }, - { - "pos": "ADJ_SG", - "text": "libéral" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "démocrate" - }, - { - "pos": "NOUN_INV", - "text": "Nick" - }, - { - "pos": "NOUN_INV", - "text": "Clegg" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NUM", - "text": "48" - }, - { - "pos": "NOUN_PL", - "text": "ans" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "jeté" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "éponge" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "VERB_INF", - "text": "sortir" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "nuit" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJ_SG", - "text": "dévastatrice" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "selon" - }, - { - "pos": "DET_SG", - "text": "sa" - }, - { - "pos": "ADJ2_SG", - "text": "propre" - }, - { - "pos": "NOUN_SG", - "text": "expression" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_INV", - "text": "Ed" - }, - { - "pos": "NOUN_INV", - "text": "Miliband" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NUM", - "text": "45" - }, - { - "pos": "NOUN_PL", - "text": "ans" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "patron" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "travaillistes" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "suivi" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "ADJ_SG", - "text": "même" - }, - { - "pos": "NOUN_SG", - "text": "chemin" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "VERB_PRP", - "text": "endossant" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "ADJ_SG", - "text": "entière" - }, - { - "pos": "NOUN_SG", - "text": "responsabilité" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "défaite" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_SG", - "text": "Tsunami" - }, - { - "pos": "ADJ_SG", - "text": "nationaliste" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Ecosse" - }, - { - "pos": "DET_PL", - "text": "Les" - }, - { - "pos": "NOUN_PL", - "text": "autres" - }, - { - "pos": "ADJ2_PL", - "text": "grands" - }, - { - "pos": "NOUN_PL", - "text": "perdants" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "scrutin" - }, - { - "pos": "VAUX_P3PL", - "text": "sont" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "instituts" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_PL", - "text": "sondages" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "NEG", - "text": "n'" - }, - { - "pos": "VAUX_P3PL", - "text": "ont" - }, - { - "pos": "PAP_SG", - "text": "cessé" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "prédire" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "résultat" - }, - { - "pos": "ADJ_SG", - "text": "ultra" - }, - { - "pos": "ADJ_SG", - "text": "serré" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_PRP", - "text": "renvoyant" - }, - { - "pos": "NOUN_INV", - "text": "dos" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "dos" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NUM", - "text": "deux" - }, - { - "pos": "NOUN_PL", - "text": "partis" - }, - { - "pos": "ADJ_PL", - "text": "traditionnels" - }, - { - "pos": "ADJ_PL", - "text": "frappés" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "déclin" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "paysage" - }, - { - "pos": "ADJ_SG", - "text": "caractérisé" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "multipartisme" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "NOUN_SG", - "text": "Labour" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "abord" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "PREP", - "text": "avant" - }, - { - "pos": "DET_SG", - "text": "tout" - }, - { - "pos": "NOUN_SG", - "text": "victime" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "tsunami" - }, - { - "pos": "ADJ_SG", - "text": "nationaliste" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "déferlé" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "Ecosse" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "SNP" - }, - { - "pos": "VERB_PRP", - "text": "décuplant" - }, - { - "pos": "ADV", - "text": "presque" - }, - { - "pos": "DET_SG", - "text": "sa" - }, - { - "pos": "NOUN_SG", - "text": "représentation" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "Chambre" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "Communes" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "NOUN_SG", - "text": "lion" - }, - { - "pos": "NOUN_INV", - "text": "écossais" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "rugi" - }, - { - "pos": "DET_SG", - "text": "cette" - }, - { - "pos": "NOUN_SG", - "text": "nuit" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "félicité" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "ADJ2_SG", - "text": "ancien" - }, - { - "pos": "NOUN_SG", - "text": "leader" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_INV", - "text": "Alex" - }, - { - "pos": "NOUN_INV", - "text": "Salmond" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "NOUN_SG", - "text": "triomphe" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_INV", - "text": "SNP" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "symbolisé" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "élection" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Mhairi" - }, - { - "pos": "NOUN_SG", - "text": "Black" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "étudiante" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NUM", - "text": "20" - }, - { - "pos": "NOUN_PL", - "text": "ans" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VERB_P3SG", - "text": "devient" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "ADV", - "text": "plus" - }, - { - "pos": "ADJ2_SG", - "text": "jeune" - }, - { - "pos": "PAP_SG", - "text": "députée" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Westminster" - }, - { - "pos": "PREP", - "text": "depuis" - }, - { - "pos": "NUM", - "text": "1667" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "dépens" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "député" - }, - { - "pos": "NOUN_SG", - "text": "sortant" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "NOUN_SG", - "text": "cadre" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "Labour" - }, - { - "pos": "NOUN_INV", - "text": "Douglas" - }, - { - "pos": "NOUN_INV", - "text": "Alexander" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "tentation" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "Brexit" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "Ed" - }, - { - "pos": "NOUN_INV", - "text": "Balls" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_INV", - "text": "bras" - }, - { - "pos": "ADJ_SG", - "text": "droit" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Miliband" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_INV", - "text": "Jim" - }, - { - "pos": "NOUN_INV", - "text": "Murphy" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN_SG", - "text": "patron" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "Labour" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_INV", - "text": "Ecosse" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "NOUN_INV", - "text": "Vince" - }, - { - "pos": "NOUN_INV", - "text": "Cable" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADJ2_SG", - "text": "ancien" - }, - { - "pos": "NOUN_SG", - "text": "ministre" - }, - { - "pos": "NOUN_SG", - "text": "lib" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "dem" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "Commerce" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERB_P3PL", - "text": "font" - }, - { - "pos": "NOUN_SG", - "text": "partie" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "ADJ_PL", - "text": "autres" - }, - { - "pos": "NOUN_PL", - "text": "victimes" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "marque" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "scrutin" - }, - { - "pos": "ADJ_SG", - "text": "assassin" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "VAUX_P3SG", - "text": "avait" - }, - { - "pos": "VAUX_PAP", - "text": "été" - }, - { - "pos": "PAP_SG", - "text": "critiqué" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "manque" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "engagement" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "début" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "campagne" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP_A", - "text": "A" - }, - { - "pos": "NOUN_SG", - "text": "peine" - }, - { - "pos": "ADJ_SG", - "text": "réélu" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "réitéré" - }, - { - "pos": "DET_SG", - "text": "sa" - }, - { - "pos": "ADJ2_SG", - "text": "principale" - }, - { - "pos": "NOUN_SG", - "text": "promesse" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "organisation" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "ADV", - "text": "ici" - }, - { - "pos": "NUM", - "text": "2017" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "référendum" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "maintien" - }, - { - "pos": "COORD", - "text": "ou" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_INV", - "text": "pays" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "Union" - }, - { - "pos": "ADJ_SG", - "text": "européenne" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Une" - }, - { - "pos": "NOUN_SG", - "text": "perspective" - }, - { - "pos": "RELPRO", - "text": "qui" - }, - { - "pos": "VERB_P3SG", - "text": "inquiète" - }, - { - "pos": "DET_PL", - "text": "ses" - }, - { - "pos": "NOUN_PL", - "text": "partenaires" - }, - { - "pos": "ADJ_PL", - "text": "européens" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "raison" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "possibilité" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "Brexit" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "acronyme" - }, - { - "pos": "VERB_PRP", - "text": "désignant" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "sortie" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "club" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NUM", - "text": "28" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "nouvelle" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "victoire" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "conservateurs" - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "traduite" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "NOUN_SG", - "text": "bond" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "livre" - }, - { - "pos": "ADJ_SG", - "text": "britannique" - }, - { - "pos": "NOUN_SG", - "text": "face" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "dollar" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "euro" - }, - { - "pos": "NOUN_SG", - "text": "vendredi" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "marchés" - }, - { - "pos": "ADJ_PL", - "text": "asiatiques" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "Bourse" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Londres" - }, - { - "pos": "VERB_P3SG", - "text": "évoluait" - }, - { - "pos": "ADV", - "text": "également" - }, - { - "pos": "PC", - "text": "en" - }, - { - "pos": "VERB_P3SG", - "text": "hausse" - }, - { - "pos": "NOUN_SG", - "text": "vendredi" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "malgré" - }, - { - "pos": "DET_PL", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "incertitudes" - }, - { - "pos": "ADJ_PL", - "text": "européennes" - }, - { - "pos": "ADV", - "text": "potentiellement" - }, - { - "pos": "ADJ_PL", - "text": "préjudiciables" - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "affaires" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "La" - }, - { - "pos": "NOUN_SG", - "text": "Bourse" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Londres" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "diapason" - }, - { - "pos": "RELPRO", - "text": "Qui" - }, - { - "pos": "NOUN_INV", - "text": "plus" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "ADJ_SG", - "text": "éventuelle" - }, - { - "pos": "NOUN_SG", - "text": "sortie" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_INV", - "text": "UE" - }, - { - "pos": "VERB_P3SG", - "text": "pourrait" - }, - { - "pos": "VAUX_INF", - "text": "avoir" - }, - { - "pos": "PREP", - "text": "par" - }, - { - "pos": "NOUN_SG", - "text": "contrecoup" - }, - { - "pos": "PREP_DE", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "répercussions" - }, - { - "pos": "ADJ_PL", - "text": "profondes" - }, - { - "pos": "PREP", - "text": "sur" - }, - { - "pos": "DET_SG", - "text": "le" - }, - { - "pos": "NOUN_SG", - "text": "maintien" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "l" - }, - { - "pos": "PUNCT", - "text": "'" - }, - { - "pos": "NOUN_INV", - "text": "Ecosse" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "largement" - }, - { - "pos": "ADJ_INV", - "text": "pro" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADJ_SG", - "text": "européenne" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "NOUN_SG", - "text": "sein" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "Royaume" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_SG", - "text": "Uni" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "Toute" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "journée" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "jeudi" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "militants" - }, - { - "pos": "NOUN_INV", - "text": "SNP" - }, - { - "pos": "VERB_PRP", - "text": "sortant" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "isoloir" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "Glasgow" - }, - { - "pos": "COORD", - "text": "ou" - }, - { - "pos": "NOUN_INV", - "text": "Edimbourg" - }, - { - "pos": "NEG", - "text": "ne" - }, - { - "pos": "VERB_P3PL", - "text": "faisaient" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "NOUN_SG", - "text": "mystère" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "leur" - }, - { - "pos": "NOUN_SG", - "text": "volonté" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "revanche" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "Ils" - }, - { - "pos": "VERB_P3PL", - "text": "aspirent" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "effet" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "tenue" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "ADJ2_SG", - "text": "nouveau" - }, - { - "pos": "NOUN_SG", - "text": "référendum" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "NOUN_SG", - "text": "indépendance" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "après" - }, - { - "pos": "DET_SG", - "text": "un" - }, - { - "pos": "ADJ2_SG", - "text": "premier" - }, - { - "pos": "VERB_P1P2", - "text": "rendez" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON_P1P2", - "text": "vous" - }, - { - "pos": "PAP_SG", - "text": "manqué" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUN_SG", - "text": "septembre" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PRON", - "text": "Il" - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VERB_P3SG", - "text": "agit" - }, - { - "pos": "ADV", - "text": "là" - }, - { - "pos": "PREP_DE", - "text": "d'" - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "menace" - }, - { - "pos": "ADV", - "text": "non" - }, - { - "pos": "ADJ_SG", - "text": "négligeable" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "même" - }, - { - "pos": "CONN", - "text": "si" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN_INV", - "text": "David" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "ADV", - "text": "sensiblement" - }, - { - "pos": "PAP_SG", - "text": "accru" - }, - { - "pos": "DET_SG", - "text": "sa" - }, - { - "pos": "NOUN_SG", - "text": "stature" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "selon" - }, - { - "pos": "NOUN_INV", - "text": "Patrick" - }, - { - "pos": "NOUN_INV", - "text": "Dunleavy" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADJ_SG", - "text": "expert" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_INV", - "text": "London" - }, - { - "pos": "NOUN_INV", - "text": "School" - }, - { - "pos": "NOUN_SG", - "text": "of" - }, - { - "pos": "NOUN_INV", - "text": "Economics" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN_INV", - "text": "LSE" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "Le" - }, - { - "pos": "ADV", - "text": "plus" - }, - { - "pos": "ADJ2_SG", - "text": "jeune" - }, - { - "pos": "ADJ2_SG", - "text": "Premier" - }, - { - "pos": "NOUN_SG", - "text": "ministre" - }, - { - "pos": "ADJ_SG", - "text": "britannique" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NUM", - "text": "deux" - }, - { - "pos": "NOUN_PL", - "text": "siècles" - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "comporté" - }, - { - "pos": "ADV", - "text": "bien" - }, - { - "pos": "ADV", - "text": "mieux" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "ADJ_SG", - "text": "prévu" - }, - { - "pos": "PREP", - "text": "dans" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "urnes" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "mais" - }, - { - "pos": "VERB_P3SG", - "text": "pourrait" - }, - { - "pos": "VAUX_INF", - "text": "avoir" - }, - { - "pos": "DET_PL", - "text": "des" - }, - { - "pos": "NOUN_PL", - "text": "difficultés" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "VERB_INF", - "text": "faire" - }, - { - "pos": "RELPRO", - "text": "quoi" - }, - { - "pos": "CONJQUE", - "text": "que" - }, - { - "pos": "PRON", - "text": "ce" - }, - { - "pos": "VAUX_P3SG", - "text": "soit" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "radical" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN_INV", - "text": "t" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "PAP_SG", - "text": "ajouté" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_PL", - "text": "De" - }, - { - "pos": "ADJ2_PL", - "text": "nouveaux" - }, - { - "pos": "NOUN_INV", - "text": "ambitieux" - }, - { - "pos": "NOUN_INV", - "text": "Cameron" - }, - { - "pos": "VERB_P3SG", - "text": "devra" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_P3SG", - "text": "fait" - }, - { - "pos": "VERB_INF", - "text": "contenir" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "grogne" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "frange" - }, - { - "pos": "ADJ_SG", - "text": "eurosceptique" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "DET_SG", - "text": "son" - }, - { - "pos": "NOUN_SG", - "text": "parti" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "VERB_INF", - "text": "tenir" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_SG", - "text": "distance" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "prétendants" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "sa" - }, - { - "pos": "NOUN_SG", - "text": "succession" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "alors" - }, - { - "pos": "CONJQUE", - "text": "qu'" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "VAUX_P3SG", - "text": "a" - }, - { - "pos": "PAP_SG", - "text": "annoncé" - }, - { - "pos": "PREP", - "text": "pendant" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "campagne" - }, - { - "pos": "CONJQUE", - "text": "qu'" - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "NEG", - "text": "ne" - }, - { - "pos": "VERB_P3SG", - "text": "briguerait" - }, - { - "pos": "ADV", - "text": "pas" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "ADJ2_SG", - "text": "troisième" - }, - { - "pos": "NOUN_SG", - "text": "mandat" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DET_SG", - "text": "L'" - }, - { - "pos": "NUM", - "text": "un" - }, - { - "pos": "NUM", - "text": "deux" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PC", - "text": "le" - }, - { - "pos": "VERB_PRP", - "text": "bouillant" - }, - { - "pos": "NOUN_SG", - "text": "maire" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_INV", - "text": "Londres" - }, - { - "pos": "NOUN_INV", - "text": "Boris" - }, - { - "pos": "NOUN_INV", - "text": "Johnson" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VAUX_P3SG", - "text": "est" - }, - { - "pos": "PAP_SG", - "text": "fait" - }, - { - "pos": "VERB_INF", - "text": "élire" - }, - { - "pos": "NOUN_SG", - "text": "député" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "NOUN_INV", - "text": "Uxbridge" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DET_SG", - "text": "une" - }, - { - "pos": "NOUN_SG", - "text": "étape" - }, - { - "pos": "ADJ_SG", - "text": "essentielle" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "VERB_INF", - "text": "prétendre" - }, - { - "pos": "PREP_A", - "text": "à" - }, - { - "pos": "DET_SG", - "text": "la" - }, - { - "pos": "NOUN_SG", - "text": "direction" - }, - { - "pos": "PREP_DE", - "text": "du" - }, - { - "pos": "NOUN_SG", - "text": "parti" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Dans" - }, - { - "pos": "DET_SG", - "text": "l'" - }, - { - "pos": "NOUN_SG", - "text": "immédiat" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "il" - }, - { - "pos": "VERB_P3SG", - "text": "appartenait" - }, - { - "pos": "PREP_A", - "text": "aux" - }, - { - "pos": "NOUN_PL", - "text": "travaillistes" - }, - { - "pos": "COORD", - "text": "et" - }, - { - "pos": "NOUN_PL", - "text": "libéraux" - }, - { - "pos": "ADJ_PL", - "text": "démocrates" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "VERB_INF", - "text": "retrousser" - }, - { - "pos": "DET_PL", - "text": "les" - }, - { - "pos": "NOUN_PL", - "text": "manches" - }, - { - "pos": "PREP", - "text": "pour" - }, - { - "pos": "PC", - "text": "s'" - }, - { - "pos": "VERB_INF", - "text": "attaquer" - }, - { - "pos": "PREP_A", - "text": "au" - }, - { - "pos": "ADJ_SG", - "text": "pénible" - }, - { - "pos": "NOUN_SG", - "text": "chantier" - }, - { - "pos": "PREP_DE", - "text": "de" - }, - { - "pos": "NOUN_SG", - "text": "reconstruction" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "PREP", - "text": "Avec" - }, - { - "pos": "NOUN_INV", - "text": "AFP" - }, - { - "pos": "PUNCT", - "text": ")" - } + "NOUN_SG", + "PREP", + "NOUN_INV", + "PREP_DE", + "NOUN_SG", + "PREP_A", + "NOUN_PL", + "PREP", + "DET_SG", + "NOUN_SG", + "VERB_P1P2", + "VERB_INF", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "ADV", + "PUNCT", + "NOUN_INV", + "PUNCT", + "VERB_INF", + "PREP_A", + "NOUN_PL", + "DET_SG", + "NOUN_SG", + "VAUX_P3SG", + "VAUX_PAP", + "PAP_SG", + "PREP", + "DET_PL", + "NOUN_PL", + "SENT", + "PRON", + "VAUX_P3SG", + "DET_SG", + "ADJ2_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "RELPRO", + "VERB_P3SG", + "DET_SG", + "NOUN_SG", + "NOUN_INV", + "NOUN_INV", + "ADV", + "ADV", + "SENT", + "DET_SG", + "NOUN_SG", + "VAUX_P3SG", + "PAP_SG", + "NOUN_SG", + "DET_SG", + "ADJ_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_PL", + "PREP", + "NOUN_INV", + "COORD", + "PREP", + "NOUN_INV", + "SENT", + "PREP", + "DET_SG", + "NUM", + "NOUN_INV", + "VAUX_P3PL", + "PAP_PL", + "CM", + "ADV", + "CONJQUE", + "DET_SG", + "NOUN_SG", + "VAUX_P3SG", + "PAP_SG", + "ADV", + "PUNCT", + "DET_SG", + "ADJ2_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "PUNCT", + "PREP", + "DET_SG", + "NOUN_SG", + "SENT", + "PREP", + "NOUN_INV", + "CM", + "DET_SG", + "NOUN_SG", + "VERB_P3SG", + "PREP_DE", + "NOUN_PL", + "NOUN_INV", + "COORD", + "NOUN_INV", + "CM", + "COORD", + "PREP_DE", + "NOUN_PL", + "PUNCT", + "NOUN_PL", + "PUNCT", + "CM", + "PREP", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_INV", + "NOUN_INV", + "SENT", + "DET_SG", + "NOUN_SG", + "VERB_P3SG", + "ADV", + "VERB_INF", + "ADJ_PL", + "PREP_DE", + "DET_PL", + "NOUN_PL", + "PREP", + "NOUN_INV", + "CM", + "PREP_A", + "NOUN_INV", + "PUNCT", + "NOUN_INV", + "CM", + "PREP_A", + "NOUN_SG", + "PUNCT", + "NOUN_SG", + "CM", + "PREP", + "NOUN_INV", + "CM", + "PREP", + "NOUN_INV", + "COORD", + "PREP", + "NOUN_INV", + "CM", + "COORD", + "PREP", + "DET_PL", + "NOUN_PL", + "ADJ_PL", + "PREP", + "DET_PL", + "NOUN_INV", + "SENT", + "PUNCT", + "PREP_DE", + "PRON", + "CONJQUE", + "PRON_P1P2", + "NOUN_PL", + "CM", + "NUM", + "NOUN_INV", + "VAUX_P3PL", + "PAP_PL", + "PUNCT", + "CM", + "VAUX_P3SG", + "PAP_SG", + "PREP_A", + "DET_SG", + "NOUN_INV", + "NOUN_INV", + "NOUN_INV", + "CM", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "PREP", + "DET_PL", + "NOUN_INV", + "PUNCT", + "NOUN_INV", + "CM", + "VERB_PRP", + "CONJQUE", + "DET_SG", + "NOUN_SG", + "VERB_P3SG", + "PUNCT", + "ADV", + "DET_SG", + "NOUN_SG", + "PREP_A", + "NOUN_INV", + "PUNCT", + "NOUN_INV", + "PUNCT", + "CM", + "PREP", + "DET_SG", + "NOUN_SG", + "NOUN_INV", + "PREP_DE", + "DET_SG", + "NOUN_SG", + "NOUN_INV", + "PUNCT", + "NOUN_SG", + "PUNCT", + "COORD", + "PAP_SG", + "PREP_A", + "DET_SG", + "NOUN_SG", + "SENT", + "PREP", + "NOUN_INV", + "CM", + "DET_SG", + "NOUN_SG", + "VERB_P3SG", + "PREP_DE", + "NOUN_PL", + "NOUN_INV", + "RELPRO", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PREP_DE", + "NOUN_SG", + "VAUX_P3SG", + "PAP_SG", + "PREP", + "DET_SG", + "NUM", + "NOUN_SG", + "COORD", + "DET_SG", + "NUM", + "NOUN_SG", + "NUM", + "CM", + "PREP_DE", + "NOUN_INV", + "PUNCT", + "PREP", + "DET_SG", + "NUM", + "NOUN_SG", + "COORD", + "DET_SG", + "NUM", + "NOUN_SG", + "NUM", + "PUNCT", + "CM", + "DET_PL", + "NOUN_PL", + "PREP_DE", + "NOUN_PL", + "NOUN_INV", + "NOUN_SG", + "PUNCT", + "PREP", + "DET_SG", + "NUM", + "NOUN_SG", + "COORD", + "DET_SG", + "NUM", + "NOUN_SG", + "NUM", + "PUNCT", + "COORD", + "PREP_DE", + "NOUN_PL", + "PUNCT", + "NOUN_PL", + "PUNCT", + "PUNCT", + "PREP", + "DET_SG", + "NUM", + "NOUN_SG", + "COORD", + "DET_SG", + "NUM", + "NOUN_SG", + "NUM", + "PUNCT", + "CM", + "PREP", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_INV", + "NOUN_INV", + "SENT", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PUNCT", + "PUNCT", + "PRON", + "PC", + "VERB_P3SG", + "PREP_DE", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "COORD", + "ADV", + "PAP_SG", + "CM", + "NEG", + "VERB_PRP", + "CONJQUE", + "DET_PL", + "NOUN_PL", + "ADJ_PL", + "ADV", + "PUNCT", + "ADV", + "SENT", + "DET_SG", + "ADJ_SG", + "NOUN_SG", + "CM", + "NOUN_SG", + "COORD", + "NOUN_SG", + "PREP_DE", + "NOUN_PL", + "ADJ_PL", + "NEG", + "VAUX_P3SG", + "PAP_SG", + "PREP", + "DET_SG", + "NOUN_SG", + "SENT", + "PUNCT", + "PRON", + "VAUX_P3SG", + "PAP_SG", + "PREP_A", + "NOUN_PL", + "VAUX_PRP", + "PAP_SG", + "DET_SG", + "NUM", + "PREP_DE", + "DET_PL", + "NOUN_PL", + "PREP_DE", + "PUNCT", + "NEG", + "ADV", + "PC", + "VERB_INF", + "PUNCT", + "COORD", + "PREP_DE", + "VERB_INF", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PREP", + "NOUN_SG", + "COORD", + "NOUN_INV", + "SENT", + "ADV", + "PREP_DE", + "NUM", + "NOUN_PL", + "PREP_DE", + "NOUN_PL", + "ADJ_PL", + "ADJ_PL", + "DET_SG", + "NOUN_SG", + "PREP", + "DET_SG", + "NOUN_SG", + "CM", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PREP_DE", + "NOUN_SG", + "VERB_P3SG", + "PUNCT", + "PUNCT", + "PRON_P1P2", + "VERB_P1P2", + "VERB_INF", + "CONJQUE", + "DET_PL", + "NOUN_PL", + "RELPRO", + "VAUX_P3PL", + "PAP_SG", + "NUM", + "PREP_DE", + "DET_PL", + "NOUN_PL", + "PC", + "VERB_P3PL", + "SENT", + "PRON_P1P2", + "VAUX_P1P2", + "ADV", + "PAP_SG", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "ADV", + "ADJ2_SG", + "PUNCT", + "PREP", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "ADJ_SG", + "PREP", + "DET_SG", + "NUM", + "NOUN_SG", + "NUM", + "COORD", + "DET_SG", + "NUM", + "NOUN_SG", + "NUM", + "CM", + "PREP", + "PUNCT", + "NOUN_INV", + "PUNCT", + "PREP", + "PC", + "VERB_INF", + "CONJQUE", + "PRON", + "DET_PL", + "NOUN_PL", + "ADV", + "ADJ_PL", + "VAUX_P3PL", + "PAP_PL", + "PUNCT", + "SENT", + "PUNCT", + "NOUN_INV", + "VAUX_P3SG", + "PREP", + "NOUN_SG", + "ADJ_SG", + "PREP", + "DET_PL", + "NOUN_PL", + "ADJ_PL", + "PREP", + "PC", + "VERB_INF", + "CONJQUE", + "PRON", + "DET_PL", + "NOUN_PL", + "ADJ_PL", + "VERB_PRP", + "DET_SG", + "NOUN_SG", + "VAUX_P3PL", + "PAP_PL", + "PUNCT", + "CM", + "VAUX_P3SG", + "PAP_SG", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "SENT", + "NOUN_INV", + "NOUN_INV", + "VAUX_P3SG", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "PREP_DE", + "DET_SG", + "NOUN_SG", + "PUNCT", + "ADJ_SG", + "CM", + "ADV", + "PAP_SG", + "CM", + "COORD", + "ADV", + "ADJ_SG", + "SENT", + "NOUN_SG", + "PREP", + "DET_PL", + "NOUN_PL", + "PUNCT", + "PRON", + "PAP_PL", + "PREP", + "DET_SG", + "NOUN_SG", + "COORD", + "ADV", + "NOUN_INV", + "CM", + "NOUN_INV", + "COORD", + "ADV", + "NUM", + "SYM", + "PC", + "NOUN_INV", + "PUNCT", + "PRON", + "VERB_P3SG", + "ADV", + "PREP", + "PRON", + "PREP_DE", + "NOUN_INV", + "PUNCT", + "NOUN_INV", + "NOUN_INV", + "PUNCT", + "COORD", + "PREP_DE", + "NOUN_PL", + "CM", + "ADV", + "CONJQUE", + "PREP_DE", + "DET_SG", + "NOUN_SG", + "PREP", + "NOUN_PL", + "PUNCT", + "NOUN_INV", + "PUNCT", + "SENT", + "PRON", + "VERB_P3SG", + "ADV", + "PREP_DE", + "NUM", + "NOUN_PL", + "PREP_DE", + "NOUN_PL", + "PREP_DE", + "NOUN_SG", + "PREP_DE", + "NOUN_PL", + "PREP", + "NOUN_SG", + "COORD", + "VERB_P3SG", + "PREP", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_PL", + "PREP_DE", + "NOUN_SG", + "ADJ_SG", + "PREP_A", + "NOUN_PL", + "PREP_DE", + "NOUN_SG", + "NOUN_INV", + "COORD", + "NOUN_INV", + "SENT", + "DET_SG", + "NOUN_SG", + "VAUX_P3SG", + "DET_PL", + "NOUN_PL", + "PREP", + "NOUN_INV", + "CM", + "RELPRO", + "PRON", + "PREP_DE", + "NOUN_INV", + "CM", + "PRON", + "PREP", + "NOUN_INV", + "PREP_A", + "NOUN_INV", + "PUNCT", + "NOUN_INV", + "PUNCT", + "CM", + "PRON", + "PREP_A", + "NOUN_INV", + "PREP", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "DET_SG", + "NOUN_INV", + "CM", + "RELPRO", + "VERB_P3SG", + "ADV", + "NUM", + "NOUN_PL", + "PREP_DE", + "PUNCT", + "NOUN_PL", + "PUNCT", + "PREP", + "NOUN_SG", + "CM", + "COORD", + "ADV", + "DET_SG", + "PREP", + "NOUN_INV", + "SENT", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "CM", + "ADV", + "PAP_SG", + "CM", + "VERB_P3SG", + "ADV", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_PL", + "COORD", + "PREP_DE", + "NOUN_PL", + "SENT", + "PRON", + "VAUX_P3PL", + "PAP_PL", + "ADJ_PL", + "CM", + "COMME", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "NOUN_SG", + "ADJ_SG", + "PREP", + "DET_PL", + "NOUN_PL", + "ADJ_PL", + "COORD", + "DET_SG", + "NOUN_SG", + "PREP_DE", + "ADJ_PL", + "NOUN_PL", + "RELPRO", + "DET_PL", + "NOUN_PL", + "PREP_DE", + "NOUN_INV", + "CM", + "PREP", + "NUM", + "SENT", + "ADV", + "DET_SG", + "NOUN_SG", + "ADJ_SG", + "VAUX_P3SG", + "VAUX_PAP", + "PAP_SG", + "PREP", + "DET_PL", + "NOUN_PL", + "PREP", + "NOUN_INV", + "PREP_A", + "NOUN_INV", + "SENT" ], - "requestId": "cc8adc05-b9f9-4c9d-b9fb-0e80536ce175", - "timers": { - "rblJe": 14, - "rliJe": 4, - "textExtractor": 103, - "urlContentDownloader": 140 - } + "tokens": [ + "Message", + "en", + "cas", + "d'", + "erreur", + "au", + "focus", + "sur", + "le", + "champ", + "Veuillez", + "saisir", + "le", + "code", + "de", + "sécurité", + "ci", + "-", + "dessous", + ":", + "Ajouter", + "aux", + "favoris", + "Cet", + "article", + "a", + "été", + "ajouté", + "dans", + "vos", + "favoris", + ".", + "C'", + "est", + "un", + "petit", + "bout", + "de", + "plastique", + "qui", + "met", + "le", + "géant", + "Mars", + "sens", + "dessus", + "dessous", + ".", + "Le", + "groupe", + "a", + "ordonné", + "mardi", + "un", + "gigantesque", + "rappel", + "de", + "produits", + "en", + "Europe", + "et", + "en", + "France", + ".", + "En", + "tout", + "55", + "pays", + "sont", + "concernés", + ",", + "après", + "qu'", + "un", + "consommateur", + "a", + "trouvé", + "donc", + "\"", + "un", + "petit", + "bout", + "de", + "plastique", + "\"", + "dans", + "un", + "produit", + ".", + "En", + "France", + ",", + "le", + "rappel", + "concerne", + "des", + "barres", + "Mars", + "et", + "Snickers", + ",", + "et", + "des", + "bonbons", + "\"", + "Celebrations", + "\"", + ",", + "selon", + "un", + "communiqué", + "de", + "Mars", + "France", + ".", + "Le", + "groupe", + "dit", + "également", + "rappeler", + "certains", + "de", + "ses", + "produits", + "en", + "Allemagne", + ",", + "aux", + "Pays", + "-", + "Bas", + ",", + "au", + "Royaume", + "-", + "Uni", + ",", + "en", + "Belgique", + ",", + "en", + "Italie", + "et", + "en", + "Espagne", + ",", + "mais", + "avec", + "des", + "références", + "différentes", + "selon", + "les", + "pays", + ".", + "\"", + "De", + "ce", + "que", + "nous", + "savons", + ",", + "55", + "pays", + "sont", + "concernés", + "\"", + ",", + "a", + "déclaré", + "à", + "l'", + "AFP", + "Eline", + "Bijveld", + ",", + "une", + "responsable", + "du", + "groupe", + "pour", + "les", + "Pays", + "-", + "Bas", + ",", + "ajoutant", + "que", + "le", + "rappel", + "concerne", + "\"", + "uniquement", + "la", + "production", + "aux", + "Pays", + "-", + "Bas", + "\"", + ",", + "dans", + "une", + "usine", + "Mars", + "de", + "la", + "ville", + "Veghel", + "(", + "sud", + ")", + "et", + "destinée", + "à", + "l'", + "exportation", + ".", + "En", + "France", + ",", + "le", + "rappel", + "concerne", + "des", + "barres", + "Mars", + "dont", + "la", + "date", + "limite", + "de", + "consommation", + "est", + "comprise", + "entre", + "le", + "4", + "septembre", + "et", + "le", + "16", + "octobre", + "2016", + ",", + "des", + "Snickers", + "(", + "entre", + "le", + "3", + "juillet", + "et", + "le", + "21", + "août", + "2016", + ")", + ",", + "des", + "paquets", + "de", + "miniatures", + "Mix", + "tubo", + "(", + "entre", + "le", + "10", + "juillet", + "et", + "le", + "11", + "septembre", + "2016", + ")", + "et", + "des", + "bonbons", + "\"", + "Celebrations", + "\"", + "(", + "entre", + "le", + "19", + "juin", + "et", + "le", + "21", + "août", + "2016", + ")", + ",", + "selon", + "un", + "communiqué", + "de", + "Mars", + "France", + ".", + "Le", + "groupe", + "précise", + ":", + "\"", + "Il", + "s'", + "agit", + "d'", + "un", + "incident", + "isolé", + "et", + "strictement", + "délimité", + ",", + "ne", + "concernant", + "que", + "les", + "produits", + "mentionnés", + "ci", + "-", + "dessus", + ".", + "Aucun", + "autre", + "format", + ",", + "référence", + "ou", + "variété", + "de", + "barres", + "chocolatées", + "n'", + "est", + "concerné", + "par", + "ce", + "rappel", + ".", + "\"", + "Il", + "est", + "conseillé", + "aux", + "consommateurs", + "ayant", + "acheté", + "l'", + "un", + "de", + "ces", + "produits", + "de", + "\"", + "ne", + "pas", + "le", + "consommer", + "\"", + "et", + "de", + "contacter", + "le", + "service", + "consommateur", + "par", + "téléphone", + "ou", + "Internet", + ".", + "Plus", + "de", + "10", + "millions", + "de", + "barres", + "chocolatées", + "produites", + "chaque", + "jour", + "Dans", + "un", + "communiqué", + ",", + "la", + "branche", + "allemande", + "du", + "groupe", + "explique", + ":", + "\"", + "Nous", + "voulons", + "éviter", + "que", + "les", + "clients", + "qui", + "ont", + "acheté", + "un", + "de", + "ces", + "produits", + "le", + "consomment", + ".", + "Nous", + "avons", + "délibérément", + "choisi", + "une", + "plage", + "de", + "production", + "très", + "longue", + "(", + "avec", + "une", + "date", + "de", + "péremption", + "comprise", + "entre", + "le", + "19", + "juin", + "2016", + "et", + "le", + "8", + "janvier", + "2017", + ",", + "outre", + "-", + "Rhin", + ")", + "pour", + "nous", + "assurer", + "que", + "tous", + "les", + "produits", + "potentiellement", + "concernés", + "seront", + "rappelés", + "\"", + ".", + "\"", + "Mars", + "est", + "en", + "contact", + "étroit", + "avec", + "les", + "autorités", + "sanitaires", + "pour", + "s'", + "assurer", + "que", + "toutes", + "les", + "dispositions", + "légales", + "entourant", + "le", + "rappel", + "sont", + "respectées", + "\"", + ",", + "a", + "assuré", + "la", + "filiale", + "allemande", + ".", + "Mars", + "Inc.", + "est", + "un", + "géant", + "américain", + "de", + "l'", + "agro", + "-", + "alimentaire", + ",", + "non", + "coté", + ",", + "et", + "très", + "secret", + ".", + "Connu", + "pour", + "ses", + "confiseries", + "-", + "celles", + "touchées", + "par", + "le", + "rappel", + "mais", + "aussi", + "Balisto", + ",", + "Twix", + "ou", + "encore", + "M", + "&", + "M'", + "s", + "-", + "il", + "fabrique", + "aussi", + "entre", + "autres", + "du", + "riz", + "(", + "Uncle", + "Ben's", + ")", + "et", + "des", + "pâtes", + ",", + "ainsi", + "que", + "de", + "la", + "nourriture", + "pour", + "animaux", + "(", + "Whiskas", + ")", + ".", + "Il", + "réalise", + "plus", + "de", + "30", + "milliards", + "de", + "dollars", + "de", + "chiffre", + "d'", + "affaires", + "par", + "an", + "et", + "joue", + "dans", + "la", + "cour", + "des", + "grands", + "du", + "secteur", + "agroalimentaire", + "aux", + "côtés", + "de", + "Kraft", + "Foods", + "et", + "Nestlé", + ".", + "Le", + "groupe", + "a", + "plusieurs", + "usines", + "en", + "Europe", + ",", + "dont", + "celle", + "de", + "Veghel", + ",", + "une", + "en", + "France", + "à", + "Haguenau", + "(", + "Alsace", + ")", + ",", + "une", + "à", + "Viersen", + "dans", + "l'", + "ouest", + "de", + "l'", + "Allemagne", + ",", + "qui", + "produit", + "quelque", + "10", + "millions", + "de", + "\"", + "snacks", + "\"", + "par", + "jour", + ",", + "ou", + "encore", + "une", + "en", + "Pologne", + ".", + "L'", + "industrie", + "agroalimentaire", + ",", + "étroitement", + "surveillée", + ",", + "fait", + "régulièrement", + "l'", + "objet", + "de", + "scandales", + "et", + "de", + "rappels", + ".", + "Certains", + "sont", + "restés", + "mémorables", + ",", + "comme", + "l'", + "affaire", + "de", + "la", + "viande", + "de", + "cheval", + "trouvée", + "dans", + "des", + "lasagnes", + "surgelées", + "et", + "une", + "kyrielle", + "d'", + "autres", + "produits", + "dont", + "les", + "boulettes", + "d'", + "Ikea", + ",", + "en", + "2013", + ".", + "Récemment", + "une", + "dent", + "humaine", + "a", + "été", + "trouvée", + "dans", + "des", + "frites", + "chez", + "McDonald's", + "au", + "Japon", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/fra-url-sentiment.json b/api/src/test/mock-data/response/fra-url-sentiment.json index 448e26924a..0e5ffd4658 100644 --- a/api/src/test/mock-data/response/fra-url-sentiment.json +++ b/api/src/test/mock-data/response/fra-url-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "French is not supported by Rosette Sentiment Analyzer", - "requestId": "b2f2f3f8-b1db-4a3b-b44e-450793ef2733" + "message": "Unsupported language: French" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/info.json b/api/src/test/mock-data/response/info.json index 2d30960b1d..24d93c1034 100644 --- a/api/src/test/mock-data/response/info.json +++ b/api/src/test/mock-data/response/info.json @@ -1,7 +1,6 @@ { - "buildNumber": "6bafb29d", - "buildTime": "2015.05.08_12:31:26", + "buildNumber": "", + "buildTime": "20160223", "name": "Rosette API", - "version": "0.5.0", - "versionChecked": true -} + "version": "0.9.100.v20160223042613" +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-doc-categories.json b/api/src/test/mock-data/response/jpn-doc-categories.json index 22086bccd5..96141250d7 100644 --- a/api/src/test/mock-data/response/jpn-doc-categories.json +++ b/api/src/test/mock-data/response/jpn-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Japanese is not supported by Rosette Categorizer", - "requestId": "01656884-41ba-4a87-b40a-37f78ace7a23" + "message": "JAPANESE is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-doc-entities.json b/api/src/test/mock-data/response/jpn-doc-entities.json index 68cdab5350..710871b0be 100644 --- a/api/src/test/mock-data/response/jpn-doc-entities.json +++ b/api/src/test/mock-data/response/jpn-doc-entities.json @@ -1,298 +1,60 @@ { "entities": [ { - "confidence": 0.005091860890388489, "count": 4, - "indocChainId": 11, - "mention": "イギリス", - "normalized": "イギリス", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 3, - "indocChainId": 29, - "mention": "下院", - "normalized": "下院", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 3, - "indocChainId": 37, - "mention": "上院", - "normalized": "上院", - "type": "ORGANIZATION" - }, - { - "confidence": 0.007921993732452393, - "count": 2, - "indocChainId": 2, - "mention": "アイルランド", - "normalized": "アイルランド", - "type": "LOCATION" - }, - { - "confidence": 0.029875636100769043, - "count": 2, - "indocChainId": 3, - "mention": "ジョセフ・P・ケネディ", - "normalized": "ジョセフ・P・ケネディ", - "type": "PERSON" - }, - { - "confidence": 0.009616047143936157, - "count": 2, - "indocChainId": 3, - "mention": "ジョセフ", - "normalized": "ジョセフ", - "type": "PERSON" - }, - { - "confidence": 0.005369991064071655, - "count": 2, - "indocChainId": 3, - "mention": "ケネディ", - "normalized": "ケネディ", + "indocChainId": 4, + "mention": "鳩山", + "normalized": "鳩山", "type": "PERSON" }, { - "confidence": 0.007853776216506958, "count": 2, - "indocChainId": 5, - "mention": "ボストン", - "normalized": "ボストン", - "type": "LOCATION" - }, - { - "confidence": 0.007853776216506958, - "count": 2, - "indocChainId": 6, - "mention": "市長", - "normalized": "市長", - "type": "TITLE" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 14, - "mention": "ハーバード大学", - "normalized": "ハーバード大学", + "indocChainId": 1, + "mention": "衆議院", + "normalized": "衆議院", "type": "ORGANIZATION" }, { - "confidence": 1.0, "count": 2, - "indocChainId": 32, - "mention": "共和党", - "normalized": "共和党", + "indocChainId": 2, + "mention": "自民党", + "normalized": "自民党", "type": "ORGANIZATION" }, { - "confidence": 0.015272259712219238, "count": 1, "indocChainId": 0, - "mention": "マサチューセッツ州", - "normalized": "マサチューセッツ州", - "type": "LOCATION" - }, - { - "confidence": 0.00015401840209960938, - "count": 1, - "indocChainId": 1, - "mention": "ブルックライン", - "normalized": "ブルックライン", - "type": "LOCATION" - }, - { - "confidence": 0.0026397705078125, - "count": 1, - "indocChainId": 4, - "mention": "シニア", - "normalized": "シニア", - "type": "ORGANIZATION" - }, - { - "confidence": 0.019479751586914062, - "count": 1, - "indocChainId": 7, - "mention": "ジョン・F・フィッツジェラルド", - "normalized": "ジョン・F・フィッツジェラルド", + "mention": "中川一郎", + "normalized": "中川一郎", "type": "PERSON" }, { - "confidence": 0.005173742771148682, "count": 1, - "indocChainId": 8, - "mention": "チョート・スクール", - "normalized": "チョート・スクール", + "indocChainId": 3, + "mention": "田中", + "normalized": "田中", "type": "PERSON" }, { - "confidence": 0.01989346742630005, - "count": 1, - "indocChainId": 9, - "mention": "コネチカット州", - "normalized": "コネチカット州", - "type": "LOCATION" - }, - { - "confidence": 0.027547240257263184, - "count": 1, - "indocChainId": 10, - "mention": "ウォリングフォード", - "normalized": "ウォリングフォード", - "type": "LOCATION" - }, - { - "confidence": 0.0014181733131408691, - "count": 1, - "indocChainId": 12, - "mention": "ロンドン", - "normalized": "ロンドン", - "type": "LOCATION" - }, - { - "confidence": 0.0014181733131408691, - "count": 1, - "indocChainId": 13, - "mention": "オブ・エコノミクス", - "normalized": "オブ・エコノミクス", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 15, - "mention": "プリンストン大学", - "normalized": "プリンストン大学", - "type": "ORGANIZATION" - }, - { - "confidence": 0.012808084487915039, "count": 1, - "indocChainId": 17, - "mention": "ヨーロッパ", - "normalized": "ヨーロッパ", - "type": "LOCATION" - }, - { - "confidence": 0.012429237365722656, - "count": 1, - "indocChainId": 18, - "mention": "大使", - "normalized": "大使", - "type": "TITLE" - }, - { - "confidence": 0.010786056518554688, - "count": 1, - "indocChainId": 20, - "mention": "ミュンヘン", - "normalized": "ミュンヘン", + "indocChainId": 5, + "mention": "北海道", + "normalized": "北海道", "type": "LOCATION" }, { - "confidence": 1.0, "count": 1, - "indocChainId": 23, - "mention": "ハーバード", - "normalized": "ハーバード", - "type": "ORGANIZATION" - }, - { - "confidence": 0.0019164681434631348, - "count": 1, - "indocChainId": 25, - "mention": "ジェームズ・M・カーレイ", - "normalized": "ジェームズ・M・カーレイ", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 28, - "mention": "民主党", - "normalized": "民主党", - "type": "ORGANIZATION" - }, - { - "confidence": 0.04107320308685303, - "count": 1, - "indocChainId": 36, - "mention": "ジョセフ・マッカーシー", - "normalized": "ジョセフ・マッカーシー", - "type": "PERSON" - }, - { - "confidence": 0.0024489164352416992, - "count": 1, - "indocChainId": 38, - "mention": "赤狩り", - "normalized": "赤狩り", - "type": "ORGANIZATION" - }, - { - "confidence": 0.01878488063812256, - "count": 1, - "indocChainId": 39, - "mention": "エレノア・ルーズヴェルト", - "normalized": "エレノア・ルーズヴェルト", - "type": "PERSON" - }, - { - "confidence": 0.010483860969543457, - "count": 1, - "indocChainId": 44, - "mention": "ヘンリー・カボット・ロッジ", - "normalized": "ヘンリー・カボット・ロッジ", + "indocChainId": 7, + "mention": "三枝三郎", + "normalized": "三枝三郎", "type": "PERSON" }, { - "confidence": 0.03342700004577637, "count": 1, - "indocChainId": 45, - "mention": "都市", - "normalized": "都市", - "type": "LOCATION" - }, - { - "confidence": 0.021946430206298828, - "count": 1, - "indocChainId": 46, - "mention": "フランス", - "normalized": "フランス", - "type": "LOCATION" - }, - { - "confidence": 0.009429752826690674, - "count": 1, - "indocChainId": 47, - "mention": "ジャクリーン・リー・ブーヴィエ", - "normalized": "ジャクリーン・リー・ブーヴィエ", + "indocChainId": 10, + "mention": "高橋辰夫", + "normalized": "高橋辰夫", "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 49, - "mention": "黒人", - "normalized": "黒人", - "type": "NATIONALITY" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 50, - "mention": "http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3", - "normalized": "http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3", - "type": "IDENTIFIER:URL" } - ], - "requestId": "d32a9669-1a57-40ee-8f8d-893d2c9ac20f", - "timers": { - "rblJe": 27, - "rexJe": 67, - "rliJe": 3 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/jpn-doc-entities_linked.json b/api/src/test/mock-data/response/jpn-doc-entities_linked.json index b0278e4861..25b6000eeb 100644 --- a/api/src/test/mock-data/response/jpn-doc-entities_linked.json +++ b/api/src/test/mock-data/response/jpn-doc-entities_linked.json @@ -1,191 +1,40 @@ { "entities": [ { - "confidence": 0.08150000324031924, - "entityId": "Q771", + "confidence": 0.687975532428173, + "entityId": "Q615236", "indocChainId": 0, - "mention": "マサチューセッツ州" + "mention": "中川一郎" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 1, - "mention": "ブルックライン" - }, - { - "confidence": 0.16966375669187272, - "entityId": "NEW-CLUSTER", + "confidence": 0.7269659929012503, + "entityId": "Q232595", "indocChainId": 2, - "mention": "アイルランド" - }, - { - "confidence": 0.100839351669203, - "entityId": "Q313696", - "indocChainId": 3, - "mention": "ジョセフ・P・ケネディ" + "mention": "自民党" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.2799705654308549, + "entityId": "Q131077", "indocChainId": 4, - "mention": "シニア" + "mention": "鳩山" }, { - "confidence": 0.033937314067048835, - "entityId": "Q100", + "confidence": 0.5600411818559178, + "entityId": "Q35581", "indocChainId": 5, - "mention": "ボストン" + "mention": "北海道" }, { - "confidence": 0.028870970503669564, - "entityId": "Q966182", + "confidence": 0.5579243058163901, + "entityId": "Q11355903", "indocChainId": 7, - "mention": "ジョン・F・フィッツジェラルド" - }, - { - "confidence": 0.07038684983544333, - "entityId": "NEW-CLUSTER", - "indocChainId": 8, - "mention": "チョート・スクール" + "mention": "三枝三郎" }, { - "confidence": 0.11103028837021027, - "entityId": "NEW-CLUSTER", - "indocChainId": 9, - "mention": "コネチカット州" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.5880297157590771, + "entityId": "Q11671650", "indocChainId": 10, - "mention": "ウォリングフォード" - }, - { - "confidence": 0.6875075771342374, - "entityId": "NEW-CLUSTER", - "indocChainId": 11, - "mention": "イギリス" - }, - { - "confidence": 0.12140031445941092, - "entityId": "NEW-CLUSTER", - "indocChainId": 12, - "mention": "ロンドン" - }, - { - "confidence": 0.6673219386000714, - "entityId": "NEW-CLUSTER", - "indocChainId": 13, - "mention": "オブ・エコノミクス" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 14, - "mention": "ハーバード大学" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 15, - "mention": "プリンストン大学" - }, - { - "confidence": 0.06520242712260711, - "entityId": "NEW-CLUSTER", - "indocChainId": 17, - "mention": "ヨーロッパ" - }, - { - "confidence": 0.040417151292228386, - "entityId": "NEW-CLUSTER", - "indocChainId": 20, - "mention": "ミュンヘン" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 23, - "mention": "ハーバード" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 25, - "mention": "ジェームズ・M・カーレイ" - }, - { - "confidence": 0.11350495815962937, - "entityId": "Q29552", - "indocChainId": 28, - "mention": "民主党" - }, - { - "confidence": 0.3333333632677906, - "entityId": "Q11005", - "indocChainId": 29, - "mention": "下院" - }, - { - "confidence": 0.3912032605265454, - "entityId": "Q29468", - "indocChainId": 32, - "mention": "共和党" - }, - { - "confidence": 0.1206641893744556, - "entityId": "NEW-CLUSTER", - "indocChainId": 36, - "mention": "ジョセフ・マッカーシー" - }, - { - "confidence": 0.3074277973114097, - "entityId": "Q11007", - "indocChainId": 37, - "mention": "上院" - }, - { - "confidence": 0.4368364492353905, - "entityId": "NEW-CLUSTER", - "indocChainId": 38, - "mention": "赤狩り" - }, - { - "confidence": 0.04372667301381498, - "entityId": "NEW-CLUSTER", - "indocChainId": 39, - "mention": "エレノア・ルーズヴェルト" - }, - { - "confidence": 0.5769489100481775, - "entityId": "NEW-CLUSTER", - "indocChainId": 44, - "mention": "ヘンリー・カボット・ロッジ" - }, - { - "confidence": 0.5370148902457523, - "entityId": "Q515", - "indocChainId": 45, - "mention": "都市" - }, - { - "confidence": 0.03999527640034162, - "entityId": "NEW-CLUSTER", - "indocChainId": 46, - "mention": "フランス" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 47, - "mention": "ジャクリーン・リー・ブーヴィエ" + "mention": "高橋辰夫" } - ], - "requestId": "3e0c19b1-b6c1-4a75-b67c-45a0d428b2a7", - "timers": { - "rblJe": 13, - "res": 2505, - "rexJe": 22, - "rliJe": 5 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-doc-language.json b/api/src/test/mock-data/response/jpn-doc-language.json index 7685dc1baf..ebeb69be60 100644 --- a/api/src/test/mock-data/response/jpn-doc-language.json +++ b/api/src/test/mock-data/response/jpn-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.2908416241876388, + "confidence": 1.0, "language": "jpn" - }, - { - "confidence": 0.004286980665607287, - "language": "zho" - }, - { - "confidence": 0.004103465870464618, - "language": "zho" - }, - { - "confidence": 2.1297604570036377e-05, - "language": "ron" - }, - { - "confidence": 2.0531535010803736e-05, - "language": "por" } - ], - "requestId": "db66a1df-b686-4e38-b12c-0c5994e6e5a0", - "timers": { - "rliJe": 2 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-doc-morphology_complete.json b/api/src/test/mock-data/response/jpn-doc-morphology_complete.json index 288e8c8003..5107702921 100644 --- a/api/src/test/mock-data/response/jpn-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/jpn-doc-morphology_complete.json @@ -1,8890 +1,1616 @@ { - "compounds": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "hanReadings": [ - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "マサチューセッツ" - ], - "text": "マサチューセッツ" - }, - { - "hanReadings": [ - "ス" - ], - "text": "州" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "アイルランド" - ], - "text": "アイルランド" - }, - { - "hanReadings": [ - "ケイ" - ], - "text": "系" - }, - { - "hanReadings": [ - "イミン" - ], - "text": "移民" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "シソン" - ], - "text": "子孫" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "トウシ" - ], - "text": "投資" - }, - { - "hanReadings": [ - "カ" - ], - "text": "家" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジョセフ" - ], - "text": "ジョセフ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ピー" - ], - "text": "P" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ケネディ" - ], - "text": "ケネディ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "シニア" - ], - "text": "シニア" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジナン" - ], - "text": "次男" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "ウマレ" - ], - "text": "生まれ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ナマエ" - ], - "text": "名前" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ハハカタ" - ], - "text": "母方" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ソフ" - ], - "text": "祖父" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "ボストン" - ], - "text": "ボストン" - }, - { - "hanReadings": [ - "シチョウ" - ], - "text": "市長" - }, - { - "hanReadings": [ - "モ" - ], - "text": "も" - }, - { - "hanReadings": [ - "ツトメ" - ], - "text": "勤め" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ジョン" - ], - "text": "ジョン" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "エフ" - ], - "text": "F" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "チナム" - ], - "text": "ちなむ" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "サイ" - ], - "text": "歳" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "トキ" - ], - "text": "とき" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "スクール" - ], - "text": "スクール" - }, - { - "hanReadings": [ - "ス" - ], - "text": "州" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "キシュク" - ], - "text": "寄宿" - }, - { - "hanReadings": [ - "ガッコウ" - ], - "text": "学校" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ニュウガク" - ], - "text": "入学" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ソノ" - ], - "text": "その" - }, - { - "hanReadings": [ - "コウ" - ], - "text": "後" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "イギリス" - ], - "text": "イギリス" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ロンドン" - ], - "text": "ロンドン" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "スクール" - ], - "text": "スクール" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "オブ" - ], - "text": "オブ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ネンカン" - ], - "text": "年間" - }, - { - "hanReadings": [ - "リュウガク" - ], - "text": "留学" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "キコク" - ], - "text": "帰国" - }, - { - "hanReadings": [ - "コウ" - ], - "text": "後" - }, - { - "hanReadings": [ - "ハーバード" - ], - "text": "ハーバード" - }, - { - "hanReadings": [ - "ダイガク" - ], - "text": "大学" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ニュウガク" - ], - "text": "入学" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ミトメ" - ], - "text": "認め" - }, - { - "hanReadings": [ - "ラレ" - ], - "text": "られ" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "モノ" - ], - "text": "もの" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "シタシイ" - ], - "text": "親しい" - }, - { - "hanReadings": [ - "ユウジン" - ], - "text": "友人" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "シンガク" - ], - "text": "進学" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ギメ" - ], - "text": "決め" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "プリンストン" - ], - "text": "プリンストン" - }, - { - "hanReadings": [ - "ダイガク" - ], - "text": "大学" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ニュウガク" - ], - "text": "入学" - }, - { - "hanReadings": [ - "スル" - ], - "text": "する" - }, - { - "hanReadings": [ - "コト" - ], - "text": "こと" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "シカシ" - ], - "text": "しかし" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "クリスマス" - ], - "text": "クリスマス" - }, - { - "hanReadings": [ - "キュウカ" - ], - "text": "休暇" - }, - { - "hanReadings": [ - "チュウ" - ], - "text": "中" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "カカッ" - ], - "text": "かかっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "オウダン" - ], - "text": "黄疸" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "タメ" - ], - "text": "ため" - }, - { - "hanReadings": [ - "タイガク" - ], - "text": "退学" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イル" - ], - "text": "いる" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "アキ" - ], - "text": "秋" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ハーバード" - ], - "text": "ハーバード" - }, - { - "hanReadings": [ - "ダイガク" - ], - "text": "大学" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "テンコウ" - ], - "text": "転校" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ザイガク" - ], - "text": "在学" - }, - { - "hanReadings": [ - "ナカ" - ], - "text": "中" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "フットボール" - ], - "text": "フットボール" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "シアイ" - ], - "text": "試合" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "セナカ" - ], - "text": "背中" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ヒドク" - ], - "text": "ひどく" - }, - { - "hanReadings": [ - "イタメ" - ], - "text": "痛め" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ヨーロッパ" - ], - "text": "ヨーロッパ" - }, - { - "hanReadings": [ - "ヘ" - ], - "text": "へ" - }, - { - "hanReadings": [ - "ド" - ], - "text": "度" - }, - { - "hanReadings": [ - "リョコウ" - ], - "text": "旅行" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "オリ" - ], - "text": "おり" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "タビ" - ], - "text": "度" - }, - { - "hanReadings": [ - "メ" - ], - "text": "目" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "リョコウ" - ], - "text": "旅行" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "チチオヤ" - ], - "text": "父親" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "タイシ" - ], - "text": "大使" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ツトメ" - ], - "text": "務め" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "イギリス" - ], - "text": "イギリス" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "オトズレレ" - ], - "text": "訪れ" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イル" - ], - "text": "いる" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ガツ" - ], - "text": "月" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ミュンヘン" - ], - "text": "ミュンヘン" - }, - { - "hanReadings": [ - "キョウテイ" - ], - "text": "協定" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "オケ" - ], - "text": "おけ" - }, - { - "hanReadings": [ - "ル" - ], - "text": "る" - }, - { - "hanReadings": [ - "イギリス" - ], - "text": "イギリス" - }, - { - "hanReadings": [ - "ガイコウ" - ], - "text": "外交" - }, - { - "hanReadings": [ - "セイサク" - ], - "text": "政策" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ブンセキ" - ], - "text": "分析" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ツイ" - ], - "text": "つい" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ソツロン" - ], - "text": "卒論" - }, - { - "hanReadings": [ - "『" - ], - "text": "『" - }, - { - "hanReadings": [ - "イギリス" - ], - "text": "イギリス" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ナゼ" - ], - "text": "なぜ" - }, - { - "hanReadings": [ - "ネムッ" - ], - "text": "眠っ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "カ" - ], - "text": "か" - }, - { - "hanReadings": [ - "』" - ], - "text": "』" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ガキ" - ], - "text": "書き" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ハーバード" - ], - "text": "ハーバード" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ユウトウ" - ], - "text": "優等" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "ソツギョウ" - ], - "text": "卒業" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ダイ" - ], - "text": "第" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "二" - }, - { - "hanReadings": [ - "ジ" - ], - "text": "次" - }, - { - "hanReadings": [ - "セカイ" - ], - "text": "世界" - }, - { - "hanReadings": [ - "タイセン" - ], - "text": "大戦" - }, - { - "hanReadings": [ - "コウ" - ], - "text": "後" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "カレ" - ], - "text": "彼" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "センシ" - ], - "text": "戦死" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "アニ" - ], - "text": "兄" - }, - { - "hanReadings": [ - "ジョセフ" - ], - "text": "ジョセフ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ピー" - ], - "text": "P" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ケネディ" - ], - "text": "ケネディ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ジュニア" - ], - "text": "ジュニア" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "カワリ" - ], - "text": "代わり" - }, - { - "hanReadings": [ - "セイカイ" - ], - "text": "政界" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "イッ" - ], - "text": "入っ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ジェームズ" - ], - "text": "ジェームズ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "メガ" - ], - "text": "M" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "カー" - ], - "text": "カー" - }, - { - "hanReadings": [ - "レイ" - ], - "text": "レイ" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "ボストン" - ], - "text": "ボストン" - }, - { - "hanReadings": [ - "シチョウ" - ], - "text": "市長" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ナル" - ], - "text": "なる" - }, - { - "hanReadings": [ - "タメ" - ], - "text": "ため" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ミンシュ" - ], - "text": "民主" - }, - { - "hanReadings": [ - "トウ" - ], - "text": "党" - }, - { - "hanReadings": [ - "カイン" - ], - "text": "下院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ジショク" - ], - "text": "辞職" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "トキ" - ], - "text": "時" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ケネディ" - ], - "text": "ケネディ" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ソノ" - ], - "text": "その" - }, - { - "hanReadings": [ - "ギセキ" - ], - "text": "議席" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "カケ" - ], - "text": "かけ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ホケツ" - ], - "text": "補欠" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "タテ" - ], - "text": "立" - }, - { - "hanReadings": [ - "コウホ" - ], - "text": "候補" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "チャン" - ], - "text": "父" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジョセフ" - ], - "text": "ジョセフ" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "ジツギョウ" - ], - "text": "実業" - }, - { - "hanReadings": [ - "カ" - ], - "text": "家" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "アッ" - ], - "text": "あっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "コト" - ], - "text": "こと" - }, - { - "hanReadings": [ - "モ" - ], - "text": "も" - }, - { - "hanReadings": [ - "アリ" - ], - "text": "あり" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "セイジ" - ], - "text": "政治" - }, - { - "hanReadings": [ - "シキン" - ], - "text": "資金" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "コマラ" - ], - "text": "困ら" - }, - { - "hanReadings": [ - "ナカッ" - ], - "text": "なかっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ジツゲン" - ], - "text": "実現" - }, - { - "hanReadings": [ - "フ" - ], - "text": "不" - }, - { - "hanReadings": [ - "カノウ" - ], - "text": "可能" - }, - { - "hanReadings": [ - "ナ" - ], - "text": "な" - }, - { - "hanReadings": [ - "コウヤク" - ], - "text": "公約" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "スル" - ], - "text": "する" - }, - { - "hanReadings": [ - "ヒツヨウ" - ], - "text": "必要" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ナク" - ], - "text": "なく" - }, - { - "hanReadings": [ - "リソウ" - ], - "text": "理想" - }, - { - "hanReadings": [ - "シュギ" - ], - "text": "主義" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "カタル" - ], - "text": "語る" - }, - { - "hanReadings": [ - "コト" - ], - "text": "こと" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "デキ" - ], - "text": "でき" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ナガク" - ], - "text": "長く" - }, - { - "hanReadings": [ - "セイリョク" - ], - "text": "精力" - }, - { - "hanReadings": [ - "テキ" - ], - "text": "的" - }, - { - "hanReadings": [ - "ナ" - ], - "text": "な" - }, - { - "hanReadings": [ - "キャンペーン" - ], - "text": "キャンペーン" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "マツ" - ], - "text": "末" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "タイサ" - ], - "text": "大差" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "キョウワ" - ], - "text": "共和" - }, - { - "hanReadings": [ - "トウ" - ], - "text": "党" - }, - { - "hanReadings": [ - "コウホ" - ], - "text": "候補" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "カチ" - ], - "text": "勝ち" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "サイ" - ], - "text": "歳" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "カイン" - ], - "text": "下院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "ナッ" - ], - "text": "なっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "トウショ" - ], - "text": "当初" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "チャン" - ], - "text": "父" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジョセフ" - ], - "text": "ジョセフ" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "コネ" - ], - "text": "コネ" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "アッ" - ], - "text": "あっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "オナジ" - ], - "text": "同じ" - }, - { - "hanReadings": [ - "アイルランド" - ], - "text": "アイルランド" - }, - { - "hanReadings": [ - "ケイ" - ], - "text": "系" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジョセフ" - ], - "text": "ジョセフ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "マッカーシー" - ], - "text": "マッカーシー" - }, - { - "hanReadings": [ - "ジョウイン" - ], - "text": "上院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "アカガリ" - ], - "text": "赤狩り" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "キョウリョク" - ], - "text": "協力" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "リベラル" - ], - "text": "リベラル" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "派" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ソノ" - ], - "text": "その" - }, - { - "hanReadings": [ - "コト" - ], - "text": "こと" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ワスレ" - ], - "text": "忘れ" - }, - { - "hanReadings": [ - "ズ" - ], - "text": "ず" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "アトアト" - ], - "text": "後々" - }, - { - "hanReadings": [ - "マデ" - ], - "text": "まで" - }, - { - "hanReadings": [ - "ケネディ" - ], - "text": "ケネディ" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "キラッ" - ], - "text": "嫌っ" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "カイン" - ], - "text": "下院" - }, - { - "hanReadings": [ - "キ" - ], - "text": "期" - }, - { - "hanReadings": [ - "メ" - ], - "text": "目" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ジョウイン" - ], - "text": "上院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "シュツバ" - ], - "text": "出馬" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ヤク" - ], - "text": "約" - }, - { - "hanReadings": [ - "ヒョウ" - ], - "text": "票" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "タイサ" - ], - "text": "大差" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "キョウワ" - ], - "text": "共和" - }, - { - "hanReadings": [ - "トウ" - ], - "text": "党" - }, - { - "hanReadings": [ - "コウホ" - ], - "text": "候補" - }, - { - "hanReadings": [ - "ヘンリー" - ], - "text": "ヘンリー" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ロッジ" - ], - "text": "ロッジ" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ジュニア" - ], - "text": "ジュニア" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ヤブッ" - ], - "text": "破っ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "イゴ" - ], - "text": "以後" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "カレ" - ], - "text": "彼" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "シジ" - ], - "text": "支持" - }, - { - "hanReadings": [ - "キバン" - ], - "text": "基盤" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ホクブ" - ], - "text": "北部" - }, - { - "hanReadings": [ - "トシ" - ], - "text": "都市" - }, - { - "hanReadings": [ - "ケン" - ], - "text": "圏" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "リベラル" - ], - "text": "リベラル" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "派" - }, - { - "hanReadings": [ - "インテリ" - ], - "text": "インテリ" - }, - { - "hanReadings": [ - "ソウ" - ], - "text": "層" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "ナル" - ], - "text": "なる" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "ガツ" - ], - "text": "月" - }, - { - "hanReadings": [ - "ニチ" - ], - "text": "日" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "フランス" - ], - "text": "フランス" - }, - { - "hanReadings": [ - "ケイ" - ], - "text": "系" - }, - { - "hanReadings": [ - "イミン" - ], - "text": "移民" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "メイモン" - ], - "text": "名門" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ムスメ" - ], - "text": "娘" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "アル" - ], - "text": "ある" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "リー" - ], - "text": "リー" - }, - { - "hanReadings": [ - "・" - ], - "text": "・" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "ケッコン" - ], - "text": "結婚" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "カレ" - ], - "text": "彼" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ソノ" - ], - "text": "その" - }, - { - "hanReadings": [ - "コウ" - ], - "text": "後" - }, - { - "hanReadings": [ - "ネンカン" - ], - "text": "年間" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "タスウ" - ], - "text": "多数" - }, - { - "hanReadings": [ - "カイ" - ], - "text": "回" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "セキチュウ" - ], - "text": "脊柱" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "シュジュツ" - ], - "text": "手術" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ホン" - ], - "text": "本" - }, - { - "hanReadings": [ - "カイギ" - ], - "text": "会議" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "チョウキ" - ], - "text": "長期" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ワタッ" - ], - "text": "わたっ" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "ケッセキ" - ], - "text": "欠席" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "シュジュツ" - ], - "text": "手術" - }, - { - "hanReadings": [ - "カラ" - ], - "text": "から" - }, - { - "hanReadings": [ - "カイフク" - ], - "text": "回復" - }, - { - "hanReadings": [ - "スル" - ], - "text": "する" - }, - { - "hanReadings": [ - "マデ" - ], - "text": "まで" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "マ" - ], - "text": "間" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ナ" - ], - "text": "名" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジョウイン" - ], - "text": "上院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "セイジ" - ], - "text": "政治" - }, - { - "hanReadings": [ - "テキ" - ], - "text": "的" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ユウカン" - ], - "text": "勇敢" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "アッ" - ], - "text": "あっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "コウイ" - ], - "text": "行為" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ツイ" - ], - "text": "つい" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "モト" - ], - "text": "本" - }, - { - "hanReadings": [ - "『" - ], - "text": "『" - }, - { - "hanReadings": [ - "ユウキ" - ], - "text": "勇気" - }, - { - "hanReadings": [ - "アル" - ], - "text": "ある" - }, - { - "hanReadings": [ - "ヒトビト" - ], - "text": "人々" - }, - { - "hanReadings": [ - "』" - ], - "text": "』" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "シュッパン" - ], - "text": "出版" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "コノ" - ], - "text": "この" - }, - { - "hanReadings": [ - "モト" - ], - "text": "本" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ソノ" - ], - "text": "その" - }, - { - "hanReadings": [ - "コウ" - ], - "text": "後" - }, - { - "hanReadings": [ - "ショウ" - ], - "text": "賞" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ジュショウ" - ], - "text": "受賞" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ショウキン" - ], - "text": "賞金" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "コクジン" - ], - "text": "黒人" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "カヨウ" - ], - "text": "通う" - }, - { - "hanReadings": [ - "ガッコウ" - ], - "text": "学校" - }, - { - "hanReadings": [ - "ヘ" - ], - "text": "へ" - }, - { - "hanReadings": [ - "ヨセツケ" - ], - "text": "寄付" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "ユワ" - ], - "text": "言わ" - }, - { - "hanReadings": [ - "レ" - ], - "text": "れ" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イル" - ], - "text": "いる" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - ":" - ], - "text": ":" - }, - { - "hanReadings": [ - "/" - ], - "text": "/" - }, - { - "hanReadings": [ - "/" - ], - "text": "/" - }, - { - "hanReadings": [ - "/" - ], - "text": "/" - }, - { - "hanReadings": [ - "/" - ], - "text": "/" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - }, - { - "hanReadings": [ - "%" - ], - "text": "%" - } + [ + "セイジ" + ], + [ + "カ" + ], + [ + "ヲ" + ], + [ + "ココロザシ" + ], + [ + "タ" + ], + [ + "キッカケ" + ], + [ + "ハ" + ], + [ + "ナカガワ" + ], + [ + "イチロウ" + ], + [ + "ノ" + ], + [ + "ソンザイ" + ], + [ + "ダッ" + ], + [ + "タ" + ], + [ + "ト" + ], + [ + "ユウ" + ], + [ + "[" + ], + null, + [ + "]" + ], + [ + "。" + ], + null, + [ + "ネン" + ], + [ + "、" + ], + [ + "ダイ" + ], + null, + [ + "カイ" + ], + [ + "シュウギ" + ], + [ + "イン" + ], + [ + "ギイン" + ], + [ + "ソウ" + ], + [ + "センキョ" + ], + [ + "デ" + ], + [ + "、" + ], + [ + "ジミン" + ], + [ + "トウ" + ], + [ + "ノ" + ], + [ + "コウニン" + ], + [ + "ヲ" + ], + [ + "ウ" + ], + [ + "タ" + ], + [ + "タナカ" + ], + [ + "ハ" + ], + [ + "シンジン" + ], + [ + "ト" + ], + [ + "シ" + ], + [ + "テ" + ], + [ + "、" + ], + [ + "ハトヤマ" + ], + [ + "カ" + ], + [ + "ガ" + ], + [ + "ボクジョウ" + ], + [ + "ヲ" + ], + [ + "ショユウ" + ], + [ + "シ" + ], + [ + "ハトヤマ" + ], + [ + "ジンジャ" + ], + [ + "ト" + ], + [ + "ユウ" + ], + [ + "ジンジャ" + ], + [ + "ガ" + ], + [ + "アル" + ], + [ + "ソフ" + ], + [ + "ノ" + ], + [ + "ダイ" + ], + [ + "カラ" + ], + [ + "ノ" + ], + [ + "ジバン" + ], + [ + "ホッカイドウ" + ], + [ + "カラ" + ], + [ + "[" + ], + null, + [ + "]" + ], + [ + "、" + ], + [ + "シュツバ" + ], + [ + "シ" + ], + [ + "タ" + ], + [ + "。" + ], + [ + "ハトヤマ" + ], + [ + "ジム" + ], + [ + "ドコロ" + ], + [ + "ソバ" + ], + [ + "ハ" + ], + [ + "、" + ], + [ + "「" + ], + [ + "タテ" + ], + [ + "コウホ" + ], + [ + "ノ" + ], + [ + "チョクセツ" + ], + [ + "ノ" + ], + [ + "キッカケ" + ], + [ + "ハ" + ], + [ + "サエグサ" + ], + [ + "サブロウ" + ], + [ + "シュウギ" + ], + [ + "イン" + ], + [ + "ギイン" + ], + [ + "ノ" + ], + [ + "ヒキノケ" + ], + [ + "ガ" + ], + [ + "キッカケ" + ], + [ + "」" + ], + [ + "ト" + ], + [ + "シュチョウ" + ], + [ + "シ" + ], + [ + "テ" + ], + [ + "イル" + ], + [ + "[" + ], + null, + [ + "]" + ], + [ + "。" + ], + [ + "ハツ" + ], + [ + "ノ" + ], + [ + "センキョ" + ], + [ + "スローガン" + ], + [ + "ハ" + ], + [ + "カガク" + ], + [ + "シャ" + ], + [ + "ヲ" + ], + [ + "シボウ" + ], + [ + "シ" + ], + [ + "テ" + ], + [ + "イ" + ], + [ + "タ" + ], + [ + "ジシン" + ], + [ + "ノ" + ], + [ + "ケイレキ" + ], + [ + "ヲ" + ], + [ + "アピール" + ], + [ + "シ" + ], + [ + "タ" + ], + [ + "「" + ], + [ + "セイジ" + ], + [ + "ヲ" + ], + [ + "カガク" + ], + [ + "スル" + ], + [ + "」" + ], + [ + "デ" + ], + [ + "アッ" + ], + [ + "タ" + ], + [ + "[" + ], + null, + [ + "]" + ], + [ + "。" + ], + [ + "トク" + ], + [ + "ヒョウスウ" + ], + [ + "デ" + ], + [ + "ハ" + ], + [ + "オナジ" + ], + [ + "ジミン" + ], + [ + "トウ" + ], + [ + "ノ" + ], + [ + "タカバシ" + ], + [ + "タツオ" + ], + [ + "ニ" + ], + [ + "ツイ" + ], + [ + "デ" + ], + null, + [ + "ツガイ" + ], + [ + "メ" + ], + [ + "ノ" + ], + [ + "トクヒョウ" + ], + [ + "スウ" + ], + [ + "デ" + ], + [ + "トウセン" + ], + [ + "シ" + ], + [ + "タ" + ], + [ + "。" + ], + [ + "コ" + ], + [ + "センキョ" + ], + [ + "ク" + ], + [ + "ニ" + ], + [ + "ナッ" + ], + [ + "タ" + ], + null, + [ + "ネン" + ], + [ + "イコウ" + ], + [ + "ハ" + ], + [ + "、" + ], + [ + "ハトヤマ" + ], + [ + "カ" + ], + [ + "ガ" + ], + [ + "カイタク" + ], + [ + "シ" + ], + [ + "タ" + ], + [ + "チイキ" + ], + [ + "ハ" + ], + [ + "ハトヤマ" + ], + [ + "ノ" + ], + [ + "センキョ" + ], + [ + "ク" + ], + [ + "カラ" + ], + [ + "ハズレ" + ], + [ + "タ" + ], + [ + "[" + ], + null, + [ + "]" + ], + [ + "。" + ], + [ + "ナオ" + ], + [ + "、" + ], + [ + "チホウ" + ], + [ + "クワケ" + ], + [ + "ノ" + ], + [ + "センキョ" + ], + [ + "ク" + ], + [ + "ジタイ" + ], + [ + "ハ" + ], + [ + "ソフ" + ], + [ + "ト" + ], + [ + "チョウフク" + ], + [ + "シ" + ], + [ + "テ" + ], + [ + "イ" + ], + [ + "ナイ" + ], + [ + "タメ" + ], + [ + "、" + ], + [ + "ソフ" + ], + [ + "ノ" + ], + [ + "ジバン" + ], + [ + "ヲ" + ], + [ + "セシュウ" + ], + [ + "シ" + ], + [ + "テ" + ], + [ + "イ" + ], + [ + "ナイ" + ], + [ + "ト" + ], + [ + "アツカワ" + ], + [ + "レ" + ], + [ + "テ" + ], + [ + "イル" + ], + [ + "[" + ], + null, + [ + "]" + ], + [ + "。" + ] ], "lemmas": [ - { - "lemma": "ケ", - "text": "ケ" - }, - { - "lemma": "ネディ", - "text": "ネディ" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "マサチューセッツ", - "text": "マサチューセッツ" - }, - { - "lemma": "州", - "text": "州" - }, - { - "lemma": "ブルックライン", - "text": "ブルックライン" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "アイルランド", - "text": "アイルランド" - }, - { - "lemma": "系", - "text": "系" - }, - { - "lemma": "移民", - "text": "移民" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "子孫", - "text": "子孫" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "投資", - "text": "投資" - }, - { - "lemma": "家", - "text": "家" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ジョセフ", - "text": "ジョセフ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "P", - "text": "P" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ケネディ", - "text": "ケネディ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "シニア", - "text": "シニア" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "次男", - "text": "次男" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "する", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "生まれる", - "text": "生まれ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "名前", - "text": "名前" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "母方", - "text": "母方" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "祖父", - "text": "祖父" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "ボストン", - "text": "ボストン" - }, - { - "lemma": "市長", - "text": "市長" - }, - { - "lemma": "も", - "text": "も" - }, - { - "lemma": "勤める", - "text": "勤め" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "ジョン", - "text": "ジョン" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "F", - "text": "F" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "フィッツジェラルド", - "text": "フィッツジェラルド" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "ちなむ", - "text": "ちなむ" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "13", - "text": "13" - }, - { - "lemma": "歳", - "text": "歳" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "とき", - "text": "とき" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "チョート", - "text": "チョート" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "スクール", - "text": "スクール" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "コネチカット", - "text": "コネチカット" - }, - { - "lemma": "州", - "text": "州" - }, - { - "lemma": "ウォリングフォード", - "text": "ウォリングフォード" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "寄宿", - "text": "寄宿" - }, - { - "lemma": "学校", - "text": "学校" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "にる", - "text": "に" - }, - { - "lemma": "入学", - "text": "入学" - }, - { - "lemma": "し", - "text": "し" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "その", - "text": "その" - }, - { - "lemma": "後", - "text": "後" - }, - { - "lemma": "1935", - "text": "1935" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "イギリス", - "text": "イギリス" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ロンドン", - "text": "ロンドン" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "スクール", - "text": "スクール" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "オブ", - "text": "オブ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "エコノミクス", - "text": "エコノミクス" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "1", - "text": "1" - }, - { - "lemma": "年間", - "text": "年間" - }, - { - "lemma": "留学", - "text": "留学" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "帰国", - "text": "帰国" - }, - { - "lemma": "後", - "text": "後" - }, - { - "lemma": "ハーバード", - "text": "ハーバード" - }, - { - "lemma": "大学", - "text": "大学" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "入学", - "text": "入学" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "認める", - "text": "認め" - }, - { - "lemma": "られる", - "text": "られ" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "もの", - "text": "もの" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "親しい", - "text": "親しい" - }, - { - "lemma": "友人", - "text": "友人" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "進学", - "text": "進学" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "決める", - "text": "決め" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "プリンストン", - "text": "プリンストン" - }, - { - "lemma": "大学", - "text": "大学" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "入学", - "text": "入学" - }, - { - "lemma": "する", - "text": "する" - }, - { - "lemma": "こと", - "text": "こと" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "する", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "しかし", - "text": "しかし" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "クリスマス", - "text": "クリスマス" - }, - { - "lemma": "休暇", - "text": "休暇" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "かかる", - "text": "かかっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "黄疸", - "text": "黄疸" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ため", - "text": "ため" - }, - { - "lemma": "退学", - "text": "退学" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "いる" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "1936", - "text": "1936" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "秋", - "text": "秋" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "ハーバード", - "text": "ハーバード" - }, - { - "lemma": "大学", - "text": "大学" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "転校", - "text": "転校" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "在学", - "text": "在学" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "フットボール", - "text": "フットボール" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "試合", - "text": "試合" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "背中", - "text": "背中" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "ひどい", - "text": "ひどく" - }, - { - "lemma": "痛む", - "text": "痛め" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "在学中", - "text": "在学中" - }, - { - "lemma": "ヨーロッパ", - "text": "ヨーロッパ" - }, - { - "lemma": "へ", - "text": "へ" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "度", - "text": "度" - }, - { - "lemma": "旅行", - "text": "旅行" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "おる", - "text": "おり" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "度", - "text": "度" - }, - { - "lemma": "目", - "text": "目" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "旅行", - "text": "旅行" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "父親", - "text": "父親" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "大使", - "text": "大使" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "務める", - "text": "務め" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "イギリス", - "text": "イギリス" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "訪る", - "text": "訪れ" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "いる" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "1940", - "text": "1940" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "6", - "text": "6" - }, - { - "lemma": "月", - "text": "月" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "1938", - "text": "1938" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ミュンヘン", - "text": "ミュンヘン" - }, - { - "lemma": "協定", - "text": "協定" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "おく", - "text": "おけ" - }, - { - "lemma": "り", - "text": "る" - }, - { - "lemma": "イギリス", - "text": "イギリス" - }, - { - "lemma": "外交", - "text": "外交" - }, - { - "lemma": "政策", - "text": "政策" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "分析", - "text": "分析" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "つぐ", - "text": "つい" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "卒論", - "text": "卒論" - }, - { - "lemma": "『", - "text": "『" - }, - { - "lemma": "イギリス", - "text": "イギリス" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "なぜ", - "text": "なぜ" - }, - { - "lemma": "眠る", - "text": "眠っ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "か", - "text": "か" - }, - { - "lemma": "』", - "text": "』" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "書く", - "text": "書き" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "ハーバード", - "text": "ハーバード" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "優等", - "text": "優等" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "卒業", - "text": "卒業" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "第", - "text": "第" - }, - { - "lemma": "2", - "text": "二" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "世界", - "text": "世界" - }, - { - "lemma": "大戦", - "text": "大戦" - }, - { - "lemma": "後", - "text": "後" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "彼", - "text": "彼" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "戦死", - "text": "戦死" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "兄", - "text": "兄" - }, - { - "lemma": "ジョセフ", - "text": "ジョセフ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "P", - "text": "P" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ケネディ", - "text": "ケネディ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ジュニア", - "text": "ジュニア" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "代わり", - "text": "代わり" - }, - { - "lemma": "政界", - "text": "政界" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "入る", - "text": "入っ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "1946", - "text": "1946" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "ジェームズ", - "text": "ジェームズ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "M", - "text": "M" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "カー", - "text": "カー" - }, - { - "lemma": "レイ", - "text": "レイ" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "ボストン", - "text": "ボストン" - }, - { - "lemma": "市長", - "text": "市長" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "なる", - "text": "なる" - }, - { - "lemma": "ため", - "text": "ため" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "民主", - "text": "民主" - }, - { - "lemma": "党", - "text": "党" - }, - { - "lemma": "下院", - "text": "下院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "辞職", - "text": "辞職" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "時", - "text": "時" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "ケネディ", - "text": "ケネディ" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "その", - "text": "その" - }, - { - "lemma": "議席", - "text": "議席" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "かく", - "text": "かけ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "補欠", - "text": "補欠" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "立", - "text": "立" - }, - { - "lemma": "候補", - "text": "候補" - }, - { - "lemma": "する", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "父", - "text": "父" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ジョセフ", - "text": "ジョセフ" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "実業", - "text": "実業" - }, - { - "lemma": "家", - "text": "家" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "ある", - "text": "あっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "こと", - "text": "こと" - }, - { - "lemma": "も", - "text": "も" - }, - { - "lemma": "あり", - "text": "あり" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "政治", - "text": "政治" - }, - { - "lemma": "資金", - "text": "資金" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "困る", - "text": "困ら" - }, - { - "lemma": "ない", - "text": "なかっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "実現", - "text": "実現" - }, - { - "lemma": "不", - "text": "不" - }, - { - "lemma": "可能", - "text": "可能" - }, - { - "lemma": "な", - "text": "な" - }, - { - "lemma": "公約", - "text": "公約" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "する", - "text": "する" - }, - { - "lemma": "必要", - "text": "必要" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "ない", - "text": "なく" - }, - { - "lemma": "理想", - "text": "理想" - }, - { - "lemma": "主義", - "text": "主義" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "語る", - "text": "語る" - }, - { - "lemma": "こと", - "text": "こと" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "できる", - "text": "でき" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "長い", - "text": "長く" - }, - { - "lemma": "精力", - "text": "精力" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "ない", - "text": "な" - }, - { - "lemma": "キャンペーン", - "text": "キャンペーン" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "末", - "text": "末" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "大差", - "text": "大差" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "共和", - "text": "共和" - }, - { - "lemma": "党", - "text": "党" - }, - { - "lemma": "候補", - "text": "候補" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "勝つ", - "text": "勝ち" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "29", - "text": "29" - }, - { - "lemma": "歳", - "text": "歳" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "下院", - "text": "下院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "なる", - "text": "なっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "当初", - "text": "当初" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "父", - "text": "父" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ジョセフ", - "text": "ジョセフ" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "コネ", - "text": "コネ" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "ある", - "text": "あっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "同じ", - "text": "同じ" - }, - { - "lemma": "アイルランド", - "text": "アイルランド" - }, - { - "lemma": "系", - "text": "系" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "ジョセフ", - "text": "ジョセフ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "マッカーシー", - "text": "マッカーシー" - }, - { - "lemma": "上院", - "text": "上院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "赤狩り", - "text": "赤狩り" - }, - { - "lemma": "にる", - "text": "に" - }, - { - "lemma": "協力", - "text": "協力" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "リベラル", - "text": "リベラル" - }, - { - "lemma": "派", - "text": "派" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "エレノア", - "text": "エレノア" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ルーズヴェルト", - "text": "ルーズヴェルト" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "その", - "text": "その" - }, - { - "lemma": "こと", - "text": "こと" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "忘れる", - "text": "忘れ" - }, - { - "lemma": "ぬ", - "text": "ず" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "後々", - "text": "後々" - }, - { - "lemma": "まで", - "text": "まで" - }, - { - "lemma": "ケネディ", - "text": "ケネディ" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "嫌う", - "text": "嫌っ" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "下院", - "text": "下院" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "期", - "text": "期" - }, - { - "lemma": "目", - "text": "目" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "1952", - "text": "1952" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "上院", - "text": "上院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "にる", - "text": "に" - }, - { - "lemma": "出馬", - "text": "出馬" - }, - { - "lemma": "し", - "text": "し" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "約", - "text": "約" - }, - { - "lemma": "70000", - "text": "70,000" - }, - { - "lemma": "票", - "text": "票" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "大差", - "text": "大差" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "共和", - "text": "共和" - }, - { - "lemma": "党", - "text": "党" - }, - { - "lemma": "候補", - "text": "候補" - }, - { - "lemma": "ヘンリー", - "text": "ヘンリー" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "カボット", - "text": "カボット" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ロッジ", - "text": "ロッジ" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ジュニア", - "text": "ジュニア" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "破る", - "text": "破っ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "以後", - "text": "以後" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "彼", - "text": "彼" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "支持", - "text": "支持" - }, - { - "lemma": "基盤", - "text": "基盤" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "北部", - "text": "北部" - }, - { - "lemma": "都市", - "text": "都市" - }, - { - "lemma": "圏", - "text": "圏" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "リベラル", - "text": "リベラル" - }, - { - "lemma": "派", - "text": "派" - }, - { - "lemma": "インテリ", - "text": "インテリ" - }, - { - "lemma": "層", - "text": "層" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "なる", - "text": "なる" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "ケ", - "text": "ケ" - }, - { - "lemma": "ネディ", - "text": "ネディ" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "1953", - "text": "1953" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "9", - "text": "9" - }, - { - "lemma": "月", - "text": "月" - }, - { - "lemma": "12", - "text": "12" - }, - { - "lemma": "日", - "text": "日" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "フランス", - "text": "フランス" - }, - { - "lemma": "系", - "text": "系" - }, - { - "lemma": "移民", - "text": "移民" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "名門", - "text": "名門" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "娘", - "text": "娘" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "ある", - "text": "ある" - }, - { - "lemma": "ジャクリーン", - "text": "ジャクリーン" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "リー", - "text": "リー" - }, - { - "lemma": "・", - "text": "・" - }, - { - "lemma": "ブーヴィエ", - "text": "ブーヴィエ" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "結婚", - "text": "結婚" - }, - { - "lemma": "す", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "彼", - "text": "彼" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "その", - "text": "その" - }, - { - "lemma": "後", - "text": "後" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "年間", - "text": "年間" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "多数", - "text": "多数" - }, - { - "lemma": "回", - "text": "回" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "脊柱", - "text": "脊柱" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "手術", - "text": "手術" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "受け上院", - "text": "受け上院" - }, - { - "lemma": "本", - "text": "本" - }, - { - "lemma": "会議", - "text": "会議" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "長期", - "text": "長期" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "わたる", - "text": "わたっ" - }, - { - "lemma": "つ", - "text": "て" - }, - { - "lemma": "欠席", - "text": "欠席" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "手術", - "text": "手術" - }, - { - "lemma": "からい", - "text": "から" - }, - { - "lemma": "回復", - "text": "回復" - }, - { - "lemma": "する", - "text": "する" - }, - { - "lemma": "まで", - "text": "まで" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "間", - "text": "間" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": "名", - "text": "名" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "上院", - "text": "上院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "政治", - "text": "政治" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "勇敢", - "text": "勇敢" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "ある", - "text": "あっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "行為", - "text": "行為" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "つぐ", - "text": "つい" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "本", - "text": "本" - }, - { - "lemma": "『", - "text": "『" - }, - { - "lemma": "勇気", - "text": "勇気" - }, - { - "lemma": "ある", - "text": "ある" - }, - { - "lemma": "人々", - "text": "人々" - }, - { - "lemma": "』", - "text": "』" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "出版", - "text": "出版" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "この", - "text": "この" - }, - { - "lemma": "本", - "text": "本" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "その", - "text": "その" - }, - { - "lemma": "後", - "text": "後" - }, - { - "lemma": "ピューリツァー", - "text": "ピューリツァー" - }, - { - "lemma": "賞", - "text": "賞" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "受賞", - "text": "受賞" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "賞金", - "text": "賞金" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "黒人", - "text": "黒人" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "通う", - "text": "通う" - }, - { - "lemma": "学校", - "text": "学校" - }, - { - "lemma": "へ", - "text": "へ" - }, - { - "lemma": "寄付る", - "text": "寄付" - }, - { - "lemma": "する", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "言う", - "text": "言わ" - }, - { - "lemma": "る", - "text": "れ" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "いる" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "ja.wikipedia.org", - "text": "ja.wikipedia.org" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "wiki", - "text": "wiki" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "82", - "text": "82" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "B8", - "text": "B8" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "83", - "text": "83" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "A7", - "text": "A7" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "83", - "text": "83" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "B3", - "text": "B3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "83", - "text": "83" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "BBF", - "text": "BBF" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "83", - "text": "83" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "BB", - "text": "BB" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "82", - "text": "82" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "B1", - "text": "B1" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "83", - "text": "83" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "8D", - "text": "8D" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "83", - "text": "83" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "87", - "text": "87" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "E3", - "text": "E3" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "82", - "text": "82" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "A3", - "text": "A3" - }, - { - "lemma": "2010.01.26", - "text": "2010.01.26" - } + "政治", + "家", + "を", + "志す", + "た", + "きっかけ", + "は", + "中川", + "一郎", + "の", + "存在", + "だ", + "た", + "と", + "いう", + "[", + "3", + "]", + "。", + "1986", + "年", + "、", + "第", + "38", + "回", + "衆議", + "院", + "議員", + "総", + "選挙", + "だ", + "、", + "自民", + "党", + "の", + "公認", + "を", + "得", + "た", + "田中", + "派", + "新人", + "と", + "する", + "て", + "、", + "鳩山", + "家", + "が", + "牧場", + "を", + "所有", + "す", + "鳩山", + "神社", + "と", + "いう", + "神社", + "が", + "ある", + "祖父", + "の", + "代", + "から", + "の", + "地盤", + "北海道", + "から", + "[", + "4", + "]", + "、", + "出馬", + "き", + "た", + "。", + "鳩山", + "事務", + "所", + "側", + "は", + "、", + "「", + "立", + "候補", + "の", + "直接", + "の", + "きっかけ", + "は", + "三枝", + "三郎", + "衆議", + "院", + "議員", + "の", + "引退る", + "が", + "きっかけ", + "」", + "と", + "主張", + "き", + "て", + "いる", + "[", + "5", + "]", + "。", + "初", + "の", + "選挙", + "スローガン", + "は", + "科学", + "者", + "を", + "志望", + "き", + "て", + "いる", + "た", + "自身", + "の", + "経歴", + "を", + "アピール", + "き", + "た", + "「", + "政治", + "を", + "科学", + "する", + "」", + "だ", + "ある", + "た", + "[", + "6", + "]", + "。", + "得", + "票数", + "で", + "は", + "同じ", + "自民", + "党", + "の", + "高橋", + "辰夫", + "に", + "次ぐ", + "で", + "2", + "番", + "目", + "の", + "得票", + "数", + "で", + "当選", + "き", + "た", + "。", + "小", + "選挙", + "区", + "に", + "なる", + "た", + "1996", + "年", + "以降", + "は", + "、", + "鳩山", + "家", + "が", + "開拓", + "す", + "た", + "地域", + "は", + "鳩山", + "の", + "選挙", + "区", + "から", + "外れる", + "た", + "[", + "7", + "]", + "。", + "なお", + "、", + "地方", + "区分", + "の", + "選挙", + "区", + "自体", + "は", + "祖父", + "と", + "重複", + "き", + "て", + "いる", + "ない", + "ため", + "、", + "祖父", + "の", + "地盤", + "を", + "世襲", + "き", + "て", + "いる", + "ない", + "と", + "扱う", + "る", + "て", + "いる", + "[", + "8", + "]", + "。" ], "posTags": [ - { - "pos": "GUESS", - "text": "ケ" - }, - { - "pos": "GUESS", - "text": "ネディ" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NP", - "text": "マサチューセッツ" - }, - { - "pos": "NC", - "text": "州" - }, - { - "pos": "GUESS", - "text": "ブルックライン" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NP", - "text": "アイルランド" - }, - { - "pos": "WS", - "text": "系" - }, - { - "pos": "VN", - "text": "移民" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "子孫" - }, - { - "pos": "J", - "text": "で" - }, - { - "pos": "VN", - "text": "投資" - }, - { - "pos": "WS", - "text": "家" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "ジョセフ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NP", - "text": "P" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NP", - "text": "ケネディ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "シニア" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "次男" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "生まれ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "名前" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "母方" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "祖父" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "NP", - "text": "ボストン" - }, - { - "pos": "NC", - "text": "市長" - }, - { - "pos": "PL", - "text": "も" - }, - { - "pos": "V", - "text": "勤め" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NP", - "text": "ジョン" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NU", - "text": "F" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "GUESS", - "text": "フィッツジェラルド" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "ちなむ" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "13" - }, - { - "pos": "NC", - "text": "歳" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "とき" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "GUESS", - "text": "チョート" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "スクール" - }, - { - "pos": "GUESS", - "text": "(" - }, - { - "pos": "GUESS", - "text": "コネチカット" - }, - { - "pos": "NC", - "text": "州" - }, - { - "pos": "GUESS", - "text": "ウォリングフォード" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "寄宿" - }, - { - "pos": "NC", - "text": "学校" - }, - { - "pos": "GUESS", - "text": ")" - }, - { - "pos": "V", - "text": "に" - }, - { - "pos": "VN", - "text": "入学" - }, - { - "pos": "PL", - "text": "し" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "I", - "text": "その" - }, - { - "pos": "NC", - "text": "後" - }, - { - "pos": "GUESS", - "text": "1935" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NP", - "text": "イギリス" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "ロンドン" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "スクール" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "オブ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "GUESS", - "text": "エコノミクス" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "GUESS", - "text": "1" - }, - { - "pos": "NU", - "text": "年間" - }, - { - "pos": "VN", - "text": "留学" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "VN", - "text": "帰国" - }, - { - "pos": "WP", - "text": "後" - }, - { - "pos": "NP", - "text": "ハーバード" - }, - { - "pos": "NC", - "text": "大学" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "VN", - "text": "入学" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "認め" - }, - { - "pos": "FS", - "text": "られ" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "もの" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "AJ", - "text": "親しい" - }, - { - "pos": "NC", - "text": "友人" - }, - { - "pos": "J", - "text": "が" - }, - { - "pos": "VN", - "text": "進学" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "決め" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NP", - "text": "プリンストン" - }, - { - "pos": "NC", - "text": "大学" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "VN", - "text": "入学" - }, - { - "pos": "V", - "text": "する" - }, - { - "pos": "NC", - "text": "こと" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "J", - "text": "しかし" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NC", - "text": "クリスマス" - }, - { - "pos": "NC", - "text": "休暇" - }, - { - "pos": "NC", - "text": "中" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "かかっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "黄疸" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "ため" - }, - { - "pos": "VN", - "text": "退学" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "いる" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "1936" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "秋" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NP", - "text": "ハーバード" - }, - { - "pos": "NC", - "text": "大学" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "VN", - "text": "転校" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "VN", - "text": "在学" - }, - { - "pos": "NP", - "text": "中" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NC", - "text": "フットボール" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "試合" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "NC", - "text": "背中" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "AJ", - "text": "ひどく" - }, - { - "pos": "V", - "text": "痛め" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "在学中" - }, - { - "pos": "NP", - "text": "ヨーロッパ" - }, - { - "pos": "PL", - "text": "へ" - }, - { - "pos": "GUESS", - "text": "2" - }, - { - "pos": "NU", - "text": "度" - }, - { - "pos": "VN", - "text": "旅行" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "おり" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "GUESS", - "text": "2" - }, - { - "pos": "NC", - "text": "度" - }, - { - "pos": "WS", - "text": "目" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "旅行" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "父親" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "NC", - "text": "大使" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "務め" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NP", - "text": "イギリス" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "訪れ" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "いる" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "1940" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "GUESS", - "text": "6" - }, - { - "pos": "NC", - "text": "月" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "GUESS", - "text": "1938" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "ミュンヘン" - }, - { - "pos": "VN", - "text": "協定" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "おけ" - }, - { - "pos": "AUXVB", - "text": "る" - }, - { - "pos": "NP", - "text": "イギリス" - }, - { - "pos": "NC", - "text": "外交" - }, - { - "pos": "NC", - "text": "政策" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "分析" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "つい" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "卒論" - }, - { - "pos": "PUNCT", - "text": "『" - }, - { - "pos": "NP", - "text": "イギリス" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "D", - "text": "なぜ" - }, - { - "pos": "V", - "text": "眠っ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PL", - "text": "か" - }, - { - "pos": "PUNCT", - "text": "』" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "書き" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NP", - "text": "ハーバード" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "NC", - "text": "優等" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "VN", - "text": "卒業" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "WP", - "text": "第" - }, - { - "pos": "NN", - "text": "二" - }, - { - "pos": "WS", - "text": "次" - }, - { - "pos": "NC", - "text": "世界" - }, - { - "pos": "NC", - "text": "大戦" - }, - { - "pos": "NC", - "text": "後" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NR", - "text": "彼" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "VN", - "text": "戦死" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "兄" - }, - { - "pos": "NP", - "text": "ジョセフ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NP", - "text": "P" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NP", - "text": "ケネディ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "ジュニア" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NC", - "text": "代わり" - }, - { - "pos": "NC", - "text": "政界" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "入っ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "1946" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NP", - "text": "ジェームズ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NU", - "text": "M" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "カー" - }, - { - "pos": "NC", - "text": "レイ" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "NP", - "text": "ボストン" - }, - { - "pos": "NC", - "text": "市長" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "なる" - }, - { - "pos": "NC", - "text": "ため" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NC", - "text": "民主" - }, - { - "pos": "WS", - "text": "党" - }, - { - "pos": "NP", - "text": "下院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "辞職" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "時" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NP", - "text": "ケネディ" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "I", - "text": "その" - }, - { - "pos": "NC", - "text": "議席" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "かけ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "補欠" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "WP", - "text": "立" - }, - { - "pos": "NC", - "text": "候補" - }, - { - "pos": "V", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "父" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "ジョセフ" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "NC", - "text": "実業" - }, - { - "pos": "WS", - "text": "家" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "V", - "text": "あっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "こと" - }, - { - "pos": "PL", - "text": "も" - }, - { - "pos": "V", - "text": "あり" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NC", - "text": "政治" - }, - { - "pos": "NC", - "text": "資金" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "V", - "text": "困ら" - }, - { - "pos": "AUXVB", - "text": "なかっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "VN", - "text": "実現" - }, - { - "pos": "WP", - "text": "不" - }, - { - "pos": "AN", - "text": "可能" - }, - { - "pos": "I", - "text": "な" - }, - { - "pos": "VN", - "text": "公約" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "する" - }, - { - "pos": "AN", - "text": "必要" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "AJ", - "text": "なく" - }, - { - "pos": "NC", - "text": "理想" - }, - { - "pos": "NC", - "text": "主義" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "語る" - }, - { - "pos": "NC", - "text": "こと" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "V", - "text": "でき" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "AJ", - "text": "長く" - }, - { - "pos": "NC", - "text": "精力" - }, - { - "pos": "WS", - "text": "的" - }, - { - "pos": "AUXVB", - "text": "な" - }, - { - "pos": "NC", - "text": "キャンペーン" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "末" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NC", - "text": "大差" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "NC", - "text": "共和" - }, - { - "pos": "WS", - "text": "党" - }, - { - "pos": "NC", - "text": "候補" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "勝ち" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "GUESS", - "text": "29" - }, - { - "pos": "NC", - "text": "歳" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "NP", - "text": "下院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "なっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "当初" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "父" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "ジョセフ" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "NC", - "text": "コネ" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "V", - "text": "あっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "AN", - "text": "同じ" - }, - { - "pos": "NP", - "text": "アイルランド" - }, - { - "pos": "WS", - "text": "系" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "ジョセフ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NP", - "text": "マッカーシー" - }, - { - "pos": "NP", - "text": "上院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "赤狩り" - }, - { - "pos": "V", - "text": "に" - }, - { - "pos": "VN", - "text": "協力" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "AN", - "text": "リベラル" - }, - { - "pos": "WS", - "text": "派" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "GUESS", - "text": "エレノア" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "GUESS", - "text": "ルーズヴェルト" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "I", - "text": "その" - }, - { - "pos": "NC", - "text": "こと" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "忘れ" - }, - { - "pos": "AUXVB", - "text": "ず" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NC", - "text": "後々" - }, - { - "pos": "PL", - "text": "まで" - }, - { - "pos": "NP", - "text": "ケネディ" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "嫌っ" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NP", - "text": "下院" - }, - { - "pos": "GUESS", - "text": "3" - }, - { - "pos": "NC", - "text": "期" - }, - { - "pos": "WS", - "text": "目" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "GUESS", - "text": "1952" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NP", - "text": "上院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "V", - "text": "に" - }, - { - "pos": "VN", - "text": "出馬" - }, - { - "pos": "PL", - "text": "し" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "WP", - "text": "約" - }, - { - "pos": "GUESS", - "text": "70,000" - }, - { - "pos": "NC", - "text": "票" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "大差" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "NC", - "text": "共和" - }, - { - "pos": "WS", - "text": "党" - }, - { - "pos": "NC", - "text": "候補" - }, - { - "pos": "NP", - "text": "ヘンリー" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "GUESS", - "text": "カボット" - }, - { - "pos": "NN", - "text": "・" - }, - { - "pos": "NC", - "text": "ロッジ" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NC", - "text": "ジュニア" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "破っ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "以後" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NR", - "text": "彼" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "支持" - }, - { - "pos": "NC", - "text": "基盤" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "北部" - }, - { - "pos": "NC", - "text": "都市" - }, - { - "pos": "WS", - "text": "圏" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "AN", - "text": "リベラル" - }, - { - "pos": "WS", - "text": "派" - }, - { - "pos": "NC", - "text": "インテリ" - }, - { - "pos": "NC", - "text": "層" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "なる" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "ケ" - }, - { - "pos": "GUESS", - "text": "ネディ" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "GUESS", - "text": "1953" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "GUESS", - "text": "9" - }, - { - "pos": "NC", - "text": "月" - }, - { - "pos": "GUESS", - "text": "12" - }, - { - "pos": "NC", - "text": "日" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NP", - "text": "フランス" - }, - { - "pos": "WS", - "text": "系" - }, - { - "pos": "VN", - "text": "移民" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "名門" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "娘" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "V", - "text": "ある" - }, - { - "pos": "GUESS", - "text": "ジャクリーン" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "NP", - "text": "リー" - }, - { - "pos": "PUNCT", - "text": "・" - }, - { - "pos": "GUESS", - "text": "ブーヴィエ" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "VN", - "text": "結婚" - }, - { - "pos": "FS", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NR", - "text": "彼" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "I", - "text": "その" - }, - { - "pos": "NC", - "text": "後" - }, - { - "pos": "GUESS", - "text": "2" - }, - { - "pos": "NC", - "text": "年間" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NC", - "text": "多数" - }, - { - "pos": "NC", - "text": "回" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "脊柱" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "手術" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "GUESS", - "text": "受け上院" - }, - { - "pos": "NU", - "text": "本" - }, - { - "pos": "VN", - "text": "会議" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "NC", - "text": "長期" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "わたっ" - }, - { - "pos": "AUXVB", - "text": "て" - }, - { - "pos": "VN", - "text": "欠席" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "VN", - "text": "手術" - }, - { - "pos": "AJ", - "text": "から" - }, - { - "pos": "VN", - "text": "回復" - }, - { - "pos": "V", - "text": "する" - }, - { - "pos": "PL", - "text": "まで" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "間" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "GUESS", - "text": "8" - }, - { - "pos": "NC", - "text": "名" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "上院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "政治" - }, - { - "pos": "WS", - "text": "的" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "NC", - "text": "勇敢" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "V", - "text": "あっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "VN", - "text": "行為" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "つい" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "本" - }, - { - "pos": "PUNCT", - "text": "『" - }, - { - "pos": "NC", - "text": "勇気" - }, - { - "pos": "V", - "text": "ある" - }, - { - "pos": "NC", - "text": "人々" - }, - { - "pos": "PUNCT", - "text": "』" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "出版" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "AA", - "text": "この" - }, - { - "pos": "NC", - "text": "本" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "I", - "text": "その" - }, - { - "pos": "NC", - "text": "後" - }, - { - "pos": "GUESS", - "text": "ピューリツァー" - }, - { - "pos": "NC", - "text": "賞" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "受賞" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "賞金" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "黒人" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "V", - "text": "通う" - }, - { - "pos": "NC", - "text": "学校" - }, - { - "pos": "PL", - "text": "へ" - }, - { - "pos": "V", - "text": "寄付" - }, - { - "pos": "V", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "言わ" - }, - { - "pos": "AUXVB", - "text": "れ" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "いる" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "http" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "GUESS", - "text": "ja.wikipedia.org" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "GUESS", - "text": "wiki" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "82" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "B8" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "83" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "A7" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "83" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "B3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "83" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "BBF" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "83" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "BB" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "82" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "B1" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "83" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "8D" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "83" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "87" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "E3" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "82" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "GUESS", - "text": "A3" - }, - { - "pos": "GUESS", - "text": "2010.01.26" - } + "NC", + "WS", + "PL", + "V", + "AUXVB", + "NC", + "PL", + "NP", + "NP", + "PL", + "VN", + "AUXVB", + "AUXVB", + "PL", + "V", + "PUNCT", + "GUESS", + "PUNCT", + "PUNCT", + "GUESS", + "NC", + "PUNCT", + "WP", + "GUESS", + "NC", + "NC", + "WS", + "NC", + "WP", + "VN", + "AUXVB", + "PUNCT", + "NP", + "WS", + "PL", + "VN", + "PL", + "V", + "AUXVB", + "NP", + "WS", + "NC", + "PL", + "V", + "PL", + "PUNCT", + "NP", + "WS", + "PL", + "NC", + "PL", + "VN", + "FS", + "NP", + "NC", + "PL", + "V", + "NC", + "PL", + "V", + "NC", + "PL", + "NC", + "PL", + "PL", + "NC", + "NP", + "PL", + "PUNCT", + "GUESS", + "PUNCT", + "PUNCT", + "VN", + "AUXVB", + "AUXVB", + "PUNCT", + "NP", + "NC", + "WS", + "NC", + "PL", + "PUNCT", + "PUNCT", + "WP", + "NC", + "PL", + "NC", + "PL", + "NC", + "PL", + "NP", + "NP", + "NC", + "WS", + "NC", + "PL", + "V", + "PL", + "NC", + "PUNCT", + "PL", + "VN", + "AUXVB", + "PL", + "V", + "PUNCT", + "GUESS", + "PUNCT", + "PUNCT", + "NC", + "PL", + "VN", + "NC", + "PL", + "NC", + "WS", + "PL", + "VN", + "AUXVB", + "PL", + "V", + "AUXVB", + "NC", + "PL", + "NC", + "PL", + "VN", + "AUXVB", + "AUXVB", + "PUNCT", + "NC", + "PL", + "NC", + "V", + "PUNCT", + "AUXVB", + "V", + "AUXVB", + "PUNCT", + "GUESS", + "PUNCT", + "PUNCT", + "NC", + "NC", + "PL", + "PL", + "NC", + "NP", + "WS", + "PL", + "NP", + "NP", + "PL", + "V", + "PL", + "GUESS", + "NC", + "WS", + "PL", + "VN", + "NN", + "J", + "VN", + "AUXVB", + "AUXVB", + "PUNCT", + "WP", + "VN", + "NC", + "PL", + "V", + "AUXVB", + "GUESS", + "NC", + "NC", + "PL", + "PUNCT", + "NP", + "WS", + "J", + "VN", + "FS", + "AUXVB", + "NC", + "PL", + "NP", + "PL", + "VN", + "WS", + "PL", + "V", + "AUXVB", + "PUNCT", + "GUESS", + "PUNCT", + "PUNCT", + "J", + "PUNCT", + "NC", + "VN", + "PL", + "VN", + "NU", + "NC", + "PL", + "NC", + "PL", + "VN", + "AUXVB", + "PL", + "V", + "AUXVB", + "NC", + "PUNCT", + "NC", + "PL", + "NC", + "PL", + "VN", + "AUXVB", + "PL", + "V", + "AUXVB", + "PL", + "V", + "AUXVB", + "PL", + "V", + "PUNCT", + "GUESS", + "PUNCT", + "PUNCT" ], - "requestId": "f808038e-ba8f-4dff-9eae-548084ca75bd", - "timers": { - "rblJe": 132, - "rliJe": 3 - } + "tokens": [ + "政治", + "家", + "を", + "志し", + "た", + "きっかけ", + "は", + "中川", + "一郎", + "の", + "存在", + "だっ", + "た", + "と", + "いう", + "[", + "3", + "]", + "。", + "1986", + "年", + "、", + "第", + "38", + "回", + "衆議", + "院", + "議員", + "総", + "選挙", + "で", + "、", + "自民", + "党", + "の", + "公認", + "を", + "得", + "た", + "田中", + "派", + "新人", + "と", + "し", + "て", + "、", + "鳩山", + "家", + "が", + "牧場", + "を", + "所有", + "し", + "鳩山", + "神社", + "と", + "いう", + "神社", + "が", + "ある", + "祖父", + "の", + "代", + "から", + "の", + "地盤", + "北海道", + "から", + "[", + "4", + "]", + "、", + "出馬", + "し", + "た", + "。", + "鳩山", + "事務", + "所", + "側", + "は", + "、", + "「", + "立", + "候補", + "の", + "直接", + "の", + "きっかけ", + "は", + "三枝", + "三郎", + "衆議", + "院", + "議員", + "の", + "引退", + "が", + "きっかけ", + "」", + "と", + "主張", + "し", + "て", + "いる", + "[", + "5", + "]", + "。", + "初", + "の", + "選挙", + "スローガン", + "は", + "科学", + "者", + "を", + "志望", + "し", + "て", + "い", + "た", + "自身", + "の", + "経歴", + "を", + "アピール", + "し", + "た", + "「", + "政治", + "を", + "科学", + "する", + "」", + "で", + "あっ", + "た", + "[", + "6", + "]", + "。", + "得", + "票数", + "で", + "は", + "同じ", + "自民", + "党", + "の", + "高橋", + "辰夫", + "に", + "次い", + "で", + "2", + "番", + "目", + "の", + "得票", + "数", + "で", + "当選", + "し", + "た", + "。", + "小", + "選挙", + "区", + "に", + "なっ", + "た", + "1996", + "年", + "以降", + "は", + "、", + "鳩山", + "家", + "が", + "開拓", + "し", + "た", + "地域", + "は", + "鳩山", + "の", + "選挙", + "区", + "から", + "外れ", + "た", + "[", + "7", + "]", + "。", + "なお", + "、", + "地方", + "区分", + "の", + "選挙", + "区", + "自体", + "は", + "祖父", + "と", + "重複", + "し", + "て", + "い", + "ない", + "ため", + "、", + "祖父", + "の", + "地盤", + "を", + "世襲", + "し", + "て", + "い", + "ない", + "と", + "扱わ", + "れ", + "て", + "いる", + "[", + "8", + "]", + "。" + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-doc-sentiment.json b/api/src/test/mock-data/response/jpn-doc-sentiment.json index 414f1bdd4a..2d7ada8e62 100644 --- a/api/src/test/mock-data/response/jpn-doc-sentiment.json +++ b/api/src/test/mock-data/response/jpn-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Japanese is not supported by Rosette Sentiment Analyzer", - "requestId": "dd12b715-0ece-4027-9301-b0aa8a0b057f" + "message": "Unsupported language: Japanese" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-categories.json b/api/src/test/mock-data/response/jpn-sentence-categories.json deleted file mode 100644 index c47df969dd..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Japanese is not supported by Rosette Categorizer", - "requestId": "60becbc7-8833-47c5-923b-4560efb13683" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-categories.status b/api/src/test/mock-data/response/jpn-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-entities.json b/api/src/test/mock-data/response/jpn-sentence-entities.json deleted file mode 100644 index caec5e0b2c..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-entities.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "entities": [ - { - "confidence": 1.0, - "count": 2, - "indocChainId": 1, - "mention": "衆議院", - "normalized": "衆議院", - "type": "ORGANIZATION" - }, - { - "confidence": 1.0, - "count": 2, - "indocChainId": 2, - "mention": "自民党", - "normalized": "自民党", - "type": "ORGANIZATION" - }, - { - "confidence": 1.1920928955078125e-06, - "count": 2, - "indocChainId": 4, - "mention": "鳩山家", - "normalized": "鳩山家", - "type": "ORGANIZATION" - }, - { - "confidence": 0.0009242594242095947, - "count": 2, - "indocChainId": 6, - "mention": "鳩山", - "normalized": "鳩山", - "type": "PERSON" - }, - { - "confidence": 0.002387821674346924, - "count": 1, - "indocChainId": 0, - "mention": "中川一郎", - "normalized": "中川一郎", - "type": "PERSON" - }, - { - "confidence": 0.00404590368270874, - "count": 1, - "indocChainId": 3, - "mention": "田中", - "normalized": "田中", - "type": "PERSON" - }, - { - "confidence": 0.0023449063301086426, - "count": 1, - "indocChainId": 5, - "mention": "北海道", - "normalized": "北海道", - "type": "LOCATION" - }, - { - "confidence": 0.002293109893798828, - "count": 1, - "indocChainId": 7, - "mention": "三枝三郎", - "normalized": "三枝三郎", - "type": "PERSON" - }, - { - "confidence": 0.0010268688201904297, - "count": 1, - "indocChainId": 10, - "mention": "高橋辰夫", - "normalized": "高橋辰夫", - "type": "PERSON" - } - ], - "requestId": "361f92b3-b229-4750-911e-6a30b9edff77", - "timers": { - "rblJe": 8, - "rexJe": 15, - "rliJe": 5 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-entities.status b/api/src/test/mock-data/response/jpn-sentence-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-entities_linked.json b/api/src/test/mock-data/response/jpn-sentence-entities_linked.json deleted file mode 100644 index b87c9b4f1c..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-entities_linked.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.5804911233166798, - "entityId": "Q615236", - "indocChainId": 0, - "mention": "中川一郎" - }, - { - "confidence": 0.3325862488651135, - "entityId": "NEW-CLUSTER", - "indocChainId": 1, - "mention": "衆議院" - }, - { - "confidence": 0.3035061601648603, - "entityId": "Q232595", - "indocChainId": 2, - "mention": "自民党" - }, - { - "confidence": 0.3020758136528464, - "entityId": "NEW-CLUSTER", - "indocChainId": 3, - "mention": "田中" - }, - { - "confidence": 0.39123757908924967, - "entityId": "NEW-CLUSTER", - "indocChainId": 4, - "mention": "鳩山家" - }, - { - "confidence": 0.5767181759128862, - "entityId": "Q35581", - "indocChainId": 5, - "mention": "北海道" - }, - { - "confidence": 0.5719175959113528, - "entityId": "NEW-CLUSTER", - "indocChainId": 6, - "mention": "鳩山" - }, - { - "confidence": 0.18809272778462766, - "entityId": "NEW-CLUSTER", - "indocChainId": 7, - "mention": "三枝三郎" - }, - { - "confidence": 0.2377751769118006, - "entityId": "NEW-CLUSTER", - "indocChainId": 10, - "mention": "高橋辰夫" - } - ], - "requestId": "2ddce92c-9a0c-4f17-9a5c-5abc3cdde474", - "timers": { - "rblJe": 8, - "res": 808, - "rexJe": 8, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-entities_linked.status b/api/src/test/mock-data/response/jpn-sentence-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-language.json b/api/src/test/mock-data/response/jpn-sentence-language.json deleted file mode 100644 index 3491106013..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.18632915896411573, - "language": "jpn" - }, - { - "confidence": 0.005708728566174215, - "language": "zho" - }, - { - "confidence": 0.0053253763489605754, - "language": "zho" - }, - { - "confidence": 3.1152313146431965e-05, - "language": "jpn" - }, - { - "confidence": 0.0, - "language": "ara" - } - ], - "requestId": "e7e86b2e-113a-4bd1-bcea-b7d5d1f4d691", - "timers": { - "rliJe": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-language.status b/api/src/test/mock-data/response/jpn-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-morphology_complete.json b/api/src/test/mock-data/response/jpn-sentence-morphology_complete.json deleted file mode 100644 index a43d9c893d..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-morphology_complete.json +++ /dev/null @@ -1,3202 +0,0 @@ -{ - "compounds": [], - "hanReadings": [ - { - "hanReadings": [ - "セイジ" - ], - "text": "政治" - }, - { - "hanReadings": [ - "カ" - ], - "text": "家" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ココロザシ" - ], - "text": "志し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "キッカケ" - ], - "text": "きっかけ" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ナカガワ" - ], - "text": "中川" - }, - { - "hanReadings": [ - "イチロウ" - ], - "text": "一郎" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ソンザイ" - ], - "text": "存在" - }, - { - "hanReadings": [ - "ダッ" - ], - "text": "だっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "ユウ" - ], - "text": "いう" - }, - { - "hanReadings": [ - "[" - ], - "text": "[" - }, - { - "hanReadings": [ - "]" - ], - "text": "]" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ダイ" - ], - "text": "第" - }, - { - "hanReadings": [ - "カイ" - ], - "text": "回" - }, - { - "hanReadings": [ - "シュウギ" - ], - "text": "衆議" - }, - { - "hanReadings": [ - "イン" - ], - "text": "院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "ソウ" - ], - "text": "総" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ジミン" - ], - "text": "自民" - }, - { - "hanReadings": [ - "トウ" - ], - "text": "党" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "コウニン" - ], - "text": "公認" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ウ" - ], - "text": "得" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "タナカ" - ], - "text": "田中" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "派" - }, - { - "hanReadings": [ - "シンジン" - ], - "text": "新人" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ハトヤマ" - ], - "text": "鳩山" - }, - { - "hanReadings": [ - "カ" - ], - "text": "家" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "ボクジョウ" - ], - "text": "牧場" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "ショユウ" - ], - "text": "所有" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "ハトヤマ" - ], - "text": "鳩山" - }, - { - "hanReadings": [ - "ジンジャ" - ], - "text": "神社" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "ユウ" - ], - "text": "いう" - }, - { - "hanReadings": [ - "ジンジャ" - ], - "text": "神社" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "アル" - ], - "text": "ある" - }, - { - "hanReadings": [ - "ソフ" - ], - "text": "祖父" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ダイ" - ], - "text": "代" - }, - { - "hanReadings": [ - "カラ" - ], - "text": "から" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジバン" - ], - "text": "地盤" - }, - { - "hanReadings": [ - "ホッカイドウ" - ], - "text": "北海道" - }, - { - "hanReadings": [ - "カラ" - ], - "text": "から" - }, - { - "hanReadings": [ - "[" - ], - "text": "[" - }, - { - "hanReadings": [ - "]" - ], - "text": "]" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "シュツバ" - ], - "text": "出馬" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ハトヤマ" - ], - "text": "鳩山" - }, - { - "hanReadings": [ - "ジム" - ], - "text": "事務" - }, - { - "hanReadings": [ - "ドコロ" - ], - "text": "所" - }, - { - "hanReadings": [ - "ソバ" - ], - "text": "側" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "「" - ], - "text": "「" - }, - { - "hanReadings": [ - "タテ" - ], - "text": "立" - }, - { - "hanReadings": [ - "コウホ" - ], - "text": "候補" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "チョクセツ" - ], - "text": "直接" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "キッカケ" - ], - "text": "きっかけ" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "サエグサ" - ], - "text": "三枝" - }, - { - "hanReadings": [ - "サブロウ" - ], - "text": "三郎" - }, - { - "hanReadings": [ - "シュウギ" - ], - "text": "衆議" - }, - { - "hanReadings": [ - "イン" - ], - "text": "院" - }, - { - "hanReadings": [ - "ギイン" - ], - "text": "議員" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ヒキノケ" - ], - "text": "引退" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "キッカケ" - ], - "text": "きっかけ" - }, - { - "hanReadings": [ - "」" - ], - "text": "」" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "シュチョウ" - ], - "text": "主張" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イル" - ], - "text": "いる" - }, - { - "hanReadings": [ - "[" - ], - "text": "[" - }, - { - "hanReadings": [ - "]" - ], - "text": "]" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ハツ" - ], - "text": "初" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "スローガン" - ], - "text": "スローガン" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "カガク" - ], - "text": "科学" - }, - { - "hanReadings": [ - "シャ" - ], - "text": "者" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "シボウ" - ], - "text": "志望" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ジシン" - ], - "text": "自身" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ケイレキ" - ], - "text": "経歴" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "アピール" - ], - "text": "アピール" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "「" - ], - "text": "「" - }, - { - "hanReadings": [ - "セイジ" - ], - "text": "政治" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "カガク" - ], - "text": "科学" - }, - { - "hanReadings": [ - "スル" - ], - "text": "する" - }, - { - "hanReadings": [ - "」" - ], - "text": "」" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "アッ" - ], - "text": "あっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "[" - ], - "text": "[" - }, - { - "hanReadings": [ - "]" - ], - "text": "]" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "トク" - ], - "text": "得" - }, - { - "hanReadings": [ - "ヒョウスウ" - ], - "text": "票数" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "オナジ" - ], - "text": "同じ" - }, - { - "hanReadings": [ - "ジミン" - ], - "text": "自民" - }, - { - "hanReadings": [ - "トウ" - ], - "text": "党" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "タカバシ" - ], - "text": "高橋" - }, - { - "hanReadings": [ - "タツオ" - ], - "text": "辰夫" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ツイ" - ], - "text": "次い" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "ツガイ" - ], - "text": "番" - }, - { - "hanReadings": [ - "メ" - ], - "text": "目" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "トクヒョウ" - ], - "text": "得票" - }, - { - "hanReadings": [ - "スウ" - ], - "text": "数" - }, - { - "hanReadings": [ - "デ" - ], - "text": "で" - }, - { - "hanReadings": [ - "トウセン" - ], - "text": "当選" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "コ" - ], - "text": "小" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "ク" - ], - "text": "区" - }, - { - "hanReadings": [ - "ニ" - ], - "text": "に" - }, - { - "hanReadings": [ - "ナッ" - ], - "text": "なっ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "ネン" - ], - "text": "年" - }, - { - "hanReadings": [ - "イコウ" - ], - "text": "以降" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ハトヤマ" - ], - "text": "鳩山" - }, - { - "hanReadings": [ - "カ" - ], - "text": "家" - }, - { - "hanReadings": [ - "ガ" - ], - "text": "が" - }, - { - "hanReadings": [ - "カイタク" - ], - "text": "開拓" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "チイキ" - ], - "text": "地域" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ハトヤマ" - ], - "text": "鳩山" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "ク" - ], - "text": "区" - }, - { - "hanReadings": [ - "カラ" - ], - "text": "から" - }, - { - "hanReadings": [ - "ハズレ" - ], - "text": "外れ" - }, - { - "hanReadings": [ - "タ" - ], - "text": "た" - }, - { - "hanReadings": [ - "[" - ], - "text": "[" - }, - { - "hanReadings": [ - "]" - ], - "text": "]" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - }, - { - "hanReadings": [ - "ナオ" - ], - "text": "なお" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "チホウ" - ], - "text": "地方" - }, - { - "hanReadings": [ - "クワケ" - ], - "text": "区分" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "センキョ" - ], - "text": "選挙" - }, - { - "hanReadings": [ - "ク" - ], - "text": "区" - }, - { - "hanReadings": [ - "ジタイ" - ], - "text": "自体" - }, - { - "hanReadings": [ - "ハ" - ], - "text": "は" - }, - { - "hanReadings": [ - "ソフ" - ], - "text": "祖父" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "チョウフク" - ], - "text": "重複" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "ナイ" - ], - "text": "ない" - }, - { - "hanReadings": [ - "タメ" - ], - "text": "ため" - }, - { - "hanReadings": [ - "、" - ], - "text": "、" - }, - { - "hanReadings": [ - "ソフ" - ], - "text": "祖父" - }, - { - "hanReadings": [ - "ノ" - ], - "text": "の" - }, - { - "hanReadings": [ - "ジバン" - ], - "text": "地盤" - }, - { - "hanReadings": [ - "ヲ" - ], - "text": "を" - }, - { - "hanReadings": [ - "セシュウ" - ], - "text": "世襲" - }, - { - "hanReadings": [ - "シ" - ], - "text": "し" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イ" - ], - "text": "い" - }, - { - "hanReadings": [ - "ナイ" - ], - "text": "ない" - }, - { - "hanReadings": [ - "ト" - ], - "text": "と" - }, - { - "hanReadings": [ - "アツカワ" - ], - "text": "扱わ" - }, - { - "hanReadings": [ - "レ" - ], - "text": "れ" - }, - { - "hanReadings": [ - "テ" - ], - "text": "て" - }, - { - "hanReadings": [ - "イル" - ], - "text": "いる" - }, - { - "hanReadings": [ - "[" - ], - "text": "[" - }, - { - "hanReadings": [ - "]" - ], - "text": "]" - }, - { - "hanReadings": [ - "。" - ], - "text": "。" - } - ], - "lemmas": [ - { - "lemma": "政治", - "text": "政治" - }, - { - "lemma": "家", - "text": "家" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "志す", - "text": "志し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "きっかけ", - "text": "きっかけ" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "中川", - "text": "中川" - }, - { - "lemma": "一郎", - "text": "一郎" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "存在", - "text": "存在" - }, - { - "lemma": "だ", - "text": "だっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "いう", - "text": "いう" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "1986", - "text": "1986" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "第", - "text": "第" - }, - { - "lemma": "38", - "text": "38" - }, - { - "lemma": "回", - "text": "回" - }, - { - "lemma": "衆議", - "text": "衆議" - }, - { - "lemma": "院", - "text": "院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "総", - "text": "総" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "自民", - "text": "自民" - }, - { - "lemma": "党", - "text": "党" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "公認", - "text": "公認" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "得", - "text": "得" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "田中", - "text": "田中" - }, - { - "lemma": "派", - "text": "派" - }, - { - "lemma": "新人", - "text": "新人" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "する", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "鳩山", - "text": "鳩山" - }, - { - "lemma": "家", - "text": "家" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "牧場", - "text": "牧場" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "所有", - "text": "所有" - }, - { - "lemma": "す", - "text": "し" - }, - { - "lemma": "鳩山", - "text": "鳩山" - }, - { - "lemma": "神社", - "text": "神社" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "いう", - "text": "いう" - }, - { - "lemma": "神社", - "text": "神社" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "ある", - "text": "ある" - }, - { - "lemma": "祖父", - "text": "祖父" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "代", - "text": "代" - }, - { - "lemma": "から", - "text": "から" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "地盤", - "text": "地盤" - }, - { - "lemma": "北海道", - "text": "北海道" - }, - { - "lemma": "から", - "text": "から" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "4", - "text": "4" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "出馬", - "text": "出馬" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "鳩山", - "text": "鳩山" - }, - { - "lemma": "事務", - "text": "事務" - }, - { - "lemma": "所", - "text": "所" - }, - { - "lemma": "側", - "text": "側" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "「", - "text": "「" - }, - { - "lemma": "立", - "text": "立" - }, - { - "lemma": "候補", - "text": "候補" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "直接", - "text": "直接" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "きっかけ", - "text": "きっかけ" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "三枝", - "text": "三枝" - }, - { - "lemma": "三郎", - "text": "三郎" - }, - { - "lemma": "衆議", - "text": "衆議" - }, - { - "lemma": "院", - "text": "院" - }, - { - "lemma": "議員", - "text": "議員" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "引退る", - "text": "引退" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "きっかけ", - "text": "きっかけ" - }, - { - "lemma": "」", - "text": "」" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "主張", - "text": "主張" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "いる" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "5", - "text": "5" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "初", - "text": "初" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "スローガン", - "text": "スローガン" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "科学", - "text": "科学" - }, - { - "lemma": "者", - "text": "者" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "志望", - "text": "志望" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "自身", - "text": "自身" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "経歴", - "text": "経歴" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "アピール", - "text": "アピール" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "「", - "text": "「" - }, - { - "lemma": "政治", - "text": "政治" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "科学", - "text": "科学" - }, - { - "lemma": "する", - "text": "する" - }, - { - "lemma": "」", - "text": "」" - }, - { - "lemma": "だ", - "text": "で" - }, - { - "lemma": "ある", - "text": "あっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "6", - "text": "6" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "得", - "text": "得" - }, - { - "lemma": "票数", - "text": "票数" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "同じ", - "text": "同じ" - }, - { - "lemma": "自民", - "text": "自民" - }, - { - "lemma": "党", - "text": "党" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "高橋", - "text": "高橋" - }, - { - "lemma": "辰夫", - "text": "辰夫" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "次ぐ", - "text": "次い" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "番", - "text": "番" - }, - { - "lemma": "目", - "text": "目" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "得票", - "text": "得票" - }, - { - "lemma": "数", - "text": "数" - }, - { - "lemma": "で", - "text": "で" - }, - { - "lemma": "当選", - "text": "当選" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "小", - "text": "小" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "区", - "text": "区" - }, - { - "lemma": "に", - "text": "に" - }, - { - "lemma": "なる", - "text": "なっ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "1996", - "text": "1996" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "以降", - "text": "以降" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "鳩山", - "text": "鳩山" - }, - { - "lemma": "家", - "text": "家" - }, - { - "lemma": "が", - "text": "が" - }, - { - "lemma": "開拓", - "text": "開拓" - }, - { - "lemma": "す", - "text": "し" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "地域", - "text": "地域" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "鳩山", - "text": "鳩山" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "区", - "text": "区" - }, - { - "lemma": "から", - "text": "から" - }, - { - "lemma": "外れる", - "text": "外れ" - }, - { - "lemma": "た", - "text": "た" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "7", - "text": "7" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "なお", - "text": "なお" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "地方", - "text": "地方" - }, - { - "lemma": "区分", - "text": "区分" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "選挙", - "text": "選挙" - }, - { - "lemma": "区", - "text": "区" - }, - { - "lemma": "自体", - "text": "自体" - }, - { - "lemma": "は", - "text": "は" - }, - { - "lemma": "祖父", - "text": "祖父" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "重複", - "text": "重複" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "ない", - "text": "ない" - }, - { - "lemma": "ため", - "text": "ため" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "祖父", - "text": "祖父" - }, - { - "lemma": "の", - "text": "の" - }, - { - "lemma": "地盤", - "text": "地盤" - }, - { - "lemma": "を", - "text": "を" - }, - { - "lemma": "世襲", - "text": "世襲" - }, - { - "lemma": "き", - "text": "し" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "い" - }, - { - "lemma": "ない", - "text": "ない" - }, - { - "lemma": "と", - "text": "と" - }, - { - "lemma": "扱う", - "text": "扱わ" - }, - { - "lemma": "る", - "text": "れ" - }, - { - "lemma": "て", - "text": "て" - }, - { - "lemma": "いる", - "text": "いる" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "。", - "text": "。" - } - ], - "posTags": [ - { - "pos": "NC", - "text": "政治" - }, - { - "pos": "WS", - "text": "家" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "志し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "きっかけ" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NP", - "text": "中川" - }, - { - "pos": "NP", - "text": "一郎" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "存在" - }, - { - "pos": "AUXVB", - "text": "だっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "いう" - }, - { - "pos": "PUNCT", - "text": "[" - }, - { - "pos": "GUESS", - "text": "3" - }, - { - "pos": "PUNCT", - "text": "]" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "GUESS", - "text": "1986" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "WP", - "text": "第" - }, - { - "pos": "GUESS", - "text": "38" - }, - { - "pos": "NC", - "text": "回" - }, - { - "pos": "NC", - "text": "衆議" - }, - { - "pos": "WS", - "text": "院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "WP", - "text": "総" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NP", - "text": "自民" - }, - { - "pos": "WS", - "text": "党" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "公認" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "V", - "text": "得" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NP", - "text": "田中" - }, - { - "pos": "WS", - "text": "派" - }, - { - "pos": "NC", - "text": "新人" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NP", - "text": "鳩山" - }, - { - "pos": "WS", - "text": "家" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "NC", - "text": "牧場" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "所有" - }, - { - "pos": "FS", - "text": "し" - }, - { - "pos": "NP", - "text": "鳩山" - }, - { - "pos": "NC", - "text": "神社" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "いう" - }, - { - "pos": "NC", - "text": "神社" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "V", - "text": "ある" - }, - { - "pos": "NC", - "text": "祖父" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "代" - }, - { - "pos": "PL", - "text": "から" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "地盤" - }, - { - "pos": "NP", - "text": "北海道" - }, - { - "pos": "PL", - "text": "から" - }, - { - "pos": "PUNCT", - "text": "[" - }, - { - "pos": "GUESS", - "text": "4" - }, - { - "pos": "PUNCT", - "text": "]" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "VN", - "text": "出馬" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NP", - "text": "鳩山" - }, - { - "pos": "NC", - "text": "事務" - }, - { - "pos": "WS", - "text": "所" - }, - { - "pos": "NC", - "text": "側" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "PUNCT", - "text": "「" - }, - { - "pos": "WP", - "text": "立" - }, - { - "pos": "NC", - "text": "候補" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "直接" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "きっかけ" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NP", - "text": "三枝" - }, - { - "pos": "NP", - "text": "三郎" - }, - { - "pos": "NC", - "text": "衆議" - }, - { - "pos": "WS", - "text": "院" - }, - { - "pos": "NC", - "text": "議員" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "V", - "text": "引退" - }, - { - "pos": "PL", - "text": "が" - }, - { - "pos": "NC", - "text": "きっかけ" - }, - { - "pos": "PUNCT", - "text": "」" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "VN", - "text": "主張" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "いる" - }, - { - "pos": "PUNCT", - "text": "[" - }, - { - "pos": "GUESS", - "text": "5" - }, - { - "pos": "PUNCT", - "text": "]" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "初" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "NC", - "text": "スローガン" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "科学" - }, - { - "pos": "WS", - "text": "者" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "志望" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "自身" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "経歴" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "アピール" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "「" - }, - { - "pos": "NC", - "text": "政治" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "NC", - "text": "科学" - }, - { - "pos": "V", - "text": "する" - }, - { - "pos": "PUNCT", - "text": "」" - }, - { - "pos": "AUXVB", - "text": "で" - }, - { - "pos": "V", - "text": "あっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "[" - }, - { - "pos": "GUESS", - "text": "6" - }, - { - "pos": "PUNCT", - "text": "]" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "NC", - "text": "得" - }, - { - "pos": "NC", - "text": "票数" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "同じ" - }, - { - "pos": "NP", - "text": "自民" - }, - { - "pos": "WS", - "text": "党" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NP", - "text": "高橋" - }, - { - "pos": "NP", - "text": "辰夫" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "次い" - }, - { - "pos": "PL", - "text": "で" - }, - { - "pos": "GUESS", - "text": "2" - }, - { - "pos": "NC", - "text": "番" - }, - { - "pos": "WS", - "text": "目" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "得票" - }, - { - "pos": "NN", - "text": "数" - }, - { - "pos": "J", - "text": "で" - }, - { - "pos": "VN", - "text": "当選" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "WP", - "text": "小" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "NC", - "text": "区" - }, - { - "pos": "PL", - "text": "に" - }, - { - "pos": "V", - "text": "なっ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "GUESS", - "text": "1996" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "NC", - "text": "以降" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NP", - "text": "鳩山" - }, - { - "pos": "WS", - "text": "家" - }, - { - "pos": "J", - "text": "が" - }, - { - "pos": "VN", - "text": "開拓" - }, - { - "pos": "FS", - "text": "し" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "NC", - "text": "地域" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NP", - "text": "鳩山" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "WS", - "text": "区" - }, - { - "pos": "PL", - "text": "から" - }, - { - "pos": "V", - "text": "外れ" - }, - { - "pos": "AUXVB", - "text": "た" - }, - { - "pos": "PUNCT", - "text": "[" - }, - { - "pos": "GUESS", - "text": "7" - }, - { - "pos": "PUNCT", - "text": "]" - }, - { - "pos": "PUNCT", - "text": "。" - }, - { - "pos": "J", - "text": "なお" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NC", - "text": "地方" - }, - { - "pos": "VN", - "text": "区分" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "VN", - "text": "選挙" - }, - { - "pos": "NU", - "text": "区" - }, - { - "pos": "NC", - "text": "自体" - }, - { - "pos": "PL", - "text": "は" - }, - { - "pos": "NC", - "text": "祖父" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "VN", - "text": "重複" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "ない" - }, - { - "pos": "NC", - "text": "ため" - }, - { - "pos": "PUNCT", - "text": "、" - }, - { - "pos": "NC", - "text": "祖父" - }, - { - "pos": "PL", - "text": "の" - }, - { - "pos": "NC", - "text": "地盤" - }, - { - "pos": "PL", - "text": "を" - }, - { - "pos": "VN", - "text": "世襲" - }, - { - "pos": "AUXVB", - "text": "し" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "い" - }, - { - "pos": "AUXVB", - "text": "ない" - }, - { - "pos": "PL", - "text": "と" - }, - { - "pos": "V", - "text": "扱わ" - }, - { - "pos": "AUXVB", - "text": "れ" - }, - { - "pos": "PL", - "text": "て" - }, - { - "pos": "V", - "text": "いる" - }, - { - "pos": "PUNCT", - "text": "[" - }, - { - "pos": "GUESS", - "text": "8" - }, - { - "pos": "PUNCT", - "text": "]" - }, - { - "pos": "PUNCT", - "text": "。" - } - ], - "requestId": "30a0ae17-9293-40d6-9d1a-8ddeca752939", - "timers": { - "rblJe": 7, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-morphology_complete.status b/api/src/test/mock-data/response/jpn-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-sentiment.json b/api/src/test/mock-data/response/jpn-sentence-sentiment.json deleted file mode 100644 index 89359da683..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Japanese is not supported by Rosette Sentiment Analyzer", - "requestId": "8b433d8f-c56b-4392-abb9-694a956af778" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/jpn-sentence-sentiment.status b/api/src/test/mock-data/response/jpn-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/jpn-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/ping.json b/api/src/test/mock-data/response/ping.json deleted file mode 100644 index e114494549..0000000000 --- a/api/src/test/mock-data/response/ping.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message":"Rosette API at your service", - "time":1433962008758 -} diff --git a/api/src/test/mock-data/response/ping.status b/api/src/test/mock-data/response/ping.status deleted file mode 100644 index 08839f6bb2..0000000000 --- a/api/src/test/mock-data/response/ping.status +++ /dev/null @@ -1 +0,0 @@ -200 diff --git a/api/src/test/mock-data/response/pus-doc-categories.json b/api/src/test/mock-data/response/pus-doc-categories.json index 8215f5d180..85a832329d 100644 --- a/api/src/test/mock-data/response/pus-doc-categories.json +++ b/api/src/test/mock-data/response/pus-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Persian is not supported by Rosette Categorizer", - "requestId": "b5178a55-1144-46b9-bb2a-aeeb154d3928" + "message": "PUSHTO is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-doc-entities.json b/api/src/test/mock-data/response/pus-doc-entities.json index 4b0054eba6..a3911f970f 100644 --- a/api/src/test/mock-data/response/pus-doc-entities.json +++ b/api/src/test/mock-data/response/pus-doc-entities.json @@ -1,506 +1,18 @@ { "entities": [ { - "confidence": 0.03916314670017788, - "count": 7, - "indocChainId": 35, - "mention": "ښاغلی", - "normalized": "ښاغلی", - "type": "TITLE" - }, - { - "confidence": 0.007801820834477742, - "count": 6, - "indocChainId": 29, - "mention": "نوماند وزير", - "normalized": "نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.03787636756896973, - "count": 5, - "indocChainId": 0, - "mention": "افغانستان", - "normalized": "افغانستان", - "type": "LOCATION" - }, - { - "confidence": 0.029533326625823975, - "count": 3, - "indocChainId": 15, - "mention": "پارلمان", - "normalized": "پارلمان", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03755847613016764, - "count": 3, - "indocChainId": 63, - "mention": "انجنير", - "normalized": "انجنير", - "type": "TITLE" - }, - { - "confidence": 0.05754426121711731, - "count": 2, - "indocChainId": 2, - "mention": "ولسمشر", - "normalized": "ولسمشر", - "type": "TITLE" - }, - { - "confidence": 0.033583104610443115, - "count": 2, - "indocChainId": 3, - "mention": "حامد كرزي", - "normalized": "حامد كرزي", - "type": "PERSON" - }, - { - "confidence": 0.031616926193237305, - "count": 2, - "indocChainId": 4, - "mention": "بهرنيو چارو د وزير", - "normalized": "بهرنيو چارو د وزير", - "type": "TITLE" - }, - { - "confidence": 0.00478130578994751, "count": 2, - "indocChainId": 5, - "mention": "سلاكار", - "normalized": "سلاكار", - "type": "TITLE" - }, - { - "confidence": 0.022341817617416382, - "count": 2, - "indocChainId": 6, - "mention": "زلمي رسول", - "normalized": "زلمي رسول", - "type": "PERSON" - }, - { - "confidence": 0.04105132818222046, - "count": 2, - "indocChainId": 14, - "mention": "كريم خليلي", - "normalized": "كريم خليلي", - "type": "PERSON" - }, - { - "confidence": 0.00576329231262207, - "count": 2, - "indocChainId": 17, - "mention": "وزيرانو", - "normalized": "وزيرانو", - "type": "TITLE" - }, - { - "confidence": 0.030164211988449097, - "count": 2, - "indocChainId": 33, - "mention": "ډاکټر", - "normalized": "ډاکټر", - "type": "TITLE" - }, - { - "confidence": 0.02519279718399048, - "count": 2, - "indocChainId": 57, - "mention": "اغلې", - "normalized": "اغلې", - "type": "TITLE" - }, - { - "confidence": 0.019838571548461914, - "count": 1, - "indocChainId": 13, - "mention": "ولسمشر مرستيال", - "normalized": "ولسمشر مرستيال", - "type": "TITLE" - }, - { - "confidence": 0.030272245407104492, - "count": 1, - "indocChainId": 22, - "mention": "بهرنيو چارو نوماند وزير", - "normalized": "بهرنيو چارو نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.04382455348968506, - "count": 1, - "indocChainId": 23, - "mention": "زلمی رسول", - "normalized": "زلمی رسول", - "type": "PERSON" - }, - { - "confidence": 0.0041877031326293945, - "count": 1, - "indocChainId": 24, - "mention": "ولسمشر امنيتي سلاکار", - "normalized": "ولسمشر امنيتي سلاکار", - "type": "TITLE" - }, - { - "confidence": 0.028324902057647705, - "count": 1, - "indocChainId": 25, - "mention": "عدليې نوماند وزير", - "normalized": "عدليې نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.004933297634124756, - "count": 1, - "indocChainId": 26, - "mention": "حبيب الله غالب غالب", - "normalized": "حبيب الله غالب غالب", - "type": "PERSON" - }, - { - "confidence": 0.005223214626312256, - "count": 1, - "indocChainId": 27, - "mention": "شرعياتو", - "normalized": "شرعياتو", + "indocChainId": 1, + "mention": "کوټې", + "normalized": "کوټې", "type": "LOCATION" }, { - "confidence": 0.02999025583267212, - "count": 1, - "indocChainId": 28, - "mention": "عبدرب رسول سياف", - "normalized": "عبدرب رسول سياف", - "type": "PERSON" - }, - { - "confidence": 0.012441575527191162, - "count": 1, - "indocChainId": 30, - "mention": "محمد هاشم عصمت الهي", - "normalized": "محمد هاشم عصمت الهي", - "type": "PERSON" - }, - { - "confidence": 0.02618861198425293, "count": 1, - "indocChainId": 31, - "mention": "اصف محسني", - "normalized": "اصف محسني", - "type": "PERSON" - }, - { - "confidence": 0.009061336517333984, - "count": 1, - "indocChainId": 34, - "mention": "نيازی", - "normalized": "نيازی", - "type": "PERSON" - }, - { - "confidence": 0.00313723087310791, - "count": 1, - "indocChainId": 34, - "mention": "محمد يوسف نيازی", - "normalized": "محمد يوسف نيازی", - "type": "PERSON" - }, - { - "confidence": 0.0046912431716918945, - "count": 1, - "indocChainId": 37, - "mention": "عامې نوماند وزير", - "normalized": "عامې نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 2.962350845336914e-05, - "count": 1, - "indocChainId": 38, - "mention": "محمد بشير لعلي", - "normalized": "محمد بشير لعلي", - "type": "PERSON" - }, - { - "confidence": 0.0180090069770813, - "count": 1, - "indocChainId": 39, - "mention": "عامې روغتيا نوماند وزير", - "normalized": "عامې روغتيا نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.01904827356338501, - "count": 1, - "indocChainId": 41, - "mention": "ثريا", - "normalized": "ثريا", - "type": "PERSON" - }, - { - "confidence": 0.002719104290008545, - "count": 1, - "indocChainId": 42, - "mention": "کينيا", - "normalized": "کينيا", - "type": "LOCATION" - }, - { - "confidence": 0.004633128643035889, - "count": 1, - "indocChainId": 44, - "mention": "يونيسف", - "normalized": "يونيسف", - "type": "ORGANIZATION" - }, - { - "confidence": 0.018250882625579834, - "count": 1, - "indocChainId": 45, - "mention": "اقتصاد نوماند وزير", - "normalized": "اقتصاد نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.03505206108093262, - "count": 1, - "indocChainId": 46, - "mention": "عبدالهادي ارغنديوال", - "normalized": "عبدالهادي ارغنديوال", - "type": "PERSON" - }, - { - "confidence": 0.05095309019088745, - "count": 1, - "indocChainId": 46, - "mention": "ارغنديوال", - "normalized": "ارغنديوال", - "type": "PERSON" - }, - { - "confidence": 0.00369340181350708, - "count": 1, - "indocChainId": 49, - "mention": "سوداګرۍ او صنايعو نوماند وزير", - "normalized": "سوداګرۍ او صنايعو نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.013631701469421387, - "count": 1, - "indocChainId": 50, - "mention": "محمد هادي حکيمي", - "normalized": "محمد هادي حکيمي", - "type": "PERSON" - }, - { - "confidence": 0.029611587524414062, - "count": 1, - "indocChainId": 50, - "mention": "حکيمي", - "normalized": "حکيمي", - "type": "PERSON" - }, - { - "confidence": 0.0037049055099487305, - "count": 1, - "indocChainId": 54, - "mention": "جارالله", - "normalized": "جارالله", - "type": "PERSON" - }, - { - "confidence": 0.004224538803100586, - "count": 1, - "indocChainId": 55, - "mention": "معلولينو نوماند وزير", - "normalized": "معلولينو نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.01109844446182251, - "count": 1, - "indocChainId": 56, - "mention": "امنه افضلي", - "normalized": "امنه افضلي", - "type": "PERSON" - }, - { - "confidence": 0.034655988216400146, - "count": 1, - "indocChainId": 56, - "mention": "افضلي", - "normalized": "افضلي", - "type": "PERSON" - }, - { - "confidence": 0.010983049869537354, - "count": 1, - "indocChainId": 59, - "mention": "چلند وزير", - "normalized": "چلند وزير", - "type": "TITLE" - }, - { - "confidence": 0.004098773002624512, - "count": 1, - "indocChainId": 60, - "mention": "عبدالرحيم اوراز", - "normalized": "عبدالرحيم اوراز", - "type": "PERSON" - }, - { - "confidence": 0.08212143182754517, - "count": 1, - "indocChainId": 60, - "mention": "عبدالرحيم", - "normalized": "عبدالرحيم", - "type": "PERSON" - }, - { - "confidence": 0.004256248474121094, - "count": 1, - "indocChainId": 60, - "mention": "اوراز", - "normalized": "اوراز", - "type": "PERSON" - }, - { - "confidence": 0.03391331434249878, - "count": 1, - "indocChainId": 64, - "mention": "بهرنيو چارو وزارت", - "normalized": "بهرنيو چارو وزارت", - "type": "ORGANIZATION" - }, - { - "confidence": 0.021835267543792725, - "count": 1, - "indocChainId": 65, - "mention": "ښځو چارو نومانده وزيره", - "normalized": "ښځو چارو نومانده وزيره", - "type": "TITLE" - }, - { - "confidence": 0.004233062267303467, - "count": 1, - "indocChainId": 66, - "mention": "پلوشه حسن", - "normalized": "پلوشه حسن", - "type": "PERSON" - }, - { - "confidence": 0.03508961200714111, - "count": 1, - "indocChainId": 66, - "mention": "حسن", - "normalized": "حسن", - "type": "PERSON" - }, - { - "confidence": 0.027159810066223145, - "count": 1, - "indocChainId": 69, - "mention": "کډوالو او راستنېدونکو چارو نوماند وزير", - "normalized": "کډوالو او راستنېدونکو چارو نوماند وزير", - "type": "TITLE" - }, - { - "confidence": 0.0005469918251037598, - "count": 1, - "indocChainId": 72, - "mention": "سرحدونو", - "normalized": "سرحدونو", - "type": "ORGANIZATION" - }, - { - "confidence": 0.029864192008972168, - "count": 1, - "indocChainId": 74, - "mention": "جمال", - "normalized": "جمال", - "type": "PERSON" - }, - { - "confidence": 0.029639482498168945, - "count": 1, - "indocChainId": 74, - "mention": "ارسلا جمال", - "normalized": "ارسلا جمال", - "type": "PERSON" - }, - { - "confidence": 0.04481011629104614, - "count": 1, - "indocChainId": 77, - "mention": "خوست", - "normalized": "خوست", - "type": "LOCATION" - }, - { - "confidence": 0.022002756595611572, - "count": 1, - "indocChainId": 79, - "mention": "مقبل", - "normalized": "مقبل", - "type": "PERSON" - }, - { - "confidence": 0.019781112670898438, - "count": 1, - "indocChainId": 79, - "mention": "ضرار احمد مقبل", - "normalized": "ضرار احمد مقبل", - "type": "PERSON" - }, - { - "confidence": 0.0150221586227417, - "count": 1, - "indocChainId": 82, - "mention": "کرزي", - "normalized": "کرزي", - "type": "PERSON" - }, - { - "confidence": 0.036535441875457764, - "count": 1, - "indocChainId": 83, - "mention": "کورنيو چار وزير", - "normalized": "کورنيو چار وزير", + "indocChainId": 0, + "mention": "علامه", + "normalized": "علامه", "type": "TITLE" - }, - { - "confidence": 0.0030456185340881348, - "count": 1, - "indocChainId": 86, - "mention": "سلطان حسين حصاري", - "normalized": "سلطان حسين حصاري", - "type": "PERSON" - }, - { - "confidence": 0.009828627109527588, - "count": 1, - "indocChainId": 86, - "mention": "حصاري", - "normalized": "حصاري", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 89, - "mention": "http://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62", - "normalized": "http://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62", - "type": "IDENTIFIER:URL" } - ], - "requestId": "517da744-d53c-46a0-bf0a-c0f179966dbe", - "timers": { - "rblJe": 2, - "rexJe": 42, - "rliJe": 5 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/pus-doc-entities_linked.json b/api/src/test/mock-data/response/pus-doc-entities_linked.json index be7e6056dd..34fa0833f3 100644 --- a/api/src/test/mock-data/response/pus-doc-entities_linked.json +++ b/api/src/test/mock-data/response/pus-doc-entities_linked.json @@ -1,185 +1,3 @@ { - "entities": [ - { - "confidence": 0.6891193173120407, - "entityId": "Q889", - "indocChainId": 0, - "mention": "افغانستان" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 3, - "mention": "حامد كرزي" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 6, - "mention": "زلمي رسول" - }, - { - "confidence": 0.04106755494589285, - "entityId": "NEW-CLUSTER", - "indocChainId": 14, - "mention": "كريم خليلي" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 15, - "mention": "پارلمان" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 23, - "mention": "زلمی رسول" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 26, - "mention": "حبيب الله غالب غالب" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 27, - "mention": "شرعياتو" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 28, - "mention": "عبدرب رسول سياف" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 30, - "mention": "محمد هاشم عصمت الهي" - }, - { - "confidence": 0.19077566505957252, - "entityId": "NEW-CLUSTER", - "indocChainId": 31, - "mention": "اصف محسني" - }, - { - "confidence": 0.546001935291275, - "entityId": "NEW-CLUSTER", - "indocChainId": 34, - "mention": "محمد يوسف نيازی" - }, - { - "confidence": 0.2984344326272448, - "entityId": "NEW-CLUSTER", - "indocChainId": 38, - "mention": "محمد بشير لعلي" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 41, - "mention": "ثريا" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 42, - "mention": "کينيا" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 44, - "mention": "يونيسف" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 46, - "mention": "عبدالهادي ارغنديوال" - }, - { - "confidence": 0.6088921292450847, - "entityId": "NEW-CLUSTER", - "indocChainId": 50, - "mention": "محمد هادي حکيمي" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 54, - "mention": "جارالله" - }, - { - "confidence": 0.35966351039847877, - "entityId": "NEW-CLUSTER", - "indocChainId": 56, - "mention": "امنه افضلي" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 60, - "mention": "عبدالرحيم اوراز" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 64, - "mention": "بهرنيو چارو وزارت" - }, - { - "confidence": 0.054531806939826635, - "entityId": "NEW-CLUSTER", - "indocChainId": 66, - "mention": "پلوشه حسن" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 72, - "mention": "سرحدونو" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 74, - "mention": "ارسلا جمال" - }, - { - "confidence": 0.3728095979250402, - "entityId": "NEW-CLUSTER", - "indocChainId": 77, - "mention": "خوست" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 79, - "mention": "ضرار احمد مقبل" - }, - { - "confidence": 0.5933805019138657, - "entityId": "NEW-CLUSTER", - "indocChainId": 82, - "mention": "کرزي" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 86, - "mention": "سلطان حسين حصاري" - } - ], - "requestId": "3b69c759-74c9-49eb-a7f3-cbff8f7b865c", - "timers": { - "rblJe": 2, - "res": 909, - "rexJe": 27, - "rliJe": 4 - } + "entities": [] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-doc-language.json b/api/src/test/mock-data/response/pus-doc-language.json index e7144411d0..29484982b6 100644 --- a/api/src/test/mock-data/response/pus-doc-language.json +++ b/api/src/test/mock-data/response/pus-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.04555813341358239, - "language": "fas" - }, - { - "confidence": 0.04536807488441863, - "language": "ara" - }, - { - "confidence": 0.040006929182747064, + "confidence": 1.0, "language": "pus" - }, - { - "confidence": 0.03774301454514406, - "language": "kur" - }, - { - "confidence": 0.03640237440391736, - "language": "urd" } - ], - "requestId": "3347e76d-4bdc-4754-9adf-ee589a7e96ad", - "timers": { - "rliJe": 5 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-doc-morphology_complete.json b/api/src/test/mock-data/response/pus-doc-morphology_complete.json index 191f3dc023..17e7e9164c 100644 --- a/api/src/test/mock-data/response/pus-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/pus-doc-morphology_complete.json @@ -1,11 +1,757 @@ { - "compounds": [], - "hanReadings": [], - "lemmas": [], - "posTags": [], - "requestId": "f4eaf1f3-363a-4e56-a7b7-caf07ba6f671", - "timers": { - "rblJe": 2, - "rliJe": 5 - } + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "lemmas": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "posTags": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "tokens": [ + "د", + "پښتو", + "ادب", + "په", + "کلاسیکه", + "شاعرۍ", + "کې", + "خوشال", + "هغه", + "علامه", + "،", + "نابغه", + "،", + "ستر", + "شاعر", + "او", + "لوی", + "ادیب", + "دی", + "،", + "چې", + "د", + "څه", + "کم", + "څلورسو", + "کالو", + "راهسې", + "دده", + "کلتوري", + "خزانه", + "تر", + "ننه", + "پورې", + "دافغان", + "ولس", + "د", + "نړۍ", + "د", + "لویو", + "پوهانو", + "او", + "پوهنيزو", + "مرکزونو", + "د", + "پاملرنې", + "او", + "څیړنې", + "وړ", + "کرځیدلې", + "ده", + ".", + "د", + "څیړونکو", + "ځیرکتنه", + "به", + "تر", + "هغې", + "پورې", + "دغه", + "کلتوري", + "میراث", + "ته", + "وجود", + "ولری", + "،", + "څو", + "چې", + "په", + "نړۍ", + "کې", + "ولسونه", + "په", + "پوهنه", + "او", + "څیړنه", + "بو", + "خت", + "وي", + ".", + "له", + "خوشال", + "څخه", + "کوټې", + "کوټې", + "موضوعات", + "او", + "درانه", + "درانه", + "اثار", + "په", + "میراث", + "راپاتې", + "دي", + ".", + "دده", + "اثار", + "د", + "شعر", + "،", + "ادب", + "،", + "ژبپوهنې", + "او", + "نورو", + "بېلا", + "بېلو", + "پوهنو", + "او", + "څیړنو", + "لپاره", + "لوی", + "دریاب", + "دی", + "،", + "چې", + "لامبوزن", + "هم", + "پکې", + "سټر", + "کیږی", + "خو", + "دده", + "برید", + "،", + "پوله", + "،", + "سر", + "او", + "تل", + "به", + "تر", + "خپلې", + "لامبو", + "لاندې", + "داخیل", + "نه", + "کړی", + "او", + "د", + "ژوند", + "تر", + "پایه", + "به", + "پکې", + "ستړی", + "او", + "ستومانه", + "وي", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-doc-sentiment.json b/api/src/test/mock-data/response/pus-doc-sentiment.json index e7c4ce522f..70587c5078 100644 --- a/api/src/test/mock-data/response/pus-doc-sentiment.json +++ b/api/src/test/mock-data/response/pus-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Persian is not supported by Rosette Sentiment Analyzer", - "requestId": "708e21fd-3fd8-4164-bf41-44655a81b2bb" + "message": "Unsupported language: Pushto" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-categories.json b/api/src/test/mock-data/response/pus-sentence-categories.json deleted file mode 100644 index 7aca719050..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Persian is not supported by Rosette Categorizer", - "requestId": "2c597ca3-a70b-4d73-bd4d-139402571fc4" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-categories.status b/api/src/test/mock-data/response/pus-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-entities.json b/api/src/test/mock-data/response/pus-sentence-entities.json deleted file mode 100644 index ff21f65f80..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-entities.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.002526581287384033, - "count": 2, - "indocChainId": 1, - "mention": "کوټې", - "normalized": "کوټې", - "type": "LOCATION" - }, - { - "confidence": 0.0011008381843566895, - "count": 1, - "indocChainId": 0, - "mention": "علامه", - "normalized": "علامه", - "type": "TITLE" - } - ], - "requestId": "d5f167c6-4fe3-44b5-b753-b047989f58c7", - "timers": { - "rblJe": 0, - "rexJe": 9, - "rliJe": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-entities.status b/api/src/test/mock-data/response/pus-sentence-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-entities_linked.json b/api/src/test/mock-data/response/pus-sentence-entities_linked.json deleted file mode 100644 index ea6e419644..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-entities_linked.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "entities": [ - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 1, - "mention": "کوټې" - } - ], - "requestId": "e512c2b4-eabe-46dd-bf4c-3d758542e32a", - "timers": { - "rblJe": 1, - "res": 27, - "rexJe": 4, - "rliJe": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-entities_linked.status b/api/src/test/mock-data/response/pus-sentence-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-language.json b/api/src/test/mock-data/response/pus-sentence-language.json deleted file mode 100644 index 5455a0bc31..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.05156068771246869, - "language": "fas" - }, - { - "confidence": 0.04944655193168801, - "language": "kur" - }, - { - "confidence": 0.04115942089539337, - "language": "urd" - }, - { - "confidence": 0.040492240791045075, - "language": "pus" - }, - { - "confidence": 0.032893289522712754, - "language": "ara" - } - ], - "requestId": "44be1e91-1dbd-4bbf-9a80-fe05f3973a4c", - "timers": { - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-language.status b/api/src/test/mock-data/response/pus-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-morphology_complete.json b/api/src/test/mock-data/response/pus-sentence-morphology_complete.json deleted file mode 100644 index 3f41824045..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-morphology_complete.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compounds": [], - "hanReadings": [], - "lemmas": [], - "posTags": [], - "requestId": "b690bd9a-845e-4418-a7d4-583c9e52071d", - "timers": { - "rblJe": 1, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-morphology_complete.status b/api/src/test/mock-data/response/pus-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-sentiment.json b/api/src/test/mock-data/response/pus-sentence-sentiment.json deleted file mode 100644 index d0ef97dcdf..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Persian is not supported by Rosette Sentiment Analyzer", - "requestId": "94b2ac8e-150c-4566-82aa-91e8ae55e1c7" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/pus-sentence-sentiment.status b/api/src/test/mock-data/response/pus-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/pus-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/retry-fail.json b/api/src/test/mock-data/response/retry-fail.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/api/src/test/mock-data/response/retry-fail.status b/api/src/test/mock-data/response/retry-fail.status deleted file mode 100644 index 73623d101c..0000000000 --- a/api/src/test/mock-data/response/retry-fail.status +++ /dev/null @@ -1 +0,0 @@ -600 \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-address-similarity.json b/api/src/test/mock-data/response/rni-1-address-similarity.json new file mode 100644 index 0000000000..5bcc395192 --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-address-similarity.json @@ -0,0 +1,3 @@ +{ + "score": 0.77 +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-language.status b/api/src/test/mock-data/response/rni-1-address-similarity.status similarity index 100% rename from api/src/test/mock-data/response/ara-sentence-language.status rename to api/src/test/mock-data/response/rni-1-address-similarity.status diff --git a/api/src/test/mock-data/response/rni-1-matched-name.json b/api/src/test/mock-data/response/rni-1-matched-name.json deleted file mode 100644 index 026f58a84f..0000000000 --- a/api/src/test/mock-data/response/rni-1-matched-name.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "requestId": "80dbad15-042d-4ed0-a8d7-ca26a7f4fbf9", - "result": { - "score": 0.8081265839595974 - }, - "timers": { - "rni": 1 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-matched-name.status b/api/src/test/mock-data/response/rni-1-matched-name.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/rni-1-matched-name.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-name-deduplication.json b/api/src/test/mock-data/response/rni-1-name-deduplication.json new file mode 100644 index 0000000000..2c8999d305 --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-name-deduplication.json @@ -0,0 +1,5 @@ +{ + "results": [ + "1", "2" + ] +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/ara-sentence-morphology_complete.status b/api/src/test/mock-data/response/rni-1-name-deduplication.status similarity index 100% rename from api/src/test/mock-data/response/ara-sentence-morphology_complete.status rename to api/src/test/mock-data/response/rni-1-name-deduplication.status diff --git a/api/src/test/mock-data/response/rni-1-name-similarity.json b/api/src/test/mock-data/response/rni-1-name-similarity.json new file mode 100644 index 0000000000..99ee4de459 --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-name-similarity.json @@ -0,0 +1,3 @@ +{ + "score": 0.8102299979459664 +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/bad_info.status b/api/src/test/mock-data/response/rni-1-name-similarity.status similarity index 100% rename from api/src/test/mock-data/response/bad_info.status rename to api/src/test/mock-data/response/rni-1-name-similarity.status diff --git a/api/src/test/mock-data/response/rni-1-record-similarity-missing-field.json b/api/src/test/mock-data/response/rni-1-record-similarity-missing-field.json new file mode 100644 index 0000000000..a96a999bfa --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-record-similarity-missing-field.json @@ -0,0 +1 @@ +{"results":[{"score":0.0,"left":{"dob2":"1993/04/16","dob":"1993-04-16","primaryName":{"data":"Ethan R","language":"eng","entityType":"PERSON"},"addr":"123 Roadlane Ave"},"right":{"dob":"1993-04-16","primaryName":"Seth R"},"error":"Field 'primaryName' not found in field mapping"},{"score":0.0,"left":{"dob":"1993-04-16","primaryName":"Evan R"},"right":{"dob2":"1993/04/16","dob":"1993-04-16","primaryName":"Ivan R","addr":"123 Roadlane Ave"},"error":"Field 'primaryName' not found in field mapping"}]} \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-record-similarity-missing-field.status b/api/src/test/mock-data/response/rni-1-record-similarity-missing-field.status new file mode 100644 index 0000000000..6b3ed8d68b --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-record-similarity-missing-field.status @@ -0,0 +1 @@ +400 \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-record-similarity-null-field.json b/api/src/test/mock-data/response/rni-1-record-similarity-null-field.json new file mode 100644 index 0000000000..13a42c51ee --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-record-similarity-null-field.json @@ -0,0 +1,5 @@ +{ + "code": "badRequestFormat", + "message": "Unspecified field type for: primaryName", + "stack": null +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-record-similarity-null-field.status b/api/src/test/mock-data/response/rni-1-record-similarity-null-field.status new file mode 100644 index 0000000000..6b3ed8d68b --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-record-similarity-null-field.status @@ -0,0 +1 @@ +400 \ No newline at end of file diff --git a/api/src/test/mock-data/response/rni-1-record-similarity.json b/api/src/test/mock-data/response/rni-1-record-similarity.json new file mode 100644 index 0000000000..6a5576d985 --- /dev/null +++ b/api/src/test/mock-data/response/rni-1-record-similarity.json @@ -0,0 +1,51 @@ +{ + "results": [ + { + "fields": { + "primaryName": { + "type": "rni_name", + "weight": 0.5 + }, + "dob": { + "type": "rni_date", + "weight": 0.2 + }, + "dob2": { + "type": "rni_date", + "weight": 0.1 + }, + "addr": { + "type": "rni_address", + "weight": 0.5 + } + }, + "score": 0.87, + "left": { + "primaryName": "Ethan R", + "dob": "1993-04-16", + "dob2": "1993/04/16", + "addr": "123 Roadlane Ave" + }, + "right": { + "primaryName": "Seth R", + "dob": "1993-04-16" + }, + "explainInfo": { + "scoredFields": { + "primaryName": { + "rawScore": 0.99, + "calculatedWeight": 0.7142857142857143 + }, + "dob": { + "rawScore": 0.8, + "calculatedWeight": 0.2857142857142857 + } + }, + "rightOnlyFields": [ + "dob2", + "addr" + ] + } + } + ] +} diff --git a/api/src/test/mock-data/response/eng-sentence-relationships.status b/api/src/test/mock-data/response/rni-1-record-similarity.status similarity index 100% rename from api/src/test/mock-data/response/eng-sentence-relationships.status rename to api/src/test/mock-data/response/rni-1-record-similarity.status diff --git a/api/src/test/mock-data/response/eng-sentence-categories.status b/api/src/test/mock-data/response/rni-2-name-deduplication.status similarity index 100% rename from api/src/test/mock-data/response/eng-sentence-categories.status rename to api/src/test/mock-data/response/rni-2-name-deduplication.status diff --git a/api/src/test/mock-data/response/rni-2-name-deduplications.json b/api/src/test/mock-data/response/rni-2-name-deduplications.json new file mode 100644 index 0000000000..2c8999d305 --- /dev/null +++ b/api/src/test/mock-data/response/rni-2-name-deduplications.json @@ -0,0 +1,5 @@ +{ + "results": [ + "1", "2" + ] +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/rnt-1-multi-name-translation.json b/api/src/test/mock-data/response/rnt-1-multi-name-translation.json new file mode 100644 index 0000000000..98b5d555f9 --- /dev/null +++ b/api/src/test/mock-data/response/rnt-1-multi-name-translation.json @@ -0,0 +1,49 @@ +{ + "sourceScript": "Arab", + "sourceLanguageOfUse": "ara", + "targetLanguage": "eng", + "targetScript": "Latn", + "targetScheme": "IC", + "translations": [ + { + "translatio": "Mu'ammar Muhammad Abu-Minyar al-Qadhaf", + "confidence": 0.10655738 + }, + { + "translation": "Mu'ammar Muhammad Abu-Minyar al-Qadhaf", + "confidence": 0.10382514 + }, + { + "translation": "Mu'ammar Muhammad Abaw Minyar al-Qadhaf", + "confidence": 0.1010929 + }, + { + "translation": "Mu'ammar Muhammad Abu-Minyar al-Qadhaf", + "confidence": 0.10094909 + }, + { + "translation": "Mu'ammar Mhammad Abu-Minyar al-Qadhaf", + "confidence": 0.10094909 + }, + { + "translation": "Mu'ammar Muhammad Abu-Minyar al-Qadhaf", + "confidence": 0.09836066 + }, + { + "translation": "Mu'ammar Muhammad Abw Minyar al-Qadhaf", + "confidence": 0.09836066 + }, + { + "translation": "Mu'ammar Mhammad Abu-Minyar al-Qadhaf", + "confidence": 0.09836066 + }, + { + "translation": "Mu'ammar Muhammad Abaw Minyar al-Qadhaf", + "confidence": 0.09577222 + }, + { + "translation": "Mu'ammar Mhammad Abaw Minyar al-Qadhaf", + "confidence": 0.09577222 + } + ] +} diff --git a/api/src/test/mock-data/response/eng-url-relationships.status b/api/src/test/mock-data/response/rnt-1-multi-name-translation.status similarity index 100% rename from api/src/test/mock-data/response/eng-url-relationships.status rename to api/src/test/mock-data/response/rnt-1-multi-name-translation.status diff --git a/api/src/test/mock-data/response/rnt-1-name-translation.json b/api/src/test/mock-data/response/rnt-1-name-translation.json new file mode 100644 index 0000000000..9dd1e14d10 --- /dev/null +++ b/api/src/test/mock-data/response/rnt-1-name-translation.json @@ -0,0 +1,10 @@ +{ + "confidence": 1.0, + "sourceLanguageOfOrigin": "zho", + "sourceLanguageOfUse": "zho", + "sourceScript": "Hani", + "targetLanguage": "eng", + "targetScheme": "HYPY_TONED", + "targetScript": "Latn", + "translation": "Mao2 Ze2dong1" +} \ No newline at end of file diff --git a/api/src/test/mock-data/response/eng-sentence-entities.status b/api/src/test/mock-data/response/rnt-1-name-translation.status similarity index 100% rename from api/src/test/mock-data/response/eng-sentence-entities.status rename to api/src/test/mock-data/response/rnt-1-name-translation.status diff --git a/api/src/test/mock-data/response/rnt-1-translated-name.json b/api/src/test/mock-data/response/rnt-1-translated-name.json deleted file mode 100644 index 1b426ddb41..0000000000 --- a/api/src/test/mock-data/response/rnt-1-translated-name.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "requestId": "3ff324ef-b5b5-4777-b516-b4291770f038", - "result": { - "confidence": 1.0, - "sourceLanguageOfOrigin": "zho", - "sourceLanguageOfUse": "zho", - "sourceScript": "Hani", - "targetLanguage": "eng", - "targetScheme": "HYPY_TONED", - "targetScript": "Latn", - "translation": "mao zedong" - }, - "timers": { - "rnt": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/rnt-1-translated-name.status b/api/src/test/mock-data/response/rnt-1-translated-name.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/rnt-1-translated-name.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-doc-categories.json b/api/src/test/mock-data/response/spa-doc-categories.json index 206183b7ae..1d1ffa62c1 100644 --- a/api/src/test/mock-data/response/spa-doc-categories.json +++ b/api/src/test/mock-data/response/spa-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Spanish is not supported by Rosette Categorizer", - "requestId": "fb4bbccf-44e0-4fd8-8a57-60a774a3c4bb" + "message": "SPANISH is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-doc-entities.json b/api/src/test/mock-data/response/spa-doc-entities.json index 40669e3ccb..d59b54e56b 100644 --- a/api/src/test/mock-data/response/spa-doc-entities.json +++ b/api/src/test/mock-data/response/spa-doc-entities.json @@ -1,154 +1,46 @@ { "entities": [ { - "confidence": 0.022009849548339844, "count": 2, - "indocChainId": 3, - "mention": "Presidenta", - "normalized": "Presidenta", - "type": "TITLE" - }, - { - "confidence": 0.027858316898345947, - "count": 2, - "indocChainId": 4, - "mention": "Bachelet", - "normalized": "Bachelet", - "type": "PERSON" - }, - { - "confidence": 0.022280961275100708, - "count": 2, - "indocChainId": 5, - "mention": "Morales", - "normalized": "Morales", - "type": "PERSON" - }, - { - "confidence": 0.014749795198440552, - "count": 2, - "indocChainId": 5, - "mention": "Evo Morales", - "normalized": "Evo Morales", - "type": "PERSON" - }, - { - "confidence": 0.015497177839279175, - "count": 2, - "indocChainId": 9, - "mention": "Piñera", - "normalized": "Piñera", - "type": "PERSON" - }, - { - "confidence": 0.0006507039070129395, - "count": 1, "indocChainId": 0, - "mention": "Plaza Murillo", - "normalized": "Plaza Murillo", - "type": "PERSON" + "mention": "UE", + "normalized": "UE", + "type": "LOCATION" }, { - "confidence": 0.014606237411499023, "count": 1, "indocChainId": 1, - "mention": "Congreso", - "normalized": "Congreso", - "type": "ORGANIZATION" + "mention": "Catherine Ashton", + "normalized": "Catherine Ashton", + "type": "PERSON" }, { - "confidence": 0.0029370784759521484, "count": 1, "indocChainId": 2, - "mention": "Bolivia", - "normalized": "Bolivia", - "type": "LOCATION" - }, - { - "confidence": 0.00901263952255249, - "count": 1, - "indocChainId": 4, - "mention": "Michelle Bachelet", - "normalized": "Michelle Bachelet", - "type": "PERSON" + "mention": "Parlamento Europeo", + "normalized": "Parlamento Europeo", + "type": "ORGANIZATION" }, { - "confidence": 0.028369784355163574, "count": 1, - "indocChainId": 9, - "mention": "Sebastián Piñera", - "normalized": "Sebastián Piñera", + "indocChainId": 3, + "mention": "Rumiana Jeleva", + "normalized": "Rumiana Jeleva", "type": "PERSON" }, { - "confidence": 0.03386145830154419, "count": 1, - "indocChainId": 10, - "mention": "Chile", - "normalized": "Chile", + "indocChainId": 5, + "mention": "Lisboa", + "normalized": "Lisboa", "type": "LOCATION" }, { - "confidence": 0.002088606357574463, - "count": 1, - "indocChainId": 11, - "mention": "Mandataria", - "normalized": "Mandataria", - "type": "ORGANIZATION" - }, - { - "confidence": 0.03489595651626587, "count": 1, - "indocChainId": 15, - "mention": "La Paz", - "normalized": "La Paz", + "indocChainId": 6, + "mention": "Estados Unidos", + "normalized": "Estados Unidos", "type": "LOCATION" - }, - { - "confidence": 0.013820111751556396, - "count": 1, - "indocChainId": 17, - "mention": "Eduardo Frei", - "normalized": "Eduardo Frei", - "type": "PERSON" - }, - { - "confidence": 0.015299737453460693, - "count": 1, - "indocChainId": 18, - "mention": "Presidente", - "normalized": "Presidente", - "type": "TITLE" - }, - { - "confidence": 0.0008376836776733398, - "count": 1, - "indocChainId": 19, - "mention": "Pacífico", - "normalized": "Pacífico", - "type": "ORGANIZATION" - }, - { - "confidence": 0.02315753698348999, - "count": 1, - "indocChainId": 21, - "mention": "David Choquehuanca", - "normalized": "David Choquehuanca", - "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 22, - "mention": "http://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}", - "normalized": "http://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59}", - "type": "IDENTIFIER:URL" } - ], - "requestId": "c3de7a33-2be8-41ea-9b4b-bd683be93442", - "timers": { - "rblJe": 8, - "rexJe": 31, - "rliJe": 4 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/spa-doc-entities_linked.json b/api/src/test/mock-data/response/spa-doc-entities_linked.json index f8cbe697fe..77886897e6 100644 --- a/api/src/test/mock-data/response/spa-doc-entities_linked.json +++ b/api/src/test/mock-data/response/spa-doc-entities_linked.json @@ -1,83 +1,40 @@ { "entities": [ { - "confidence": 0.8757866343012634, - "entityId": "Q1538109", + "confidence": 0.5776186237344006, + "entityId": "Q458", "indocChainId": 0, - "mention": "Plaza Murillo" + "mention": "UE" }, { - "confidence": 0.23325987595467873, - "entityId": "Q1968468", + "confidence": 0.8061081115135179, + "entityId": "Q105667", "indocChainId": 1, - "mention": "Congreso" + "mention": "Catherine Ashton" }, { - "confidence": 0.4943574784967166, - "entityId": "Q750", + "confidence": 0.7034560898960084, + "entityId": "Q8889", "indocChainId": 2, - "mention": "Bolivia" + "mention": "Parlamento Europeo" }, { - "confidence": 0.9709488590752338, - "entityId": "Q320", - "indocChainId": 4, - "mention": "Michelle Bachelet" + "confidence": 0.5855544686091245, + "entityId": "Q242313", + "indocChainId": 3, + "mention": "Rumiana Jeleva" }, { - "confidence": 0.9073784117252339, - "entityId": "Q42410", + "confidence": 0.48058105259390566, + "entityId": "Q597", "indocChainId": 5, - "mention": "Evo Morales" + "mention": "Lisboa" }, { - "confidence": 0.9782520190044777, - "entityId": "Q306", - "indocChainId": 9, - "mention": "Sebastián Piñera" - }, - { - "confidence": 0.44526039329725764, - "entityId": "Q298", - "indocChainId": 10, - "mention": "Chile" - }, - { - "confidence": 0.41413787584636874, - "entityId": "NEW-CLUSTER", - "indocChainId": 11, - "mention": "Mandataria" - }, - { - "confidence": 0.12817777394769103, - "entityId": "Q1491", - "indocChainId": 15, - "mention": "La Paz" - }, - { - "confidence": 0.40243466858079857, - "entityId": "Q326", - "indocChainId": 17, - "mention": "Eduardo Frei" - }, - { - "confidence": 0.34244930604731305, - "entityId": "Q98", - "indocChainId": 19, - "mention": "Pacífico" - }, - { - "confidence": 0.8375832214872945, - "entityId": "Q58136", - "indocChainId": 21, - "mention": "David Choquehuanca" + "confidence": 0.6374384110480951, + "entityId": "Q30", + "indocChainId": 6, + "mention": "Estados Unidos" } - ], - "requestId": "702b7c21-68f4-4250-bd30-2b82eb9f5736", - "timers": { - "rblJe": 5, - "res": 1429, - "rexJe": 18, - "rliJe": 3 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-doc-language.json b/api/src/test/mock-data/response/spa-doc-language.json index 2171f5656e..37fd2cb8f2 100644 --- a/api/src/test/mock-data/response/spa-doc-language.json +++ b/api/src/test/mock-data/response/spa-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.02950734817618006, + "confidence": 1.0, "language": "spa" - }, - { - "confidence": 0.01730801427514239, - "language": "cat" - }, - { - "confidence": 0.013157204456583083, - "language": "por" - }, - { - "confidence": 0.00902805215860436, - "language": "fra" - }, - { - "confidence": 0.00806757405890135, - "language": "ron" } - ], - "requestId": "001a51b4-5923-4e69-8958-b661a6cc9bc5", - "timers": { - "rliJe": 7 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-doc-morphology_complete.json b/api/src/test/mock-data/response/spa-doc-morphology_complete.json index 687f753c57..2627f0c40c 100644 --- a/api/src/test/mock-data/response/spa-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/spa-doc-morphology_complete.json @@ -1,3221 +1,437 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "entregar", - "text": "Entrega" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "mar", - "text": "mar" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "devolver", - "text": "devuelve" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "mar", - "text": "mar" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "gritar", - "text": "gritaron" - }, - { - "lemma": "alguno", - "text": "algunos" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "los" - }, - { - "lemma": "ciudadano", - "text": "ciudadanos" - }, - { - "lemma": "paceño", - "text": "paceños" - }, - { - "lemma": "apostar", - "text": "apostados" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "Plaza", - "text": "Plaza" - }, - { - "lemma": "Murillo", - "text": "Murillo" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "el", - "text": "las" - }, - { - "lemma": "afueras", - "text": "afueras" - }, - { - "lemma": "de el", - "text": "del" - }, - { - "lemma": "palacio", - "text": "palacio" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "gobierno", - "text": "gobierno" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "sede", - "text": "sede" - }, - { - "lemma": "de el", - "text": "del" - }, - { - "lemma": "congreso", - "text": "Congreso" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Bolivia", - "text": "Bolivia" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "mientras", - "text": "mientras" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "presidente", - "text": "Presidenta" - }, - { - "lemma": "Michelle", - "text": "Michelle" - }, - { - "lemma": "Bachelet", - "text": "Bachelet" - }, - { - "lemma": "salir", - "text": "salía" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "extenso", - "text": "extensa" - }, - { - "lemma": "ceremonia", - "text": "ceremonia" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "Evo", - "text": "Evo" - }, - { - "lemma": "Morales", - "text": "Morales" - }, - { - "lemma": "renovar", - "text": "renovó" - }, - { - "lemma": "por", - "text": "por" - }, - { - "lemma": "cinco", - "text": "cinco" - }, - { - "lemma": "año", - "text": "años" - }, - { - "lemma": "más", - "text": "más" - }, - { - "lemma": "como", - "text": "como" - }, - { - "lemma": "mandatario", - "text": "Mandatario" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "ese", - "text": "ese" - }, - { - "lemma": "país", - "text": "país" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "el", - "text": "La" - }, - { - "lemma": "presidente", - "text": "Presidenta" - }, - { - "lemma": "ya", - "text": "ya" - }, - { - "lemma": "haber", - "text": "había" - }, - { - "lemma": "abordar", - "text": "abordado" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "tema", - "text": "tema" - }, - { - "lemma": "marítimo", - "text": "marítimo" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "primero", - "text": "primera" - }, - { - "lemma": "hora", - "text": "hora" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "ayer", - "text": "ayer" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "mientras", - "text": "mientras" - }, - { - "lemma": "visitar", - "text": "visitaba" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "hospital", - "text": "hospital" - }, - { - "lemma": "para", - "text": "para" - }, - { - "lemma": "niño", - "text": "niños" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "ahí", - "text": "Ahí" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Bachelet", - "text": "Bachelet" - }, - { - "lemma": "destacar", - "text": "destacó" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "2006", - "text": "2006" - }, - { - "lemma": "haber", - "text": "había" - }, - { - "lemma": "acordar", - "text": "acordado" - }, - { - "lemma": "con", - "text": "con" - }, - { - "lemma": "moral", - "text": "Morales" - }, - { - "lemma": "un", - "text": "una" - }, - { - "lemma": "agenda", - "text": "agenda" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "13", - "text": "13" - }, - { - "lemma": "punto", - "text": "puntos" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "haber", - "text": "hemos" - }, - { - "lemma": "hacer", - "text": "hecho" - }, - { - "lemma": "progreso", - "text": "progresos" - }, - { - "lemma": "importante", - "text": "importantes" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "y", - "text": "Y" - }, - { - "lemma": "todo", - "text": "todos" - }, - { - "lemma": "esperar", - "text": "esperamos" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "el", - "text": "los" - }, - { - "lemma": "año", - "text": "años" - }, - { - "lemma": "venidero", - "text": "venideros" - }, - { - "lemma": "nosotros", - "text": "nuestros" - }, - { - "lemma": "estado", - "text": "Estados" - }, - { - "lemma": "continuar", - "text": "continúen" - }, - { - "lemma": "profundizar él", - "text": "profundizándola" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "agregar", - "text": "agregó" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "aludir", - "text": "Aludía" - }, - { - "lemma": "así", - "text": "así" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "agenda", - "text": "agenda" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "punto", - "text": "punto" - }, - { - "lemma": "sexto", - "text": "sexto" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "contemplar", - "text": "contempla" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "tema", - "text": "tema" - }, - { - "lemma": "marítimo", - "text": "marítimo" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "pero", - "text": "pero" - }, - { - "lemma": "cuyo", - "text": "cuyos" - }, - { - "lemma": "detalle", - "text": "detalles" - }, - { - "lemma": "ser", - "text": "son" - }, - { - "lemma": "poco", - "text": "poco" - }, - { - "lemma": "conocer", - "text": "conocidos" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "por", - "text": "Por" - }, - { - "lemma": "el", - "text": "lo" - }, - { - "lemma": "mismo", - "text": "mismo" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "cuando", - "text": "cuando" - }, - { - "lemma": "ser", - "text": "fue" - }, - { - "lemma": "consultar", - "text": "consultada" - }, - { - "lemma": "sobre", - "text": "sobre" - }, - { - "lemma": "qué", - "text": "qué" - }, - { - "lemma": "esperar", - "text": "esperaría" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "hacer", - "text": "hiciera" - }, - { - "lemma": "sobre", - "text": "sobre" - }, - { - "lemma": "este", - "text": "este" - }, - { - "lemma": "punto", - "text": "punto" - }, - { - "lemma": "específico", - "text": "específico" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "sucesor", - "text": "sucesor" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Sebastián", - "text": "Sebastián" - }, - { - "lemma": "Piñera", - "text": "Piñera" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "él", - "text": "ella" - }, - { - "lemma": "reforzar", - "text": "reforzó" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "mensaje", - "text": "mensaje" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "el", - "text": "Lo" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "tener", - "text": "tiene" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "hacer", - "text": "hacer" - }, - { - "lemma": "cualquier", - "text": "cualquier" - }, - { - "lemma": "gobierno", - "text": "gobierno" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "Chile", - "text": "Chile" - }, - { - "lemma": "ser", - "text": "es" - }, - { - "lemma": "seguir", - "text": "seguir" - }, - { - "lemma": "profundizar", - "text": "profundizando" - }, - { - "lemma": "todo", - "text": "todos" - }, - { - "lemma": "el", - "text": "los" - }, - { - "lemma": "punto", - "text": "puntos" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "trabajo", - "text": "trabajo" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "un", - "text": "una" - }, - { - "lemma": "agenda", - "text": "agenda" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "haber", - "text": "ha" - }, - { - "lemma": "ser", - "text": "sido" - }, - { - "lemma": "concordar", - "text": "concordada" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "común", - "text": "común" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "decir", - "text": "dijo" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "Mandataria", - "text": "Mandataria" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "el", - "text": "La" - }, - { - "lemma": "postura", - "text": "postura" - }, - { - "lemma": "asumir", - "text": "asumida" - }, - { - "lemma": "ayer", - "text": "ayer" - }, - { - "lemma": "por", - "text": "por" - }, - { - "lemma": "Bachelet", - "text": "Bachelet" - }, - { - "lemma": "se", - "text": "se" - }, - { - "lemma": "producir", - "text": "produjo" - }, - { - "lemma": "sólo", - "text": "sólo" - }, - { - "lemma": "día", - "text": "días" - }, - { - "lemma": "después", - "text": "después" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "Evo", - "text": "Evo" - }, - { - "lemma": "Morales", - "text": "Morales" - }, - { - "lemma": "dejar", - "text": "dejara" - }, - { - "lemma": "entrever", - "text": "entrever" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "inquietud", - "text": "inquietud" - }, - { - "lemma": "por", - "text": "por" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "actitud", - "text": "actitud" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "tener", - "text": "tendrá" - }, - { - "lemma": "Piñera", - "text": "Piñera" - }, - { - "lemma": "ante", - "text": "ante" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "aspiración", - "text": "aspiración" - }, - { - "lemma": "boliviano", - "text": "boliviana" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "un", - "text": "una" - }, - { - "lemma": "salida", - "text": "salida" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "mar", - "text": "mar" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "en", - "text": "En" - }, - { - "lemma": "el", - "text": "La" - }, - { - "lemma": "paz", - "text": "Paz" - }, - { - "lemma": "creer", - "text": "creen" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "nuevo", - "text": "nuevo" - }, - { - "lemma": "gobernante", - "text": "gobernante" - }, - { - "lemma": "chileno", - "text": "chileno" - }, - { - "lemma": "restringir", - "text": "restringirá" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "grande", - "text": "máximo" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "diálogo", - "text": "diálogo" - }, - { - "lemma": "sobre", - "text": "sobre" - }, - { - "lemma": "este", - "text": "este" - }, - { - "lemma": "punto", - "text": "punto" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "dicho", - "text": "Dicha" - }, - { - "lemma": "inquietud", - "text": "inquietud" - }, - { - "lemma": "tener", - "text": "tuvo" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "origen", - "text": "origen" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "debate", - "text": "debate" - }, - { - "lemma": "presidencial", - "text": "presidencial" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "hacer", - "text": "hace" - }, - { - "lemma": "dos", - "text": "dos" - }, - { - "lemma": "semana", - "text": "semanas" - }, - { - "lemma": "entre", - "text": "entre" - }, - { - "lemma": "Piñera", - "text": "Piñera" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "Eduardo", - "text": "Eduardo" - }, - { - "lemma": "freír", - "text": "Frei" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "cuando", - "text": "cuando" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "actual", - "text": "actual" - }, - { - "lemma": "presidente", - "text": "Presidente" - }, - { - "lemma": "electo", - "text": "electo" - }, - { - "lemma": "decir", - "text": "dijo" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "no", - "text": "no" - }, - { - "lemma": "conversar", - "text": "conversaría" - }, - { - "lemma": "sobre", - "text": "sobre" - }, - { - "lemma": "cesión", - "text": "cesión" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "soberanía", - "text": "soberanía" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "sólo", - "text": "sólo" - }, - { - "lemma": "tener", - "text": "tenía" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "carpeta", - "text": "carpeta" - }, - { - "lemma": "mejorar", - "text": "mejorar" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "acceso", - "text": "acceso" - }, - { - "lemma": "boliviano", - "text": "boliviano" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "pacífico", - "text": "Pacífico" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "frase", - "text": "frase" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "ser", - "text": "es" - }, - { - "lemma": "leer", - "text": "leída" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "diplomacia", - "text": "diplomacia" - }, - { - "lemma": "boliviano", - "text": "boliviana" - }, - { - "lemma": "como", - "text": "como" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "simple", - "text": "simples" - }, - { - "lemma": "facilidad", - "text": "facilidades" - }, - { - "lemma": "portuario", - "text": "portuarias" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Morales", - "text": "Morales" - }, - { - "lemma": "responder", - "text": "respondió" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "martes", - "text": "martes" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "cualquier", - "text": "cualquier" - }, - { - "lemma": "compromiso", - "text": "compromiso" - }, - { - "lemma": "ser", - "text": "es" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "estado", - "text": "Estado" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "estado", - "text": "Estado" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "canciller", - "text": "canciller" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "David", - "text": "David" - }, - { - "lemma": "Choquehuanca", - "text": "Choquehuanca" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "pedir", - "text": "pidió" - }, - { - "lemma": "mantener", - "text": "mantener" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "agenda", - "text": "agenda" - }, - { - "lemma": "bilateral", - "text": "bilateral" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "diario.elmercurio.com", - "text": "diario.elmercurio.com" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "01", - "text": "01" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "23", - "text": "23" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "nacional", - "text": "nacional" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "política", - "text": "politica" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "noticia", - "text": "noticias" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "47D6CA26", - "text": "47D6CA26" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "B011", - "text": "B011" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "40B5", - "text": "40B5" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "AEAB", - "text": "AEAB" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "D0E6A5F52E59", - "text": "D0E6A5F52E59" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "htm", - "text": "htm" - }, - { - "lemma": "?", - "text": "?" - }, - { - "lemma": "ir", - "text": "id" - }, - { - "lemma": "=", - "text": "=" - }, - { - "lemma": "{", - "text": "{" - }, - { - "lemma": "47D6CA26", - "text": "47D6CA26" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "B011", - "text": "B011" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "40B5", - "text": "40B5" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "AEAB", - "text": "AEAB" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "D0E6A5F52E59", - "text": "D0E6A5F52E59" - }, - { - "lemma": "}", - "text": "}" - }, - { - "lemma": "2010.01.23", - "text": "2010.01.23" - } + "el", + "crisis", + "se", + "haber", + "producir", + "en", + "un", + "tiempo", + "de", + "transición", + "burocrático", + ".", + "el", + "nuevo", + "zarina", + "de", + "el", + "política", + "exterior", + "de", + "el", + "UE", + ",", + "Catherine", + "Ashton", + ",", + "deber", + "aún", + "afianzar se", + "en", + "él", + "puesto", + "y", + "el", + "parlamento", + "europeo", + "haber", + "impedir", + "el", + "nombramiento", + "de", + "el", + "designar", + "comisario", + "Rumiana", + "Jeleva", + ",", + "cuyo", + "cometer", + "incluir", + "el", + "ayuda", + "humanitario", + ".", + "como", + "resultado", + ",", + "el", + "respuesta", + "de", + "el", + "UE", + "parecer", + "revestir", + "todo", + "el", + "signo", + "de", + "el", + "política", + "previo", + "a el", + "tratado", + "de", + "Lisboa", + ":", + "lento", + ",", + "tecnocrático", + "y", + "eclipsar", + "por", + "estado", + "unir", + "." ], "posTags": [ - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "VERBFIN", - "text": "Entrega" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "mar" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "devuelve" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "mar" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "gritaron" - }, - { - "pos": "ADJPL", - "text": "algunos" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETPL", - "text": "los" - }, - { - "pos": "NOUNPL", - "text": "ciudadanos" - }, - { - "pos": "ADJPL", - "text": "paceños" - }, - { - "pos": "PAPPL", - "text": "apostados" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "PROP", - "text": "Plaza" - }, - { - "pos": "PROP", - "text": "Murillo" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "a" - }, - { - "pos": "DETPL", - "text": "las" - }, - { - "pos": "NOUNPL", - "text": "afueras" - }, - { - "pos": "PREPDET", - "text": "del" - }, - { - "pos": "NOUNSG", - "text": "palacio" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "gobierno" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "sede" - }, - { - "pos": "PREPDET", - "text": "del" - }, - { - "pos": "NOUNSG", - "text": "Congreso" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "PROP", - "text": "Bolivia" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "mientras" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "Presidenta" - }, - { - "pos": "PROP", - "text": "Michelle" - }, - { - "pos": "PROP", - "text": "Bachelet" - }, - { - "pos": "VERBFIN", - "text": "salía" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "ADJSG", - "text": "extensa" - }, - { - "pos": "NOUNSG", - "text": "ceremonia" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PROP", - "text": "Evo" - }, - { - "pos": "PROP", - "text": "Morales" - }, - { - "pos": "VERBFIN", - "text": "renovó" - }, - { - "pos": "PREP", - "text": "por" - }, - { - "pos": "NUM", - "text": "cinco" - }, - { - "pos": "NOUNPL", - "text": "años" - }, - { - "pos": "ADV", - "text": "más" - }, - { - "pos": "COMO", - "text": "como" - }, - { - "pos": "NOUNSG", - "text": "Mandatario" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "ese" - }, - { - "pos": "NOUNSG", - "text": "país" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DETSG", - "text": "La" - }, - { - "pos": "NOUNSG", - "text": "Presidenta" - }, - { - "pos": "ADV", - "text": "ya" - }, - { - "pos": "HAB", - "text": "había" - }, - { - "pos": "PAPSG", - "text": "abordado" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "tema" - }, - { - "pos": "ADJSG", - "text": "marítimo" - }, - { - "pos": "PREP", - "text": "a" - }, - { - "pos": "ADJSG", - "text": "primera" - }, - { - "pos": "NOUNSG", - "text": "hora" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "ADV", - "text": "ayer" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "mientras" - }, - { - "pos": "VERBFIN", - "text": "visitaba" - }, - { - "pos": "DETQUANTSG", - "text": "un" - }, - { - "pos": "NOUNSG", - "text": "hospital" - }, - { - "pos": "PREP", - "text": "para" - }, - { - "pos": "NOUNPL", - "text": "niños" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Ahí" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Bachelet" - }, - { - "pos": "VERBFIN", - "text": "destacó" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DIG", - "text": "2006" - }, - { - "pos": "HAB", - "text": "había" - }, - { - "pos": "PAPSG", - "text": "acordado" - }, - { - "pos": "PREP", - "text": "con" - }, - { - "pos": "ADJPL", - "text": "Morales" - }, - { - "pos": "DETQUANTSG", - "text": "una" - }, - { - "pos": "NOUNSG", - "text": "agenda" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DIG", - "text": "13" - }, - { - "pos": "NOUNPL", - "text": "puntos" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "HAB", - "text": "hemos" - }, - { - "pos": "PAPSG", - "text": "hecho" - }, - { - "pos": "NOUNPL", - "text": "progresos" - }, - { - "pos": "ADJPL", - "text": "importantes" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CONJ", - "text": "Y" - }, - { - "pos": "PRON", - "text": "todos" - }, - { - "pos": "VERBFIN", - "text": "esperamos" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETPL", - "text": "los" - }, - { - "pos": "NOUNPL", - "text": "años" - }, - { - "pos": "ADJPL", - "text": "venideros" - }, - { - "pos": "DETPL", - "text": "nuestros" - }, - { - "pos": "NOUNPL", - "text": "Estados" - }, - { - "pos": "VERBFIN", - "text": "continúen" - }, - { - "pos": "VERBPRPCL", - "text": "profundizándola" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "agregó" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "VERBFIN", - "text": "Aludía" - }, - { - "pos": "ADV", - "text": "así" - }, - { - "pos": "PREP", - "text": "a" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "agenda" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "punto" - }, - { - "pos": "ADJSG", - "text": "sexto" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "contempla" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUNSG", - "text": "tema" - }, - { - "pos": "ADJSG", - "text": "marítimo" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONJ", - "text": "pero" - }, - { - "pos": "PRONREL", - "text": "cuyos" - }, - { - "pos": "NOUNPL", - "text": "detalles" - }, - { - "pos": "AUX", - "text": "son" - }, - { - "pos": "ADV", - "text": "poco" - }, - { - "pos": "PAPPL", - "text": "conocidos" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Por" - }, - { - "pos": "DETSG", - "text": "lo" - }, - { - "pos": "ADJSG", - "text": "mismo" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONADV", - "text": "cuando" - }, - { - "pos": "AUX", - "text": "fue" - }, - { - "pos": "PAPSG", - "text": "consultada" - }, - { - "pos": "PREP", - "text": "sobre" - }, - { - "pos": "PRONINT", - "text": "qué" - }, - { - "pos": "VERBFIN", - "text": "esperaría" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "VERBFIN", - "text": "hiciera" - }, - { - "pos": "PREP", - "text": "sobre" - }, - { - "pos": "DETSG", - "text": "este" - }, - { - "pos": "NOUNSG", - "text": "punto" - }, - { - "pos": "ADJSG", - "text": "específico" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "sucesor" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Sebastián" - }, - { - "pos": "PROP", - "text": "Piñera" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRON", - "text": "ella" - }, - { - "pos": "VERBFIN", - "text": "reforzó" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "mensaje" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DETSG", - "text": "Lo" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "VERBFIN", - "text": "tiene" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "VERBINF", - "text": "hacer" - }, - { - "pos": "DETQUANTSG", - "text": "cualquier" - }, - { - "pos": "NOUNSG", - "text": "gobierno" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "PROP", - "text": "Chile" - }, - { - "pos": "AUX", - "text": "es" - }, - { - "pos": "VERBINF", - "text": "seguir" - }, - { - "pos": "VERBPRP", - "text": "profundizando" - }, - { - "pos": "PREDETPL", - "text": "todos" - }, - { - "pos": "DETPL", - "text": "los" - }, - { - "pos": "NOUNPL", - "text": "puntos" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "trabajo" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETQUANTSG", - "text": "una" - }, - { - "pos": "NOUNSG", - "text": "agenda" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "HAB", - "text": "ha" - }, - { - "pos": "PAPSG", - "text": "sido" - }, - { - "pos": "PAPSG", - "text": "concordada" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "ADJSG", - "text": "común" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "dijo" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "PROP", - "text": "Mandataria" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DETSG", - "text": "La" - }, - { - "pos": "NOUNSG", - "text": "postura" - }, - { - "pos": "PAPSG", - "text": "asumida" - }, - { - "pos": "ADV", - "text": "ayer" - }, - { - "pos": "PREP", - "text": "por" - }, - { - "pos": "PROP", - "text": "Bachelet" - }, - { - "pos": "SE", - "text": "se" - }, - { - "pos": "VERBFIN", - "text": "produjo" - }, - { - "pos": "ADV", - "text": "sólo" - }, - { - "pos": "NOUNPL", - "text": "días" - }, - { - "pos": "ADV", - "text": "después" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PROP", - "text": "Evo" - }, - { - "pos": "PROP", - "text": "Morales" - }, - { - "pos": "VERBFIN", - "text": "dejara" - }, - { - "pos": "VERBINF", - "text": "entrever" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "inquietud" - }, - { - "pos": "PREP", - "text": "por" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "actitud" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "VERBFIN", - "text": "tendrá" - }, - { - "pos": "PROP", - "text": "Piñera" - }, - { - "pos": "PREP", - "text": "ante" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "aspiración" - }, - { - "pos": "ADJSG", - "text": "boliviana" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETQUANTSG", - "text": "una" - }, - { - "pos": "NOUNSG", - "text": "salida" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "NOUNSG", - "text": "mar" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "En" - }, - { - "pos": "DETSG", - "text": "La" - }, - { - "pos": "NOUNSG", - "text": "Paz" - }, - { - "pos": "VERBFIN", - "text": "creen" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "ADJSG", - "text": "nuevo" - }, - { - "pos": "NOUNSG", - "text": "gobernante" - }, - { - "pos": "ADJSG", - "text": "chileno" - }, - { - "pos": "VERBFIN", - "text": "restringirá" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "ADJSG", - "text": "máximo" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "diálogo" - }, - { - "pos": "PREP", - "text": "sobre" - }, - { - "pos": "DETSG", - "text": "este" - }, - { - "pos": "NOUNSG", - "text": "punto" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DETSG", - "text": "Dicha" - }, - { - "pos": "NOUNSG", - "text": "inquietud" - }, - { - "pos": "VERBFIN", - "text": "tuvo" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "origen" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "debate" - }, - { - "pos": "ADJSG", - "text": "presidencial" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "VERBFIN", - "text": "hace" - }, - { - "pos": "NUM", - "text": "dos" - }, - { - "pos": "NOUNPL", - "text": "semanas" - }, - { - "pos": "PREP", - "text": "entre" - }, - { - "pos": "PROP", - "text": "Piñera" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "PROP", - "text": "Eduardo" - }, - { - "pos": "VERBFIN", - "text": "Frei" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONADV", - "text": "cuando" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "ADJSG", - "text": "actual" - }, - { - "pos": "NOUNSG", - "text": "Presidente" - }, - { - "pos": "ADJSG", - "text": "electo" - }, - { - "pos": "VERBFIN", - "text": "dijo" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "ADVNEG", - "text": "no" - }, - { - "pos": "VERBFIN", - "text": "conversaría" - }, - { - "pos": "PREP", - "text": "sobre" - }, - { - "pos": "NOUNSG", - "text": "cesión" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "soberanía" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "ADV", - "text": "sólo" - }, - { - "pos": "VERBFIN", - "text": "tenía" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "NOUNSG", - "text": "carpeta" - }, - { - "pos": "VERBINF", - "text": "mejorar" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "acceso" - }, - { - "pos": "ADJSG", - "text": "boliviano" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "ADJSG", - "text": "Pacífico" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUNSG", - "text": "frase" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "AUX", - "text": "es" - }, - { - "pos": "PAPSG", - "text": "leída" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "diplomacia" - }, - { - "pos": "ADJSG", - "text": "boliviana" - }, - { - "pos": "COMO", - "text": "como" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "ADJPL", - "text": "simples" - }, - { - "pos": "NOUNPL", - "text": "facilidades" - }, - { - "pos": "ADJPL", - "text": "portuarias" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Morales" - }, - { - "pos": "VERBFIN", - "text": "respondió" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUN", - "text": "martes" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "DETQUANTSG", - "text": "cualquier" - }, - { - "pos": "NOUNSG", - "text": "compromiso" - }, - { - "pos": "AUX", - "text": "es" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "Estado" - }, - { - "pos": "PREP", - "text": "a" - }, - { - "pos": "NOUNSG", - "text": "Estado" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "canciller" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "David" - }, - { - "pos": "PROP", - "text": "Choquehuanca" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "pidió" - }, - { - "pos": "VERBINF", - "text": "mantener" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "agenda" - }, - { - "pos": "ADJSG", - "text": "bilateral" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "http" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "diario.elmercurio.com" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "DIG", - "text": "2010" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "DIG", - "text": "01" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "DIG", - "text": "23" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "ADJSG", - "text": "nacional" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUNSG", - "text": "politica" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "NOUNPL", - "text": "noticias" - }, - { - "pos": "PUNCT", - "text": "/" - }, - { - "pos": "PROP", - "text": "47D6CA26" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "B011" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "40B5" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "AEAB" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "D0E6A5F52E59" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "htm" - }, - { - "pos": "SENT", - "text": "?" - }, - { - "pos": "VERBIMP", - "text": "id" - }, - { - "pos": "PUNCT", - "text": "=" - }, - { - "pos": "PUNCT", - "text": "{" - }, - { - "pos": "PROP", - "text": "47D6CA26" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "B011" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "40B5" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "AEAB" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PROP", - "text": "D0E6A5F52E59" - }, - { - "pos": "PUNCT", - "text": "}" - }, - { - "pos": "DIG", - "text": "2010.01.23" - } + "DETSG", + "NOUN", + "SE", + "HAB", + "PAPSG", + "PREP", + "DETQUANTSG", + "NOUNSG", + "PREP", + "NOUNSG", + "ADJSG", + "SENT", + "DETSG", + "ADJSG", + "NOUNSG", + "PREP", + "DETSG", + "NOUNSG", + "ADJSG", + "PREP", + "DETSG", + "PROP", + "CM", + "PROP", + "PROP", + "CM", + "VERBFIN", + "ADV", + "VERBINFCL", + "PREP", + "DETSG", + "NOUNSG", + "CONJ", + "DETSG", + "NOUNSG", + "ADJSG", + "HAB", + "PAPSG", + "DETSG", + "NOUNSG", + "PREP", + "DETSG", + "PAPSG", + "NOUNSG", + "PROP", + "PROP", + "CM", + "PRONREL", + "PAPSG", + "VERBFIN", + "DETSG", + "NOUNSG", + "ADJSG", + "SENT", + "COMO", + "NOUNSG", + "CM", + "DETSG", + "NOUNSG", + "PREP", + "DETSG", + "PROP", + "VERBFIN", + "VERBINF", + "PREDETPL", + "DETPL", + "NOUNPL", + "PREP", + "DETSG", + "NOUNSG", + "ADJSG", + "PREPDET", + "NOUNSG", + "PREP", + "PROP", + "PUNCT", + "ADJSG", + "CM", + "ADJSG", + "CONJ", + "PAPSG", + "PREP", + "NOUNPL", + "PAPPL", + "SENT" ], - "requestId": "adcc0f54-1882-44af-ae25-2de733ee5ca0", - "timers": { - "rblJe": 76, - "rliJe": 3 - } + "tokens": [ + "La", + "crisis", + "se", + "ha", + "producido", + "en", + "un", + "tiempo", + "de", + "transición", + "burocrática", + ".", + "La", + "nueva", + "zarina", + "de", + "la", + "Política", + "Exterior", + "de", + "la", + "UE", + ",", + "Catherine", + "Ashton", + ",", + "debe", + "aún", + "afianzarse", + "en", + "su", + "puesto", + "y", + "el", + "Parlamento", + "Europeo", + "ha", + "impedido", + "el", + "nombramiento", + "de", + "la", + "designada", + "comisaria", + "Rumiana", + "Jeleva", + ",", + "cuyo", + "cometido", + "incluía", + "la", + "ayuda", + "humanitaria", + ".", + "Como", + "resultado", + ",", + "la", + "respuesta", + "de", + "la", + "UE", + "parece", + "revestir", + "todos", + "los", + "signos", + "de", + "la", + "política", + "previa", + "al", + "Tratado", + "de", + "Lisboa", + ":", + "lenta", + ",", + "tecnocrática", + "y", + "eclipsada", + "por", + "Estados", + "Unidos", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-doc-sentiment.json b/api/src/test/mock-data/response/spa-doc-sentiment.json index f30d1371e0..e2a0f24678 100644 --- a/api/src/test/mock-data/response/spa-doc-sentiment.json +++ b/api/src/test/mock-data/response/spa-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Spanish is not supported by Rosette Sentiment Analyzer", - "requestId": "d28578c3-6f62-4285-8dcb-059b41bab1bf" + "message": "Unsupported language: Spanish" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-categories.json b/api/src/test/mock-data/response/spa-sentence-categories.json deleted file mode 100644 index 4a20cb6e0e..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Spanish is not supported by Rosette Categorizer", - "requestId": "ecb91ac3-13e4-4c26-9647-6cd970e45ca1" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-categories.status b/api/src/test/mock-data/response/spa-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-entities.json b/api/src/test/mock-data/response/spa-sentence-entities.json deleted file mode 100644 index 552fcd9c6f..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-entities.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.0033197999000549316, - "count": 2, - "indocChainId": 0, - "mention": "UE", - "normalized": "UE", - "type": "LOCATION" - }, - { - "confidence": 0.009455502033233643, - "count": 1, - "indocChainId": 1, - "mention": "Catherine Ashton", - "normalized": "Catherine Ashton", - "type": "PERSON" - }, - { - "confidence": 0.0019090771675109863, - "count": 1, - "indocChainId": 2, - "mention": "Parlamento Europeo", - "normalized": "Parlamento Europeo", - "type": "ORGANIZATION" - }, - { - "confidence": 0.005295395851135254, - "count": 1, - "indocChainId": 3, - "mention": "Rumiana Jeleva", - "normalized": "Rumiana Jeleva", - "type": "PERSON" - }, - { - "confidence": 0.0053885579109191895, - "count": 1, - "indocChainId": 5, - "mention": "Lisboa", - "normalized": "Lisboa", - "type": "LOCATION" - }, - { - "confidence": 0.01570659875869751, - "count": 1, - "indocChainId": 6, - "mention": "Estados Unidos", - "normalized": "Estados Unidos", - "type": "LOCATION" - } - ], - "requestId": "e47ff33c-c014-4d19-8a7f-1f226b23ce3d", - "timers": { - "rblJe": 2, - "rexJe": 11, - "rliJe": 5 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-entities.status b/api/src/test/mock-data/response/spa-sentence-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-entities_linked.json b/api/src/test/mock-data/response/spa-sentence-entities_linked.json deleted file mode 100644 index 2e129a7e47..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-entities_linked.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.6557350718108463, - "entityId": "Q458", - "indocChainId": 0, - "mention": "UE" - }, - { - "confidence": 0.7240138955711336, - "entityId": "Q105667", - "indocChainId": 1, - "mention": "Catherine Ashton" - }, - { - "confidence": 0.7886346514534216, - "entityId": "Q8889", - "indocChainId": 2, - "mention": "Parlamento Europeo" - }, - { - "confidence": 0.6030876370798988, - "entityId": "Q242313", - "indocChainId": 3, - "mention": "Rumiana Jeleva" - }, - { - "confidence": 0.5486312188826928, - "entityId": "Q597", - "indocChainId": 5, - "mention": "Lisboa" - }, - { - "confidence": 0.6532048679662522, - "entityId": "Q30", - "indocChainId": 6, - "mention": "Estados Unidos" - } - ], - "requestId": "e8f5ca40-71c8-40d8-98b3-0b6b7d61e309", - "timers": { - "rblJe": 2, - "res": 86, - "rexJe": 4, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-entities_linked.status b/api/src/test/mock-data/response/spa-sentence-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-language.json b/api/src/test/mock-data/response/spa-sentence-language.json deleted file mode 100644 index 0c12b33285..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.02481541281976518, - "language": "spa" - }, - { - "confidence": 0.013600772881528722, - "language": "cat" - }, - { - "confidence": 0.012785839526927134, - "language": "por" - }, - { - "confidence": 0.010117305737785909, - "language": "ron" - }, - { - "confidence": 0.007932821892276065, - "language": "fra" - } - ], - "requestId": "669af974-87e6-465f-bec2-3b3d3f01eadf", - "timers": { - "rliJe": 3 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-language.status b/api/src/test/mock-data/response/spa-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-morphology_complete.json b/api/src/test/mock-data/response/spa-sentence-morphology_complete.json deleted file mode 100644 index dfa745431a..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-morphology_complete.json +++ /dev/null @@ -1,693 +0,0 @@ -{ - "compounds": [], - "hanReadings": [], - "lemmas": [ - { - "lemma": "el", - "text": "La" - }, - { - "lemma": "crisis", - "text": "crisis" - }, - { - "lemma": "se", - "text": "se" - }, - { - "lemma": "haber", - "text": "ha" - }, - { - "lemma": "producir", - "text": "producido" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "un", - "text": "un" - }, - { - "lemma": "tiempo", - "text": "tiempo" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "transición", - "text": "transición" - }, - { - "lemma": "burocrático", - "text": "burocrática" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "el", - "text": "La" - }, - { - "lemma": "nuevo", - "text": "nueva" - }, - { - "lemma": "zarina", - "text": "zarina" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "política", - "text": "Política" - }, - { - "lemma": "exterior", - "text": "Exterior" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "UE", - "text": "UE" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Catherine", - "text": "Catherine" - }, - { - "lemma": "Ashton", - "text": "Ashton" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "deber", - "text": "debe" - }, - { - "lemma": "aún", - "text": "aún" - }, - { - "lemma": "afianzar se", - "text": "afianzarse" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "puesto", - "text": "puesto" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "parlamento", - "text": "Parlamento" - }, - { - "lemma": "europeo", - "text": "Europeo" - }, - { - "lemma": "haber", - "text": "ha" - }, - { - "lemma": "impedir", - "text": "impedido" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "nombramiento", - "text": "nombramiento" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "designar", - "text": "designada" - }, - { - "lemma": "comisario", - "text": "comisaria" - }, - { - "lemma": "Rumiana", - "text": "Rumiana" - }, - { - "lemma": "Jeleva", - "text": "Jeleva" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "cuyo", - "text": "cuyo" - }, - { - "lemma": "cometer", - "text": "cometido" - }, - { - "lemma": "incluir", - "text": "incluía" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "ayuda", - "text": "ayuda" - }, - { - "lemma": "humanitario", - "text": "humanitaria" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "como", - "text": "Como" - }, - { - "lemma": "resultado", - "text": "resultado" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "respuesta", - "text": "respuesta" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "UE", - "text": "UE" - }, - { - "lemma": "parecer", - "text": "parece" - }, - { - "lemma": "revestir", - "text": "revestir" - }, - { - "lemma": "todo", - "text": "todos" - }, - { - "lemma": "el", - "text": "los" - }, - { - "lemma": "signo", - "text": "signos" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "política", - "text": "política" - }, - { - "lemma": "previo", - "text": "previa" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "tratado", - "text": "Tratado" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Lisboa", - "text": "Lisboa" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "lento", - "text": "lenta" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "tecnocrático", - "text": "tecnocrática" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "eclipsar", - "text": "eclipsada" - }, - { - "lemma": "por", - "text": "por" - }, - { - "lemma": "estado", - "text": "Estados" - }, - { - "lemma": "unir", - "text": "Unidos" - }, - { - "lemma": ".", - "text": "." - } - ], - "posTags": [ - { - "pos": "DETSG", - "text": "La" - }, - { - "pos": "NOUN", - "text": "crisis" - }, - { - "pos": "SE", - "text": "se" - }, - { - "pos": "HAB", - "text": "ha" - }, - { - "pos": "PAPSG", - "text": "producido" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETQUANTSG", - "text": "un" - }, - { - "pos": "NOUNSG", - "text": "tiempo" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "transición" - }, - { - "pos": "ADJSG", - "text": "burocrática" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DETSG", - "text": "La" - }, - { - "pos": "ADJSG", - "text": "nueva" - }, - { - "pos": "NOUNSG", - "text": "zarina" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "Política" - }, - { - "pos": "ADJSG", - "text": "Exterior" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "PROP", - "text": "UE" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Catherine" - }, - { - "pos": "PROP", - "text": "Ashton" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VERBFIN", - "text": "debe" - }, - { - "pos": "ADV", - "text": "aún" - }, - { - "pos": "VERBINFCL", - "text": "afianzarse" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "puesto" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "Parlamento" - }, - { - "pos": "ADJSG", - "text": "Europeo" - }, - { - "pos": "HAB", - "text": "ha" - }, - { - "pos": "PAPSG", - "text": "impedido" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "nombramiento" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "PAPSG", - "text": "designada" - }, - { - "pos": "NOUNSG", - "text": "comisaria" - }, - { - "pos": "PROP", - "text": "Rumiana" - }, - { - "pos": "PROP", - "text": "Jeleva" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PRONREL", - "text": "cuyo" - }, - { - "pos": "PAPSG", - "text": "cometido" - }, - { - "pos": "VERBFIN", - "text": "incluía" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "ayuda" - }, - { - "pos": "ADJSG", - "text": "humanitaria" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COMO", - "text": "Como" - }, - { - "pos": "NOUNSG", - "text": "resultado" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "respuesta" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "PROP", - "text": "UE" - }, - { - "pos": "VERBFIN", - "text": "parece" - }, - { - "pos": "VERBINF", - "text": "revestir" - }, - { - "pos": "PREDETPL", - "text": "todos" - }, - { - "pos": "DETPL", - "text": "los" - }, - { - "pos": "NOUNPL", - "text": "signos" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "política" - }, - { - "pos": "ADJSG", - "text": "previa" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "NOUNSG", - "text": "Tratado" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "PROP", - "text": "Lisboa" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "ADJSG", - "text": "lenta" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADJSG", - "text": "tecnocrática" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "PAPSG", - "text": "eclipsada" - }, - { - "pos": "PREP", - "text": "por" - }, - { - "pos": "NOUNPL", - "text": "Estados" - }, - { - "pos": "PAPPL", - "text": "Unidos" - }, - { - "pos": "SENT", - "text": "." - } - ], - "requestId": "efce6fd2-297f-4cde-8f10-b253185d677d", - "timers": { - "rblJe": 6, - "rliJe": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-morphology_complete.status b/api/src/test/mock-data/response/spa-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-sentiment.json b/api/src/test/mock-data/response/spa-sentence-sentiment.json deleted file mode 100644 index b998dc4048..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Spanish is not supported by Rosette Sentiment Analyzer", - "requestId": "56586ce3-fffe-4571-8035-1e5fc595ca48" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-sentence-sentiment.status b/api/src/test/mock-data/response/spa-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/spa-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-url-categories.json b/api/src/test/mock-data/response/spa-url-categories.json index 9209049e56..1d1ffa62c1 100644 --- a/api/src/test/mock-data/response/spa-url-categories.json +++ b/api/src/test/mock-data/response/spa-url-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Spanish is not supported by Rosette Categorizer", - "requestId": "57859621-291e-4bb1-bc36-f39fadf7ce37" + "message": "SPANISH is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-url-entities.json b/api/src/test/mock-data/response/spa-url-entities.json index 593d96d5b7..0023dfff3b 100644 --- a/api/src/test/mock-data/response/spa-url-entities.json +++ b/api/src/test/mock-data/response/spa-url-entities.json @@ -1,124 +1,67 @@ { "entities": [ { - "confidence": 0.011255035797754923, - "count": 6, + "count": 3, "indocChainId": 1, - "mention": "Colombia", - "normalized": "Colombia", - "type": "LOCATION" - }, - { - "confidence": 0.026651740074157715, - "count": 4, - "indocChainId": 8, - "mention": "México", - "normalized": "México", - "type": "LOCATION" - }, - { - "confidence": 0.017740070819854736, - "count": 2, - "indocChainId": 3, - "mention": "presidente", - "normalized": "presidente", - "type": "TITLE" - }, - { - "confidence": 0.012101918458938599, - "count": 2, - "indocChainId": 6, - "mention": "Enrique Peña Nieto", - "normalized": "Enrique Peña Nieto", - "type": "PERSON" - }, - { - "confidence": 0.01789921522140503, - "count": 2, - "indocChainId": 11, - "mention": "Juan Manuel Santos", - "normalized": "Juan Manuel Santos", - "type": "PERSON" + "mention": "INEGI", + "normalized": "INEGI", + "type": "ORGANIZATION" }, { - "confidence": 0.0028449296951293945, "count": 1, "indocChainId": 0, - "mention": "SECCIONES\nSociedad\nMéxico", - "normalized": "SECCIONES Sociedad México", + "mention": "Instituto Nacional de Estadística y Geografía", + "normalized": "Instituto Nacional de Estadística y Geografía", "type": "ORGANIZATION" }, { - "confidence": 0.007503092288970947, "count": 1, "indocChainId": 2, - "mention": "EPN", - "normalized": "EPN", + "mention": "BofA", + "normalized": "BofA", "type": "ORGANIZATION" }, { - "confidence": 0.00871974229812622, "count": 1, - "indocChainId": 11, - "mention": "Manuel Santos", - "normalized": "Manuel Santos", - "type": "PERSON" + "indocChainId": 3, + "mention": "México", + "normalized": "México", + "type": "LOCATION" }, { - "confidence": 0.027437686920166016, "count": 1, - "indocChainId": 18, - "mention": "Alianza Pacífico", - "normalized": "Alianza Pacífico", + "indocChainId": 6, + "mention": "Secretaría de Hacienda y Crédito Público", + "normalized": "Secretaría de Hacienda y Crédito Público", "type": "ORGANIZATION" }, { - "confidence": 0.056813716888427734, "count": 1, - "indocChainId": 20, - "mention": "Perú", - "normalized": "Perú", - "type": "LOCATION" - }, - { - "confidence": 0.062174439430236816, - "count": 1, - "indocChainId": 21, - "mention": "Chile", - "normalized": "Chile", - "type": "LOCATION" + "indocChainId": 6, + "mention": "SHCP", + "normalized": "SHCP", + "type": "ORGANIZATION" }, { - "confidence": 0.04952973127365112, "count": 1, - "indocChainId": 22, - "mention": "América Latina", - "normalized": "América Latina", - "type": "LOCATION" + "indocChainId": 8, + "mention": "Banco de México", + "normalized": "Banco de México", + "type": "ORGANIZATION" }, { - "confidence": 0.014632940292358398, "count": 1, - "indocChainId": 23, - "mention": "Pacífico", - "normalized": "Pacífico", - "type": "LOCATION" + "indocChainId": 9, + "mention": "Banxico", + "normalized": "Banxico", + "type": "ORGANIZATION" }, { - "confidence": 0.02009981870651245, "count": 1, - "indocChainId": 24, - "mention": "Peña Nieto Ver", - "normalized": "Peña Nieto Ver", - "type": "PERSON" + "indocChainId": 10, + "mention": "Notimex", + "normalized": "Notimex", + "type": "ORGANIZATION" } - ], - "requestId": "f0cfd156-e9cd-4c97-bb0e-0337fad05458", - "timers": { - "rblJe": 1, - "rexJe": 60, - "rliJe": 4, - "textExtractor": 18, - "urlContentDownloader": 243 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/spa-url-entities_linked.json b/api/src/test/mock-data/response/spa-url-entities_linked.json index fc53d91c08..17332c9b24 100644 --- a/api/src/test/mock-data/response/spa-url-entities_linked.json +++ b/api/src/test/mock-data/response/spa-url-entities_linked.json @@ -1,85 +1,52 @@ { "entities": [ { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", + "confidence": 0.7413422340712073, + "entityId": "Q795074", "indocChainId": 0, - "mention": "SECCIONES Sociedad México" + "mention": "Instituto Nacional de Estadística y Geografía" }, { - "confidence": 0.3842942678466512, - "entityId": "Q739", + "confidence": 0.7066911177876838, + "entityId": "Q795074", "indocChainId": 1, - "mention": "Colombia" + "mention": "INEGI" }, { - "confidence": 0.29145007042506105, - "entityId": "Q296741", + "confidence": 0.6220755546513274, + "entityId": "Q487907", "indocChainId": 2, - "mention": "EPN" + "mention": "BofA" }, { - "confidence": 0.9576033902530637, - "entityId": "Q296741", - "indocChainId": 6, - "mention": "Enrique Peña Nieto" - }, - { - "confidence": 0.25986302388359683, + "confidence": 0.18501351504466576, "entityId": "Q96", - "indocChainId": 8, + "indocChainId": 3, "mention": "México" }, { - "confidence": 0.8635177623456834, - "entityId": "Q57311", - "indocChainId": 11, - "mention": "Juan Manuel Santos" - }, - { - "confidence": 0.31713577301095347, - "entityId": "Q7122288", - "indocChainId": 18, - "mention": "Alianza Pacífico" - }, - { - "confidence": 0.5114125729137015, - "entityId": "Q419", - "indocChainId": 20, - "mention": "Perú" - }, - { - "confidence": 0.30983850993114276, - "entityId": "Q298", - "indocChainId": 21, - "mention": "Chile" + "confidence": 0.7902546467082464, + "entityId": "Q1506364", + "indocChainId": 6, + "mention": "Secretaría de Hacienda y Crédito Público" }, { - "confidence": 0.8050428060258218, - "entityId": "Q12585", - "indocChainId": 22, - "mention": "América Latina" + "confidence": 0.7783457933405213, + "entityId": "Q806208", + "indocChainId": 8, + "mention": "Banco de México" }, { - "confidence": 0.41896853374939264, - "entityId": "Q98", - "indocChainId": 23, - "mention": "Pacífico" + "confidence": 0.7600026087939152, + "entityId": "Q806208", + "indocChainId": 9, + "mention": "Banxico" }, { - "confidence": 0.9132640852566012, - "entityId": "NEW-CLUSTER", - "indocChainId": 24, - "mention": "Peña Nieto Ver" + "confidence": 0.6926678939643374, + "entityId": "Q3344512", + "indocChainId": 10, + "mention": "Notimex" } - ], - "requestId": "f7202522-6e5c-4635-ba9d-867f4b96352f", - "timers": { - "rblJe": 1, - "res": 944, - "rexJe": 12, - "rliJe": 4, - "textExtractor": 14, - "urlContentDownloader": 279 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-url-language.json b/api/src/test/mock-data/response/spa-url-language.json index 6063fa363c..51be7a6096 100644 --- a/api/src/test/mock-data/response/spa-url-language.json +++ b/api/src/test/mock-data/response/spa-url-language.json @@ -1,30 +1,24 @@ { "languageDetections": [ { - "confidence": 0.029893909972914412, + "confidence": 0.03455004796476979, "language": "spa" }, { - "confidence": 0.01496215995459671, + "confidence": 0.018692202267273195, "language": "cat" }, { - "confidence": 0.012349912140416586, + "confidence": 0.013206909260328636, "language": "por" }, { - "confidence": 0.009009841891852277, - "language": "fra" + "confidence": 0.010204818091364753, + "language": "ron" }, { - "confidence": 0.007744138165555303, - "language": "ita" + "confidence": 0.009120539908729963, + "language": "fra" } - ], - "requestId": "7f05d390-d540-4cfd-acbc-ffc00a594318", - "timers": { - "rliJe": 2, - "textExtractor": 160, - "urlContentDownloader": 2190 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-url-morphology_complete.json b/api/src/test/mock-data/response/spa-url-morphology_complete.json index 91aa01b3a4..0de5e30e37 100644 --- a/api/src/test/mock-data/response/spa-url-morphology_complete.json +++ b/api/src/test/mock-data/response/spa-url-morphology_complete.json @@ -1,1887 +1,2157 @@ { - "compounds": [], - "hanReadings": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "lemmas": [ - { - "lemma": "00", - "text": "00" - }, - { - "lemma": "00", - "text": "00" - }, - { - "lemma": "00", - "text": "00" - }, - { - "lemma": "|", - "text": "|" - }, - { - "lemma": "00:00", - "text": "00:00" - }, - { - "lemma": "sección", - "text": "SECCIONES" - }, - { - "lemma": "sociedad", - "text": "Sociedad" - }, - { - "lemma": "México", - "text": "México" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "Colombia", - "text": "Colombia" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "nación", - "text": "naciones" - }, - { - "lemma": "con", - "text": "con" - }, - { - "lemma": "objetivo", - "text": "objetivos" - }, - { - "lemma": "común", - "text": "comunes" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "EPN", - "text": "EPN" - }, - { - "lemma": "en", - "text": "En" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "marco", - "text": "marco" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "visita", - "text": "visita" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "estado", - "text": "Estado" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "ceremonia", - "text": "ceremonia" - }, - { - "lemma": "oficial", - "text": "oficial" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "bienvenido", - "text": "bienvenida" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "presidente", - "text": "presidente" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Colombia", - "text": "Colombia" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "juan", - "text": "juan" - }, - { - "lemma": "Manuel", - "text": "Manuel" - }, - { - "lemma": "Santos", - "text": "Santos" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "mandatario", - "text": "mandatario" - }, - { - "lemma": "mexicano", - "text": "mexicano" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Enrique", - "text": "Enrique" - }, - { - "lemma": "Peña", - "text": "Peña" - }, - { - "lemma": "Nieto", - "text": "Nieto" - }, - { - "lemma": "destacar", - "text": "destacó" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "Colombia", - "text": "Colombia" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "México", - "text": "México" - }, - { - "lemma": "ser", - "text": "son" - }, - { - "lemma": "dos", - "text": "dos" - }, - { - "lemma": "nación", - "text": "naciones" - }, - { - "lemma": "hermano", - "text": "hermanas" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "unir", - "text": "unidas" - }, - { - "lemma": "por", - "text": "por" - }, - { - "lemma": "valor", - "text": "valores" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "afecto", - "text": "afectos" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "objetivo", - "text": "objetivos" - }, - { - "lemma": "común", - "text": "comunes" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "compartir", - "text": "compartir" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "por", - "text": "Por" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "redacción", - "text": "Redacción" - }, - { - "lemma": "viernes", - "text": "Viernes" - }, - { - "lemma": "08", - "text": "08" - }, - { - "lemma": "05", - "text": "05" - }, - { - "lemma": "15", - "text": "15" - }, - { - "lemma": "en", - "text": "En" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "marco", - "text": "marco" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "visita", - "text": "visita" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "estado", - "text": "Estado" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "ceremonia", - "text": "ceremonia" - }, - { - "lemma": "oficial", - "text": "oficial" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "bienvenido", - "text": "bienvenida" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "presidente", - "text": "presidente" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "Colombia", - "text": "Colombia" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Juan", - "text": "Juan" - }, - { - "lemma": "Manuel", - "text": "Manuel" - }, - { - "lemma": "Santos", - "text": "Santos" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "mandatario", - "text": "mandatario" - }, - { - "lemma": "mexicano", - "text": "mexicano" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Enrique", - "text": "Enrique" - }, - { - "lemma": "Peña", - "text": "Peña" - }, - { - "lemma": "Nieto", - "text": "Nieto" - }, - { - "lemma": "destacar", - "text": "destacó" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "Colombia", - "text": "Colombia" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "México", - "text": "México" - }, - { - "lemma": "ser", - "text": "son" - }, - { - "lemma": "dos", - "text": "dos" - }, - { - "lemma": "nación", - "text": "naciones" - }, - { - "lemma": "hermano", - "text": "hermanas" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "unir", - "text": "unidas" - }, - { - "lemma": "por", - "text": "por" - }, - { - "lemma": "valor", - "text": "valores" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "afecto", - "text": "afectos" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "objetivo", - "text": "objetivos" - }, - { - "lemma": "común", - "text": "comunes" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "sostener", - "text": "Sostuvo" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "comercio", - "text": "comercio" - }, - { - "lemma": "bilateral", - "text": "bilateral" - }, - { - "lemma": "entre", - "text": "entre" - }, - { - "lemma": "ambos", - "text": "ambas" - }, - { - "lemma": "nación", - "text": "naciones" - }, - { - "lemma": "haber", - "text": "ha" - }, - { - "lemma": "crecer", - "text": "crecido" - }, - { - "lemma": "14", - "text": "14" - }, - { - "lemma": "%", - "text": "%" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "año", - "text": "año" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "hoy", - "text": "hoy" - }, - { - "lemma": "ser", - "text": "es" - }, - { - "lemma": "12", - "text": "12" - }, - { - "lemma": "vez", - "text": "veces" - }, - { - "lemma": "más", - "text": "más" - }, - { - "lemma": "grande", - "text": "grande" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "hacer", - "text": "hace" - }, - { - "lemma": "apenas", - "text": "apenas" - }, - { - "lemma": "dos", - "text": "dos" - }, - { - "lemma": "década", - "text": "décadas" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "por", - "text": "Por" - }, - { - "lemma": "él", - "text": "su" - }, - { - "lemma": "parte", - "text": "parte" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "mandatario", - "text": "mandatario" - }, - { - "lemma": "Juan", - "text": "Juan" - }, - { - "lemma": "Manuel", - "text": "Manuel" - }, - { - "lemma": "Santos", - "text": "Santos" - }, - { - "lemma": "decir", - "text": "dijo" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "el", - "text": "las" - }, - { - "lemma": "relación", - "text": "relaciones" - }, - { - "lemma": "entre", - "text": "entre" - }, - { - "lemma": "México", - "text": "México" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "Colombia", - "text": "Colombia" - }, - { - "lemma": "se", - "text": "se" - }, - { - "lemma": "elevar", - "text": "elevarán" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "rango", - "text": "rango" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "asociación", - "text": "asociación" - }, - { - "lemma": "estratégico", - "text": "estratégica" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "destacar", - "text": "Destacó" - }, - { - "lemma": "que", - "text": "que" - }, - { - "lemma": "“", - "text": "“" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "alianza", - "text": "Alianza" - }, - { - "lemma": "pacífico", - "text": "Pacífico" - }, - { - "lemma": "haber", - "text": "ha" - }, - { - "lemma": "potenciar", - "text": "potenciado" - }, - { - "lemma": "nosotros", - "text": "nuestro" - }, - { - "lemma": "papel", - "text": "papel" - }, - { - "lemma": "en", - "text": "en" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "región", - "text": "región" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "junto", - "text": "Junto" - }, - { - "lemma": "con", - "text": "con" - }, - { - "lemma": "México", - "text": "México" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Perú", - "text": "Perú" - }, - { - "lemma": "y", - "text": "y" - }, - { - "lemma": "chile", - "text": "Chile" - }, - { - "lemma": "equivaler", - "text": "equivalemos" - }, - { - "lemma": "a", - "text": "a" - }, - { - "lemma": "el", - "text": "la" - }, - { - "lemma": "sexto", - "text": "sexta" - }, - { - "lemma": "economía", - "text": "economía" - }, - { - "lemma": "de el", - "text": "del" - }, - { - "lemma": "mundo", - "text": "mundo" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "el", - "text": "La" - }, - { - "lemma": "alianza", - "text": "alianza" - }, - { - "lemma": "ser", - "text": "es" - }, - { - "lemma": "el", - "text": "el" - }, - { - "lemma": "proceso", - "text": "proceso" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "integración", - "text": "integración" - }, - { - "lemma": "más", - "text": "más" - }, - { - "lemma": "exitoso", - "text": "exitoso" - }, - { - "lemma": "de", - "text": "de" - }, - { - "lemma": "América", - "text": "América" - }, - { - "lemma": "Latina", - "text": "Latina" - }, - { - "lemma": "”", - "text": "”" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Alianza", - "text": "Alianza" - }, - { - "lemma": "de el", - "text": "del" - }, - { - "lemma": "pacífico", - "text": "Pacífico" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "abrir", - "text": "abierta" - }, - { - "lemma": "a el", - "text": "al" - }, - { - "lemma": "libre", - "text": "libre" - }, - { - "lemma": "comercio", - "text": "comercio" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "Peña", - "text": "Peña" - }, - { - "lemma": "Nieto", - "text": "Nieto" - }, - { - "lemma": "ver", - "text": "Ver" - }, - { - "lemma": "nota", - "text": "nota" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "mrc", - "text": "mrc" - } + "el", + "PIB", + "registrar", + "un", + "aumento", + "de", + "0.5", + "%", + "durante", + "el", + "cuarto", + "trimestre", + "economía", + "mexicano", + "crecer", + "2.5", + "%", + "en", + "4T", + ",", + "él", + "mayor", + "ritmo", + "en", + "tres", + "año", + "el", + "producto", + "interno", + "bruto", + "de el", + "país", + ",", + "en", + "él", + "comparación", + "anual", + ",", + "registrar", + "un", + "alza", + "real", + "de", + "2.5", + "%", + "en", + "el", + "trimestre", + "de", + "octubre", + "a", + "diciembre", + "de el", + "2015", + "con", + "relación", + "a", + "igual", + "trimestre", + "de el", + "2014", + ",", + "el", + "mayor", + "de", + "el", + "último", + "tres", + "año", + ".", + "redacción", + "analista", + "ver", + "dólar", + "más", + "caro", + "y", + "menor", + "crecimiento", + "para", + "2016", + "feb", + "2", + ",", + "2016", + "|", + "3:23", + "compartir", + "el", + "producto", + "interno", + "bruto", + "de el", + "país", + ",", + "en", + "él", + "comparación", + "anual", + ",", + "registrar", + "un", + "alza", + "real", + "de", + "2.5", + "%", + "en", + "el", + "trimestre", + "de", + "octubre", + "a", + "diciembre", + "de el", + "2015", + "con", + "relación", + "a", + "igual", + "trimestre", + "de el", + "2014", + ",", + "el", + "mayor", + "de", + "el", + "último", + "tres", + "año", + ",", + "en", + "línea", + "con", + "el", + "prever", + "por", + "autoridad", + "y", + "analista", + ",", + "dar", + "a", + "conocer", + "el", + "instituto", + "nacional", + "de", + "estadístico", + "y", + "geografía", + "(", + "INEGI", + ")", + ".", + "noticia", + ":", + "PIB", + "estar", + "atrapar", + "en", + "2.5", + "%", + ":", + "BofA", + "por", + "grande", + "actividad", + "económico", + ",", + "el", + "PIB", + "de", + "el", + "actividad", + "terciario", + "se", + "elevar", + "3.7", + "%", + ",", + "el", + "de", + "el", + "primario", + "2.9", + "%", + "y", + "el", + "de", + "el", + "secundario", + "él", + "hacer", + "en", + "0.2", + "%", + ",", + "precisar", + "el", + "organismo", + "estadístico", + ".", + "el", + "producto", + "interno", + "bruto", + "(", + "PIB", + ")", + "de", + "México", + "registrar", + "un", + "aumento", + "real", + "de", + "0.5", + "%", + "durante", + "el", + "cuarto", + "trimestre", + "de", + "2015", + "respecto", + "a el", + "inmediato", + "anterior", + ",", + "con", + "cifra", + "ajustar", + "por", + "estacionalidad", + ",", + "detallar", + "el", + "INEGI", + ".", + "por", + "componente", + ",", + "el", + "actividad", + "terciario", + "se", + "incrementar", + "en", + "término", + "real", + "0.9", + "%", + ";", + "en", + "tanto", + "que", + "el", + "primario", + "decrecer", + "1.9", + "y", + "el", + "secundario", + "0.4", + "%", + "frente", + "a el", + "trimestre", + "previo", + ",", + "de", + "acuerdo", + "a", + "dato", + "de el", + "instituto", + "de", + "estadístico", + ".", + "el", + "dato", + "de el", + "PIB", + "a el", + "cierre", + "de el", + "2015", + ",", + "de", + "2.5", + "%", + ",", + "ser", + "similar", + "a", + "el", + "estimación", + "oportuno", + "que", + "realizar", + "el", + "INEGI", + "el", + "pasado", + "29", + "de", + "enero", + ",", + "y", + "resultar", + "el", + "mayor", + "de", + "el", + "último", + "tres", + "año", + ",", + "tras", + "el", + "crecimiento", + "de", + "2.3", + "%", + "en", + "2014", + ",", + "de", + "1.4", + "%", + "en", + "2013", + "y", + "de", + "4.0", + "%", + "en", + "2012", + ".", + "noticia", + ":", + "analista", + "bajar", + "expectativa", + "de el", + "PIB", + "2016", + "de", + "3.8", + "a", + "2.8", + "%", + "dicho", + "resultado", + "estar", + "en", + "línea", + "con", + "el", + "pronóstico", + "de", + "el", + "secretar", + "de", + "hacienda", + "y", + "crédito", + "público", + "(", + "SHCP", + ")", + "para", + "el", + "crecimiento", + "de", + "el", + "economía", + "mexicano", + "en", + "2015", + ",", + "de", + "un", + "rango", + "de", + "2.0", + "a", + "2.8", + "%", + ",", + "así", + "como", + "el", + "de el", + "banco", + "de", + "México", + "(", + "Banxico", + ")", + ",", + "de", + "un", + "intervalo", + "de", + "1.9", + "a", + "2.4", + "%", + ",", + "y", + "el", + "2.5", + "%", + "prever", + "por", + "analista", + "para", + "todo", + "el", + "año", + "pasar", + ".", + "con", + "información", + "de", + "Notimex" ], "posTags": [ - { - "pos": "DIG", - "text": "00" - }, - { - "pos": "DIG", - "text": "00" - }, - { - "pos": "DIG", - "text": "00" - }, - { - "pos": "PUNCT", - "text": "|" - }, - { - "pos": "DIG", - "text": "00:00" - }, - { - "pos": "NOUNPL", - "text": "SECCIONES" - }, - { - "pos": "NOUNSG", - "text": "Sociedad" - }, - { - "pos": "PROP", - "text": "México" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "PROP", - "text": "Colombia" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUNPL", - "text": "naciones" - }, - { - "pos": "PREP", - "text": "con" - }, - { - "pos": "NOUNPL", - "text": "objetivos" - }, - { - "pos": "ADJPL", - "text": "comunes" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PROP", - "text": "EPN" - }, - { - "pos": "PREP", - "text": "En" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "marco" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "visita" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "Estado" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "ceremonia" - }, - { - "pos": "ADJSG", - "text": "oficial" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "ADJSG", - "text": "bienvenida" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "NOUNSG", - "text": "presidente" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "PROP", - "text": "Colombia" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "juan" - }, - { - "pos": "PROP", - "text": "Manuel" - }, - { - "pos": "PROP", - "text": "Santos" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "mandatario" - }, - { - "pos": "ADJSG", - "text": "mexicano" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Enrique" - }, - { - "pos": "PROP", - "text": "Peña" - }, - { - "pos": "PROP", - "text": "Nieto" - }, - { - "pos": "VERBFIN", - "text": "destacó" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PROP", - "text": "Colombia" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "PROP", - "text": "México" - }, - { - "pos": "AUX", - "text": "son" - }, - { - "pos": "NUM", - "text": "dos" - }, - { - "pos": "NOUNPL", - "text": "naciones" - }, - { - "pos": "NOUNPL", - "text": "hermanas" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PAPPL", - "text": "unidas" - }, - { - "pos": "PREP", - "text": "por" - }, - { - "pos": "NOUNPL", - "text": "valores" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUNPL", - "text": "afectos" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "NOUNPL", - "text": "objetivos" - }, - { - "pos": "ADJPL", - "text": "comunes" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "VERBINF", - "text": "compartir" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PREP", - "text": "Por" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "NOUNSG", - "text": "Redacción" - }, - { - "pos": "NOUN", - "text": "Viernes" - }, - { - "pos": "DIG", - "text": "08" - }, - { - "pos": "DIG", - "text": "05" - }, - { - "pos": "DIG", - "text": "15" - }, - { - "pos": "PREP", - "text": "En" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "marco" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "visita" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "Estado" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "ceremonia" - }, - { - "pos": "ADJSG", - "text": "oficial" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "ADJSG", - "text": "bienvenida" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "NOUNSG", - "text": "presidente" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "PROP", - "text": "Colombia" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Juan" - }, - { - "pos": "PROP", - "text": "Manuel" - }, - { - "pos": "PROP", - "text": "Santos" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "mandatario" - }, - { - "pos": "ADJSG", - "text": "mexicano" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Enrique" - }, - { - "pos": "PROP", - "text": "Peña" - }, - { - "pos": "PROP", - "text": "Nieto" - }, - { - "pos": "VERBFIN", - "text": "destacó" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PROP", - "text": "Colombia" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "PROP", - "text": "México" - }, - { - "pos": "AUX", - "text": "son" - }, - { - "pos": "NUM", - "text": "dos" - }, - { - "pos": "NOUNPL", - "text": "naciones" - }, - { - "pos": "NOUNPL", - "text": "hermanas" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PAPPL", - "text": "unidas" - }, - { - "pos": "PREP", - "text": "por" - }, - { - "pos": "NOUNPL", - "text": "valores" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUNPL", - "text": "afectos" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "NOUNPL", - "text": "objetivos" - }, - { - "pos": "ADJPL", - "text": "comunes" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "VERBFIN", - "text": "Sostuvo" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "comercio" - }, - { - "pos": "ADJSG", - "text": "bilateral" - }, - { - "pos": "PREP", - "text": "entre" - }, - { - "pos": "DETQUANTPL", - "text": "ambas" - }, - { - "pos": "NOUNPL", - "text": "naciones" - }, - { - "pos": "HAB", - "text": "ha" - }, - { - "pos": "PAPSG", - "text": "crecido" - }, - { - "pos": "DIG", - "text": "14" - }, - { - "pos": "PUNCT", - "text": "%" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "NOUNSG", - "text": "año" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "ADV", - "text": "hoy" - }, - { - "pos": "AUX", - "text": "es" - }, - { - "pos": "DIG", - "text": "12" - }, - { - "pos": "NOUNPL", - "text": "veces" - }, - { - "pos": "ADV", - "text": "más" - }, - { - "pos": "ADJSG", - "text": "grande" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "VERBFIN", - "text": "hace" - }, - { - "pos": "ADV", - "text": "apenas" - }, - { - "pos": "NUM", - "text": "dos" - }, - { - "pos": "NOUNPL", - "text": "décadas" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "Por" - }, - { - "pos": "DETSG", - "text": "su" - }, - { - "pos": "NOUNSG", - "text": "parte" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "mandatario" - }, - { - "pos": "PROP", - "text": "Juan" - }, - { - "pos": "PROP", - "text": "Manuel" - }, - { - "pos": "PROP", - "text": "Santos" - }, - { - "pos": "VERBFIN", - "text": "dijo" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "DETPL", - "text": "las" - }, - { - "pos": "NOUNPL", - "text": "relaciones" - }, - { - "pos": "PREP", - "text": "entre" - }, - { - "pos": "PROP", - "text": "México" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "PROP", - "text": "Colombia" - }, - { - "pos": "SE", - "text": "se" - }, - { - "pos": "VERBFIN", - "text": "elevarán" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "NOUNSG", - "text": "rango" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "asociación" - }, - { - "pos": "ADJSG", - "text": "estratégica" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "VERBFIN", - "text": "Destacó" - }, - { - "pos": "QUE", - "text": "que" - }, - { - "pos": "PUNCT", - "text": "“" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "Alianza" - }, - { - "pos": "ADJSG", - "text": "Pacífico" - }, - { - "pos": "HAB", - "text": "ha" - }, - { - "pos": "PAPSG", - "text": "potenciado" - }, - { - "pos": "DETSG", - "text": "nuestro" - }, - { - "pos": "NOUNSG", - "text": "papel" - }, - { - "pos": "PREP", - "text": "en" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "NOUNSG", - "text": "región" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Junto" - }, - { - "pos": "PREP", - "text": "con" - }, - { - "pos": "PROP", - "text": "México" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PROP", - "text": "Perú" - }, - { - "pos": "CONJ", - "text": "y" - }, - { - "pos": "NOUNSG", - "text": "Chile" - }, - { - "pos": "VERBFIN", - "text": "equivalemos" - }, - { - "pos": "PREP", - "text": "a" - }, - { - "pos": "DETSG", - "text": "la" - }, - { - "pos": "ADJSG", - "text": "sexta" - }, - { - "pos": "NOUNSG", - "text": "economía" - }, - { - "pos": "PREPDET", - "text": "del" - }, - { - "pos": "NOUNSG", - "text": "mundo" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "DETSG", - "text": "La" - }, - { - "pos": "NOUNSG", - "text": "alianza" - }, - { - "pos": "AUX", - "text": "es" - }, - { - "pos": "DETSG", - "text": "el" - }, - { - "pos": "NOUNSG", - "text": "proceso" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "NOUNSG", - "text": "integración" - }, - { - "pos": "ADV", - "text": "más" - }, - { - "pos": "ADJSG", - "text": "exitoso" - }, - { - "pos": "PREP", - "text": "de" - }, - { - "pos": "PROP", - "text": "América" - }, - { - "pos": "PROP", - "text": "Latina" - }, - { - "pos": "PUNCT", - "text": "”" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "Alianza" - }, - { - "pos": "PREPDET", - "text": "del" - }, - { - "pos": "ADJSG", - "text": "Pacífico" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PAPSG", - "text": "abierta" - }, - { - "pos": "PREPDET", - "text": "al" - }, - { - "pos": "ADJSG", - "text": "libre" - }, - { - "pos": "NOUNSG", - "text": "comercio" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PROP", - "text": "Peña" - }, - { - "pos": "PROP", - "text": "Nieto" - }, - { - "pos": "VERBINF", - "text": "Ver" - }, - { - "pos": "NOUNSG", - "text": "nota" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PROP", - "text": "mrc" - } + "DETSG", + "PROP", + "VERBFIN", + "DETQUANTSG", + "NOUNSG", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DETSG", + "ADJSG", + "NOUNSG", + "NOUNSG", + "ADJSG", + "VERBFIN", + "DIG", + "PUNCT", + "PREP", + "PROP", + "CM", + "DETSG", + "ADJSG", + "NOUNSG", + "PREP", + "NUM", + "NOUNPL", + "DETSG", + "NOUNSG", + "ADJSG", + "NOUNSG", + "PREPDET", + "NOUNSG", + "CM", + "PREP", + "DETSG", + "NOUNSG", + "ADJSG", + "CM", + "VERBFIN", + "DETQUANTSG", + "NOUNSG", + "ADJSG", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DETSG", + "NOUNSG", + "PREP", + "NOUNSG", + "PREP", + "NOUNSG", + "PREPDET", + "DIG", + "PREP", + "NOUNSG", + "PREP", + "ADJSG", + "NOUNSG", + "PREPDET", + "DIG", + "CM", + "DETSG", + "ADJSG", + "PREP", + "DETPL", + "ADJPL", + "NUM", + "NOUNPL", + "SENT", + "NOUNSG", + "NOUNPL", + "VERBFIN", + "NOUNSG", + "ADV", + "ADJSG", + "CONJ", + "ADJSG", + "NOUNSG", + "PREP", + "DIG", + "NOUN", + "DIG", + "CM", + "DIG", + "PUNCT", + "DIG", + "VERBINF", + "DETSG", + "NOUNSG", + "ADJSG", + "NOUNSG", + "PREPDET", + "NOUNSG", + "CM", + "PREP", + "DETSG", + "NOUNSG", + "ADJSG", + "CM", + "VERBFIN", + "DETQUANTSG", + "NOUNSG", + "ADJSG", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DETSG", + "NOUNSG", + "PREP", + "NOUNSG", + "PREP", + "NOUNSG", + "PREPDET", + "DIG", + "PREP", + "NOUNSG", + "PREP", + "ADJSG", + "NOUNSG", + "PREPDET", + "DIG", + "CM", + "DETSG", + "ADJSG", + "PREP", + "DETPL", + "ADJPL", + "NUM", + "NOUNPL", + "CM", + "PREP", + "NOUNSG", + "PREP", + "DETSG", + "PAPSG", + "PREP", + "NOUNPL", + "CONJ", + "NOUNPL", + "CM", + "VERBFIN", + "PREP", + "VERBINF", + "DETSG", + "NOUNSG", + "ADJSG", + "PREP", + "ADJSG", + "CONJ", + "NOUNSG", + "PUNCT", + "PROP", + "PUNCT", + "SENT", + "NOUNSG", + "PUNCT", + "PROP", + "AUX", + "PAPSG", + "PREP", + "DIG", + "PUNCT", + "PUNCT", + "PROP", + "PREP", + "ADJPL", + "NOUNPL", + "ADJPL", + "CM", + "DETSG", + "PROP", + "PREP", + "DETPL", + "NOUNPL", + "ADJPL", + "SE", + "VERBFIN", + "DIG", + "PUNCT", + "CM", + "DETSG", + "PREP", + "DETPL", + "ADJPL", + "DIG", + "PUNCT", + "CONJ", + "DETSG", + "PREP", + "DETPL", + "ADJPL", + "PRONCLIT", + "VERBFIN", + "PREP", + "DIG", + "PUNCT", + "CM", + "VERBFIN", + "DETSG", + "NOUNSG", + "ADJSG", + "SENT", + "DETSG", + "NOUNSG", + "ADJSG", + "NOUNSG", + "PUNCT", + "PROP", + "PUNCT", + "PREP", + "PROP", + "VERBFIN", + "DETQUANTSG", + "NOUNSG", + "ADJSG", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DETSG", + "ADJSG", + "NOUNSG", + "PREP", + "DIG", + "NOUNSG", + "PREPDET", + "ADJSG", + "ADJSG", + "CM", + "PREP", + "NOUNPL", + "PAPPL", + "PREP", + "NOUNSG", + "CM", + "VERBFIN", + "DETSG", + "PROP", + "SENT", + "PREP", + "NOUNPL", + "CM", + "DETPL", + "NOUNPL", + "ADJPL", + "SE", + "VERBFIN", + "PREP", + "NOUNPL", + "ADJPL", + "DIG", + "PUNCT", + "SENT", + "PREP", + "ADV", + "QUE", + "DETPL", + "ADJPL", + "VERBFIN", + "DIG", + "CONJ", + "DETPL", + "ADJPL", + "DIG", + "PUNCT", + "NOUNSG", + "PREPDET", + "NOUNSG", + "ADJSG", + "CM", + "PREP", + "NOUNSG", + "PREP", + "NOUNPL", + "PREPDET", + "NOUNSG", + "PREP", + "ADJSG", + "SENT", + "DETSG", + "NOUNSG", + "PREPDET", + "PROP", + "PREPDET", + "NOUNSG", + "PREPDET", + "DIG", + "CM", + "PREP", + "DIG", + "PUNCT", + "CM", + "AUX", + "ADJSG", + "PREP", + "DETSG", + "NOUNSG", + "ADJSG", + "QUE", + "VERBFIN", + "DETSG", + "PROP", + "DETSG", + "NOUNSG", + "DIG", + "PREP", + "NOUNSG", + "CM", + "CONJ", + "VERBFIN", + "DETSG", + "ADJSG", + "PREP", + "DETPL", + "ADJPL", + "NUM", + "NOUNPL", + "CM", + "PREP", + "DETSG", + "NOUNSG", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DIG", + "CM", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DIG", + "CONJ", + "PREP", + "DIG", + "PUNCT", + "PREP", + "DIG", + "SENT", + "NOUNSG", + "PUNCT", + "NOUNPL", + "VERBFIN", + "NOUNPL", + "PREPDET", + "PROP", + "DIG", + "PREP", + "DIG", + "PREP", + "DIG", + "PUNCT", + "DETSG", + "NOUNSG", + "AUX", + "PREP", + "NOUNSG", + "PREP", + "DETSG", + "NOUNSG", + "PREP", + "DETSG", + "VERBFIN", + "PREP", + "NOUNSG", + "CONJ", + "NOUNSG", + "ADJSG", + "PUNCT", + "PROP", + "PUNCT", + "PREP", + "DETSG", + "NOUNSG", + "PREP", + "DETSG", + "NOUNSG", + "ADJSG", + "PREP", + "DIG", + "CM", + "PREP", + "DETQUANTSG", + "NOUNSG", + "PREP", + "DIG", + "PREP", + "DIG", + "PUNCT", + "CM", + "ADV", + "COMO", + "DETSG", + "PREPDET", + "NOUNSG", + "PREP", + "PROP", + "PUNCT", + "PROP", + "PUNCT", + "CM", + "PREP", + "DETQUANTSG", + "NOUNSG", + "PREP", + "DIG", + "PREP", + "DIG", + "PUNCT", + "CM", + "CONJ", + "DETSG", + "DIG", + "PUNCT", + "PAPSG", + "PREP", + "NOUNPL", + "PREP", + "PREDETSG", + "DETSG", + "NOUNSG", + "PAPSG", + "SENT", + "PREP", + "NOUNSG", + "PREP", + "PROP" ], - "requestId": "c77f0d0f-1474-4d2c-b6cc-a88bcc32f4cb", - "timers": { - "rblJe": 3, - "rliJe": 2, - "textExtractor": 16, - "urlContentDownloader": 394 - } + "tokens": [ + "El", + "PIB", + "registró", + "un", + "aumento", + "de", + "0.5", + "%", + "durante", + "el", + "cuarto", + "trimestre", + "Economía", + "mexicana", + "creció", + "2.5", + "%", + "en", + "4T", + ",", + "su", + "mayor", + "ritmo", + "en", + "tres", + "años", + "El", + "Producto", + "Interno", + "Bruto", + "del", + "país", + ",", + "en", + "su", + "comparación", + "anual", + ",", + "registró", + "una", + "alza", + "real", + "de", + "2.5", + "%", + "en", + "el", + "trimestre", + "de", + "octubre", + "a", + "diciembre", + "del", + "2015", + "con", + "relación", + "a", + "igual", + "trimestre", + "del", + "2014", + ",", + "el", + "mayor", + "de", + "los", + "últimos", + "tres", + "años", + ".", + "Redacción", + "Analistas", + "ven", + "dólar", + "más", + "caro", + "y", + "menor", + "crecimiento", + "para", + "2016", + "feb", + "2", + ",", + "2016", + "|", + "3:23", + "compartir", + "El", + "Producto", + "Interno", + "Bruto", + "del", + "país", + ",", + "en", + "su", + "comparación", + "anual", + ",", + "registró", + "una", + "alza", + "real", + "de", + "2.5", + "%", + "en", + "el", + "trimestre", + "de", + "octubre", + "a", + "diciembre", + "del", + "2015", + "con", + "relación", + "a", + "igual", + "trimestre", + "del", + "2014", + ",", + "el", + "mayor", + "de", + "los", + "últimos", + "tres", + "años", + ",", + "en", + "línea", + "con", + "lo", + "previsto", + "por", + "autoridades", + "y", + "analistas", + ",", + "dio", + "a", + "conocer", + "el", + "Instituto", + "Nacional", + "de", + "Estadística", + "y", + "Geografía", + "(", + "INEGI", + ")", + ".", + "NOTICIA", + ":", + "PIB", + "está", + "atrapado", + "en", + "2.5", + "%", + ":", + "BofA", + "Por", + "grandes", + "actividades", + "económicas", + ",", + "el", + "PIB", + "de", + "las", + "actividades", + "terciarias", + "se", + "elevó", + "3.7", + "%", + ",", + "el", + "de", + "las", + "primarias", + "2.9", + "%", + "y", + "el", + "de", + "las", + "secundarias", + "lo", + "hizo", + "en", + "0.2", + "%", + ",", + "precisó", + "el", + "organismo", + "estadístico", + ".", + "El", + "Producto", + "Interno", + "Bruto", + "(", + "PIB", + ")", + "de", + "México", + "registró", + "un", + "aumento", + "real", + "de", + "0.5", + "%", + "durante", + "el", + "cuarto", + "trimestre", + "de", + "2015", + "respecto", + "al", + "inmediato", + "anterior", + ",", + "con", + "cifras", + "ajustadas", + "por", + "estacionalidad", + ",", + "detalló", + "el", + "INEGI", + ".", + "Por", + "componentes", + ",", + "las", + "actividades", + "terciarias", + "se", + "incrementaron", + "en", + "términos", + "reales", + "0.9", + "%", + ";", + "en", + "tanto", + "que", + "las", + "primarias", + "decrecieron", + "1.9", + "y", + "las", + "secundarias", + "0.4", + "%", + "frente", + "al", + "trimestre", + "previo", + ",", + "de", + "acuerdo", + "a", + "datos", + "del", + "instituto", + "de", + "estadística", + ".", + "El", + "dato", + "del", + "PIB", + "al", + "cierre", + "del", + "2015", + ",", + "de", + "2.5", + "%", + ",", + "fue", + "similar", + "a", + "la", + "estimación", + "oportuna", + "que", + "realizó", + "el", + "INEGI", + "el", + "pasado", + "29", + "de", + "enero", + ",", + "y", + "resultó", + "el", + "mayor", + "de", + "los", + "últimos", + "tres", + "años", + ",", + "tras", + "el", + "crecimiento", + "de", + "2.3", + "%", + "en", + "2014", + ",", + "de", + "1.4", + "%", + "en", + "2013", + "y", + "de", + "4.0", + "%", + "en", + "2012", + ".", + "NOTICIA", + ":", + "Analistas", + "bajan", + "expectativas", + "del", + "PIB", + "2016", + "de", + "3.8", + "a", + "2.8", + "%", + "Dicho", + "resultado", + "estuvo", + "en", + "línea", + "con", + "el", + "pronóstico", + "de", + "la", + "Secretaría", + "de", + "Hacienda", + "y", + "Crédito", + "Público", + "(", + "SHCP", + ")", + "para", + "el", + "crecimiento", + "de", + "la", + "economía", + "mexicana", + "en", + "2015", + ",", + "de", + "un", + "rango", + "de", + "2.0", + "a", + "2.8", + "%", + ",", + "así", + "como", + "el", + "del", + "Banco", + "de", + "México", + "(", + "Banxico", + ")", + ",", + "de", + "un", + "intervalo", + "de", + "1.9", + "a", + "2.4", + "%", + ",", + "y", + "el", + "2.5", + "%", + "previsto", + "por", + "analistas", + "para", + "todo", + "el", + "año", + "pasado", + ".", + "Con", + "información", + "de", + "Notimex" + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/spa-url-sentiment.json b/api/src/test/mock-data/response/spa-url-sentiment.json index 763691b162..e2a0f24678 100644 --- a/api/src/test/mock-data/response/spa-url-sentiment.json +++ b/api/src/test/mock-data/response/spa-url-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Spanish is not supported by Rosette Sentiment Analyzer", - "requestId": "ee40ebe3-dea8-4e97-8fc5-70c8dd98063c" + "message": "Unsupported language: Spanish" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/unknown-field-entities.json b/api/src/test/mock-data/response/unknown-field-entities.json new file mode 100644 index 0000000000..bc6dda1bda --- /dev/null +++ b/api/src/test/mock-data/response/unknown-field-entities.json @@ -0,0 +1,40 @@ +{ + "entities": [ + { + "count": 2, + "indocChainId": 0, + "mention": "U.S.", + "normalized": "U.S.", + "type": "LOCATION", + "some-future-field": "foo" + }, + { + "count": 1, + "indocChainId": 1, + "mention": "Iraq", + "normalized": "Iraq", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 2, + "mention": "Afghanistan", + "normalized": "Afghanistan", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 3, + "mention": "commander in chief", + "normalized": "commander in chief", + "type": "TITLE" + }, + { + "count": 1, + "indocChainId": 4, + "mention": "American", + "normalized": "American", + "type": "NATIONALITY" + } + ] +} diff --git a/api/src/test/mock-data/response/eng-sentence-entities_linked.status b/api/src/test/mock-data/response/unknown-field-entities.status similarity index 100% rename from api/src/test/mock-data/response/eng-sentence-entities_linked.status rename to api/src/test/mock-data/response/unknown-field-entities.status diff --git a/api/src/test/mock-data/response/xxx-doc-categories.json b/api/src/test/mock-data/response/xxx-doc-categories.json index 4cc84679ab..d26bb179e9 100644 --- a/api/src/test/mock-data/response/xxx-doc-categories.json +++ b/api/src/test/mock-data/response/xxx-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "German is not supported by Rosette Categorizer", - "requestId": "8074661f-0d89-4a61-a8c1-4c87da01a745" + "message": "KOREAN is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-doc-entities.json b/api/src/test/mock-data/response/xxx-doc-entities.json index 8a4e747528..c1a9e6b960 100644 --- a/api/src/test/mock-data/response/xxx-doc-entities.json +++ b/api/src/test/mock-data/response/xxx-doc-entities.json @@ -1,122 +1,389 @@ { "entities": [ { - "confidence": 0.05986414849758148, "count": 4, "indocChainId": 0, - "mention": "Europa", - "normalized": "Europa", - "type": "LOCATION" + "mention": "김일성의", + "normalized": "김일성", + "type": "PERSON" }, { - "confidence": 0.008987635374069214, "count": 2, "indocChainId": 2, - "mention": "Teneriffa", - "normalized": "Teneriffa", + "mention": "한국의", + "normalized": "한국", + "type": "LOCATION" + }, + { + "count": 2, + "indocChainId": 3, + "mention": "만주", + "normalized": "만주", "type": "LOCATION" }, { - "confidence": 0.035944998264312744, + "count": 2, + "indocChainId": 13, + "mention": "총비서로", + "normalized": "총비서로", + "type": "TITLE" + }, + { + "count": 2, + "indocChainId": 20, + "mention": "대동군", + "normalized": "대동군", + "type": "LOCATION" + }, + { + "count": 2, + "indocChainId": 24, + "mention": "김형직", + "normalized": "김형직", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 0, + "mention": "김일성은", + "normalized": "김일성", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 0, + "mention": "김일성으로", + "normalized": "김일성", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 0, + "mention": "김일성", + "normalized": "김일성", + "type": "PERSON" + }, + { "count": 1, "indocChainId": 1, - "mention": "Spanien", - "normalized": "Spanien", - "type": "LOCATION" + "mention": "金日成", + "normalized": "金日成", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 1, + "mention": "金成", + "normalized": "金成", + "type": "PERSON" }, { - "confidence": 0.03711158037185669, "count": 1, "indocChainId": 3, - "mention": "Europäische Union", - "normalized": "Europäische Union", + "mention": "만주로", + "normalized": "만주", "type": "LOCATION" }, { - "confidence": 0.03636401891708374, "count": 1, "indocChainId": 4, - "mention": "Innenminister", - "normalized": "Innenminister", - "type": "TITLE" + "mention": "조선혁명군", + "normalized": "조선혁명군", + "type": "ORGANIZATION" }, { - "confidence": 0.01726752519607544, "count": 1, - "indocChainId": 8, - "mention": "Professor", - "normalized": "Professor", + "indocChainId": 5, + "mention": "조선인민혁명군으로", + "normalized": "조선인민혁명군", + "type": "ORGANIZATION" + }, + { + "count": 1, + "indocChainId": 6, + "mention": "조선민주주의인민공화국의", + "normalized": "조선민주주의인민공화국", + "type": "ORGANIZATION" + }, + { + "count": 1, + "indocChainId": 7, + "mention": "총리", + "normalized": "총리", "type": "TITLE" }, { - "confidence": 0.00736004114151001, "count": 1, - "indocChainId": 9, - "mention": "Klaus J. Bade", - "normalized": "Klaus J. Bade", + "indocChainId": 8, + "mention": "김성주", + "normalized": "김성주", "type": "PERSON" }, { - "confidence": 0.013958752155303955, "count": 1, "indocChainId": 10, - "mention": "Universität Osnabrück", - "normalized": "Universität Osnabrück", + "mention": "金聖柱", + "normalized": "金聖柱", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 12, + "mention": "조선로동당 중앙위원회", + "normalized": "조선로동당 중앙위원회", "type": "ORGANIZATION" }, { - "confidence": 0.03818148374557495, "count": 1, - "indocChainId": 11, - "mention": "Somalia", - "normalized": "Somalia", + "indocChainId": 14, + "mention": "당중앙위원회", + "normalized": "당중앙위원회", + "type": "ORGANIZATION" + }, + { + "count": 1, + "indocChainId": 16, + "mention": "대한민국에서는", + "normalized": "대한민국", "type": "LOCATION" }, { - "confidence": 0.03774428367614746, "count": 1, - "indocChainId": 12, - "mention": "Fischer", - "normalized": "Fischer", + "indocChainId": 17, + "mention": "한국전쟁을", + "normalized": "한국전쟁", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 19, + "mention": "평안남도", + "normalized": "평안남도", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 21, + "mention": "고평면", + "normalized": "고평면", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 22, + "mention": "평양으로", + "normalized": "평양", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 22, + "mention": "평양", + "normalized": "평양", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 23, + "mention": "만경대", + "normalized": "만경대", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 24, + "mention": "김형직이", + "normalized": "김형직", "type": "PERSON" }, { - "confidence": 0.019688069820404053, "count": 1, - "indocChainId": 14, - "mention": "Wolfgang Schäuble", - "normalized": "Wolfgang Schäuble", + "indocChainId": 25, + "mention": "金亨稷", + "normalized": "金亨稷", "type": "PERSON" }, { - "confidence": 0.06329077482223511, "count": 1, - "indocChainId": 14, - "mention": "Schäuble", - "normalized": "Schäuble", + "indocChainId": 26, + "mention": "강반석", + "normalized": "강반석", "type": "PERSON" }, { - "confidence": 0.024634122848510742, "count": 1, - "indocChainId": 15, - "mention": "CDU", - "normalized": "CDU", + "indocChainId": 28, + "mention": "전주", + "normalized": "전주", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 29, + "mention": "김씨", + "normalized": "김", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 30, + "mention": "전라북도", + "normalized": "전라북도", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 32, + "mention": "김응우는", + "normalized": "김응우", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 33, + "mention": "셔먼", + "normalized": "셔먼", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 34, + "mention": "만경대라는", + "normalized": "만경대", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 35, + "mention": "일본", + "normalized": "일본", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 37, + "mention": "기독교", + "normalized": "기독교", + "type": "RELIGION" + }, + { + "count": 1, + "indocChainId": 38, + "mention": "장로교", + "normalized": "장로교", + "type": "RELIGION" + }, + { + "count": 1, + "indocChainId": 39, + "mention": "강돈욱도", + "normalized": "강돈욱", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 39, + "mention": "강돈욱", + "normalized": "강돈욱", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 40, + "mention": "칠골교회의", + "normalized": "칠골교회", "type": "ORGANIZATION" }, { - "confidence": 0.023647606372833252, "count": 1, - "indocChainId": 16, - "mention": "Brüssel", - "normalized": "Brüssel", + "indocChainId": 42, + "mention": "강진석", + "normalized": "강진석", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 43, + "mention": "康晋錫", + "normalized": "康晋錫", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 45, + "mention": "김보현이", + "normalized": "김보현", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 46, + "mention": "성주", + "normalized": "성주", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 47, + "mention": "성주", + "normalized": "성주", + "type": "ORGANIZATION" + }, + { + "count": 1, + "indocChainId": 49, + "mention": "지린성(吉林省", + "normalized": "지린성(吉林省", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 50, + "mention": "무송", + "normalized": "무송", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 54, + "mention": "용산면", + "normalized": "용산면", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 55, + "mention": "칠골에", + "normalized": "칠골", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 56, + "mention": "창덕학교의", + "normalized": "창덕학교", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 56, + "mention": "창덕학교는", + "normalized": "창덕학교", + "type": "PERSON" + }, + { + "count": 1, + "indocChainId": 60, + "mention": "교감과 교장을", + "normalized": "교감과 교장을", + "type": "TITLE" + }, + { + "count": 1, + "indocChainId": 62, + "mention": "중국", + "normalized": "중국", "type": "LOCATION" } - ], - "requestId": "31401656-5766-4965-a472-51e3744b87bb", - "timers": { - "rblJe": 4, - "rexJe": 23, - "rliJe": 3 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/xxx-doc-entities_linked.json b/api/src/test/mock-data/response/xxx-doc-entities_linked.json index 288bb4c0c6..3b9266bc54 100644 --- a/api/src/test/mock-data/response/xxx-doc-entities_linked.json +++ b/api/src/test/mock-data/response/xxx-doc-entities_linked.json @@ -1,77 +1,142 @@ { "entities": [ { - "confidence": 0.2346810319289934, - "entityId": "Q46", + "confidence": 0.8802795548561408, + "entityId": "Q41117", "indocChainId": 0, - "mention": "Europa" + "mention": "김일성" }, { - "confidence": 0.5356297063629705, - "entityId": "Q29", + "confidence": 0.8751861210485232, + "entityId": "Q41117", "indocChainId": 1, - "mention": "Spanien" + "mention": "金日成" }, { - "confidence": 0.7032609592639487, - "entityId": "Q40846", + "confidence": 0.4272365242033509, + "entityId": "Q884", "indocChainId": 2, - "mention": "Teneriffa" + "mention": "한국" }, { - "confidence": 0.41392398168592914, - "entityId": "Q458", + "confidence": 0.3886208816645399, + "entityId": "Q81126", "indocChainId": 3, - "mention": "Europäische Union" + "mention": "만주" }, { - "confidence": 0.33153175597287526, - "entityId": "NEW-CLUSTER", - "indocChainId": 9, - "mention": "Klaus J. Bade" + "confidence": 0.6549690507473528, + "entityId": "Q707629", + "indocChainId": 5, + "mention": "조선인민혁명군" }, { - "confidence": 0.8090162845122769, - "entityId": "Q702499", - "indocChainId": 10, - "mention": "Universität Osnabrück" + "confidence": 0.7563096828089738, + "entityId": "Q423", + "indocChainId": 6, + "mention": "조선민주주의인민공화국" + }, + { + "confidence": 0.39076345631009024, + "entityId": "Q41117", + "indocChainId": 8, + "mention": "김성주" }, { - "confidence": 0.2187509737947439, - "entityId": "Q1045", - "indocChainId": 11, - "mention": "Somalia" + "confidence": 0.07376795566676654, + "entityId": "Q1741576", + "indocChainId": 10, + "mention": "金聖柱" }, { - "confidence": 0.07623418348028191, - "entityId": "NEW-CLUSTER", + "confidence": 0.507435228552116, + "entityId": "Q495876", "indocChainId": 12, - "mention": "Fischer" + "mention": "조선로동당 중앙위원회" }, { - "confidence": 0.6626603339839126, - "entityId": "Q16019", - "indocChainId": 14, - "mention": "Wolfgang Schäuble" + "confidence": 0.8323905521176216, + "entityId": "Q884", + "indocChainId": 16, + "mention": "대한민국" }, { - "confidence": 0.3004908400632998, - "entityId": "Q49762", - "indocChainId": 15, - "mention": "CDU" + "confidence": 0.5773449516033567, + "entityId": "Q109380", + "indocChainId": 19, + "mention": "평안남도" }, { - "confidence": 0.6103951759428435, - "entityId": "Q240", - "indocChainId": 16, - "mention": "Brüssel" + "confidence": 0.6745760117087101, + "entityId": "Q196271", + "indocChainId": 20, + "mention": "대동군" + }, + { + "confidence": 0.5687621503975444, + "entityId": "Q18808", + "indocChainId": 22, + "mention": "평양" + }, + { + "confidence": 0.9386614880824982, + "entityId": "Q489279", + "indocChainId": 24, + "mention": "김형직" + }, + { + "confidence": 0.9386614880824982, + "entityId": "Q489279", + "indocChainId": 25, + "mention": "金亨稷" + }, + { + "confidence": 0.79883199812955, + "entityId": "Q709975", + "indocChainId": 26, + "mention": "강반석" + }, + { + "confidence": 0.4219921026058561, + "entityId": "Q42140", + "indocChainId": 28, + "mention": "전주" + }, + { + "confidence": 0.6792383197745228, + "entityId": "Q41157", + "indocChainId": 30, + "mention": "전라북도" + }, + { + "confidence": 0.7295320685867954, + "entityId": "Q17", + "indocChainId": 35, + "mention": "일본" + }, + { + "confidence": 0.5444427195225453, + "entityId": "Q50250", + "indocChainId": 46, + "mention": "성주" + }, + { + "confidence": 0.5908362836301936, + "entityId": "Q50250", + "indocChainId": 47, + "mention": "성주" + }, + { + "confidence": 0.5177743800569374, + "entityId": "Q3055296", + "indocChainId": 50, + "mention": "무송" + }, + { + "confidence": 0.3766325235749189, + "entityId": "Q148", + "indocChainId": 62, + "mention": "중국" } - ], - "requestId": "c184acbe-d6e4-4db7-b599-9dc31dc07a08", - "timers": { - "rblJe": 5, - "res": 249, - "rexJe": 15, - "rliJe": 4 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-doc-language.json b/api/src/test/mock-data/response/xxx-doc-language.json index 8a3d93f4ec..a5a0bc6f0b 100644 --- a/api/src/test/mock-data/response/xxx-doc-language.json +++ b/api/src/test/mock-data/response/xxx-doc-language.json @@ -1,28 +1,24 @@ { "languageDetections": [ { - "confidence": 0.023407053954701884, - "language": "deu" + "confidence": 0.03488216765945229, + "language": "kor" }, { - "confidence": 0.008063001331808373, - "language": "nld" + "confidence": 8.670944458344376e-05, + "language": "zho" }, { - "confidence": 0.006120518059292035, - "language": "swe" + "confidence": 7.461277626452656e-05, + "language": "zho" }, { - "confidence": 0.005709172789692851, - "language": "nor" + "confidence": 3.509680092184109e-05, + "language": "jpn" }, { - "confidence": 0.005298351817899061, - "language": "eng" + "confidence": 0.0, + "language": "ara" } - ], - "requestId": "1b3fc281-9fcb-4d89-a2a6-0abaf47171cb", - "timers": { - "rliJe": 5 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-doc-morphology_complete.json b/api/src/test/mock-data/response/xxx-doc-morphology_complete.json index 552618b514..7a63e59d0a 100644 --- a/api/src/test/mock-data/response/xxx-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/xxx-doc-morphology_complete.json @@ -1,1914 +1,2652 @@ { - "compounds": [ - { - "compoundComponents": [ - "Heimat", - "Land" - ], - "text": "Heimatländern" - }, - { - "compoundComponents": [ - "Flüchtling", - "Strom" - ], - "text": "Flüchtlingsstrom" - }, - { - "compoundComponents": [ - "Gemeinschaft", - "Problem" - ], - "text": "Gemeinschaftsproblem" - }, - { - "compoundComponents": [ - "eignen", - "Verantwortung" - ], - "text": "Eigenverantwortung" - }, - { - "compoundComponents": [ - "Migration", - "Forscher" - ], - "text": "Migrationsforscher" - }, - { - "compoundComponents": [ - "textil", - "Sammlung" - ], - "text": "Textilsammlungen" - }, - { - "compoundComponents": [ - "textil", - "Industrie" - ], - "text": "Textilindustrie" - }, - { - "compoundComponents": [ - "Fisch", - "Fabrik" - ], - "text": "Fischfabriken" - }, - { - "compoundComponents": [ - "Küste", - "Fischerei" - ], - "text": "Küstenfischerei" - }, - { - "compoundComponents": [ - "Außen", - "Grenze" - ], - "text": "Außengrenzen" - }, - { - "compoundComponents": [ - "Außen", - "Grenze" - ], - "text": "Außengrenzen" - }, - { - "compoundComponents": [ - "Bürger", - "nah" - ], - "text": "bürgernäher" - } + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "독립", + "운동가" + ], + [ + "조선", + "민주주의" + ], + null, + null, + null, + null, + [ + "조선", + "공산주의", + "청년", + "동맹" + ], + null, + [ + "조선", + "혁명군" + ], + null, + [ + "반일", + "인민", + "유격대" + ], + null, + null, + [ + "조선", + "인민", + "혁명군" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "조선", + "민주주의", + "인민", + "공화국" + ], + null, + null, + null, + [ + "인민", + "공화국" + ], + [ + "국가", + "주석" + ], + null, + null, + [ + "국가", + "주석" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "당중앙", + "위원회" + ], + null, + null, + null, + [ + "중앙", + "위원회" + ], + [ + "총비", + "서로" + ], + null, + null, + null, + null, + null, + null, + null, + null, + [ + "당중앙", + "위원회" + ], + [ + "총비", + "서로" + ], + null, + null, + null, + null, + null, + [ + "한국", + "전쟁" + ], + null, + null, + [ + "장본인", + "중" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "절대", + "권력" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "삼형", + "제의" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "셔먼", + "호" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "항일", + "무장", + "투쟁" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "민족", + "운동" + ], + null, + null, + null, + null, + null, + null, + [ + "교육", + "사업" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "독립", + "운동" + ], + null, + null, + null, + null, + null, + null, + null, + [ + "팔", + "도구" + ], + [ + "팔도", + "구소" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "창덕", + "소학교" + ], + null, + null, + null, + null, + null, + [ + "창덕", + "학교" + ], + null, + null, + [ + "장로", + "교회" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "창덕", + "학교" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "중국인", + "소학교" + ], + [ + "중어", + "공부" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "창덕", + "학교" + ], + [ + "진학", + "과정" + ], + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + [ + "팔", + "도구" + ], + null, + null, + null, + null, + null, + null, + null, + null, + [ + "창덕", + "학교" + ], + null, + null, + null + ], + "hanReadings": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null ], - "hanReadings": [], "lemmas": [ - { - "lemma": "3.11.06", - "text": "3.11.06" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "not", - "text": "Not" - }, - { - "lemma": "und", - "text": "und" - }, - { - "lemma": "Elend", - "text": "Elend" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "ihr", - "text": "ihren" - }, - { - "lemma": "Heimatland", - "text": "Heimatländern" - }, - { - "lemma": "lassen", - "text": "lassen" - }, - { - "lemma": "immer", - "text": "immer" - }, - { - "lemma": "mehr", - "text": "mehr" - }, - { - "lemma": "Afrikaner", - "text": "Afrikaner" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "Reise", - "text": "Reise" - }, - { - "lemma": "nach", - "text": "nach" - }, - { - "lemma": "Europa", - "text": "Europa" - }, - { - "lemma": "antreten", - "text": "antreten" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "insbesondere", - "text": "Insbesondere" - }, - { - "lemma": "Spanien", - "text": "Spanien" - }, - { - "lemma": "sein", - "text": "ist" - }, - { - "lemma": "betreffen", - "text": "betroffen" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "allein", - "text": "allein" - }, - { - "lemma": "24.000", - "text": "24.000" - }, - { - "lemma": "Flüchtling", - "text": "Flüchtlinge" - }, - { - "lemma": "sein", - "text": "sind" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "dies", - "text": "diesem" - }, - { - "lemma": "Jahr", - "text": "Jahr" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Teneriffa", - "text": "Teneriffa" - }, - { - "lemma": "ankommen", - "text": "angekommen" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "nun", - "text": "Nun" - }, - { - "lemma": "beraten", - "text": "berät" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "europäisch", - "text": "Europäische" - }, - { - "lemma": "Union", - "text": "Union" - }, - { - "lemma": "über", - "text": "über" - }, - { - "lemma": "Maßnahme", - "text": "Maßnahmen" - }, - { - "lemma": "gegen", - "text": "gegen" - }, - { - "lemma": "der", - "text": "den" - }, - { - "lemma": "Flüchtlingsstrom", - "text": "Flüchtlingsstrom" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "nicht", - "text": "Nicht" - }, - { - "lemma": "alle", - "text": "alle" - }, - { - "lemma": "Länder", - "text": "Länder" - }, - { - "lemma": "sehen", - "text": "sehen" - }, - { - "lemma": "darin", - "text": "darin" - }, - { - "lemma": "ein", - "text": "ein" - }, - { - "lemma": "Gemeinschaftsproblem", - "text": "Gemeinschaftsproblem" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "der", - "text": "der" - }, - { - "lemma": "deutsch", - "text": "deutsche" - }, - { - "lemma": "Innenminister", - "text": "Innenminister" - }, - { - "lemma": "Schäuble", - "text": "Schäuble" - }, - { - "lemma": "appellieren", - "text": "appelliert" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "Eigenverantwortung", - "text": "Eigenverantwortung" - }, - { - "lemma": "der", - "text": "der" - }, - { - "lemma": "Länder", - "text": "Länder" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "die", - "text": "Die" - }, - { - "lemma": "Flüchtling", - "text": "Flüchtlinge" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "auf", - "text": "auf" - }, - { - "lemma": "Teneriffa", - "text": "Teneriffa" - }, - { - "lemma": "in der", - "text": "im" - }, - { - "lemma": "Lager", - "text": "Lager" - }, - { - "lemma": "ausharren", - "text": "ausharren" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "kommen", - "text": "kommen" - }, - { - "lemma": "aus", - "text": "aus" - }, - { - "lemma": "Land", - "text": "Ländern" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "die", - "text": "denen" - }, - { - "lemma": "sie", - "text": "sie" - }, - { - "lemma": "kaum", - "text": "kaum" - }, - { - "lemma": "existieren", - "text": "existieren" - }, - { - "lemma": "können", - "text": "können" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "auch", - "text": "auch" - }, - { - "lemma": "wegen", - "text": "wegen" - }, - { - "lemma": "der", - "text": "der" - }, - { - "lemma": "Konkurrenz", - "text": "Konkurrenz" - }, - { - "lemma": "aus", - "text": "aus" - }, - { - "lemma": "Europa", - "text": "Europa" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "wie", - "text": "wie" - }, - { - "lemma": "Professor", - "text": "Professor" - }, - { - "lemma": "Klaus", - "text": "Klaus" - }, - { - "lemma": "J.", - "text": "J." - }, - { - "lemma": "Bad", - "text": "Bade" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Migrationsforscher", - "text": "Migrationsforscher" - }, - { - "lemma": "an", - "text": "an" - }, - { - "lemma": "der", - "text": "der" - }, - { - "lemma": "Universität", - "text": "Universität" - }, - { - "lemma": "Osnabrück", - "text": "Osnabrück" - }, - { - "lemma": "wissen", - "text": "weiß" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "unser", - "text": "Unsere" - }, - { - "lemma": "Textilsammlung", - "text": "Textilsammlungen" - }, - { - "lemma": "landen", - "text": "landen" - }, - { - "lemma": "auf", - "text": "auf" - }, - { - "lemma": "kommerziell", - "text": "kommerziellen" - }, - { - "lemma": "Markt", - "text": "Märkten" - }, - { - "lemma": "und", - "text": "und" - }, - { - "lemma": "ruinieren", - "text": "ruinieren" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "Textilindustrie", - "text": "Textilindustrie" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "und", - "text": "Und" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "schwimmen", - "text": "schwimmenden" - }, - { - "lemma": "Fischfabrik", - "text": "Fischfabriken" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "Fisch", - "text": "Fisch" - }, - { - "lemma": "unten", - "text": "unten" - }, - { - "lemma": "rein", - "text": "rein" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "Dose", - "text": "Dose" - }, - { - "lemma": "oben", - "text": "oben" - }, - { - "lemma": "raus", - "text": "raus" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "vor", - "text": "vor" - }, - { - "lemma": "der", - "text": "den" - }, - { - "lemma": "afrikanisch", - "text": "afrikanischen" - }, - { - "lemma": "Küste", - "text": "Küsten" - }, - { - "lemma": "ruinieren", - "text": "ruinieren" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "Küstenfischerei", - "text": "Küstenfischerei" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "Ergebnis", - "text": "Ergebnis" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "in", - "text": "In" - }, - { - "lemma": "Somalia", - "text": "Somalia" - }, - { - "lemma": "transportieren", - "text": "transportieren" - }, - { - "lemma": "inzwischen", - "text": "inzwischen" - }, - { - "lemma": "ruinieren", - "text": "ruinierte" - }, - { - "lemma": "Fischer", - "text": "Fischer" - }, - { - "lemma": "mit", - "text": "mit" - }, - { - "lemma": "ihr", - "text": "ihren" - }, - { - "lemma": "Boot", - "text": "Booten" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "illegal", - "text": "Illegalen" - }, - { - "lemma": "in", - "text": "in" - }, - { - "lemma": "Richtung", - "text": "Richtung" - }, - { - "lemma": "Europa", - "text": "Europa" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "doch", - "text": "Doch" - }, - { - "lemma": "sich", - "text": "sich" - }, - { - "lemma": "vor", - "text": "vor" - }, - { - "lemma": "illegal", - "text": "Illegalen" - }, - { - "lemma": "zu", - "text": "zu" - }, - { - "lemma": "schützen", - "text": "schützen" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "damit", - "text": "damit" - }, - { - "lemma": "müssen", - "text": "müsse" - }, - { - "lemma": "jede", - "text": "jedes" - }, - { - "lemma": "Land", - "text": "Land" - }, - { - "lemma": "selbst", - "text": "selbst" - }, - { - "lemma": "fertig", - "text": "fertig" - }, - { - "lemma": "werden", - "text": "werden" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "wie", - "text": "wie" - }, - { - "lemma": "Wolfgang", - "text": "Wolfgang" - }, - { - "lemma": "Schäuble", - "text": "Schäuble" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "CDU", - "text": "CDU" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "betonen", - "text": "betont" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "in", - "text": "In" - }, - { - "lemma": "Brüssel", - "text": "Brüssel" - }, - { - "lemma": "sein", - "text": "ist" - }, - { - "lemma": "der", - "text": "der" - }, - { - "lemma": "Ruf", - "text": "Ruf" - }, - { - "lemma": "immer", - "text": "immer" - }, - { - "lemma": "wohlfeil", - "text": "wohlfeil" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "es", - "text": "Es" - }, - { - "lemma": "müssen", - "text": "muss" - }, - { - "lemma": "alles", - "text": "alles" - }, - { - "lemma": "europäisch", - "text": "europäisch" - }, - { - "lemma": "machen", - "text": "gemacht" - }, - { - "lemma": "werden", - "text": "werden" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "jede", - "text": "Jedes" - }, - { - "lemma": "Land", - "text": "Land" - }, - { - "lemma": "mit", - "text": "mit" - }, - { - "lemma": "Außengrenze", - "text": "Außengrenzen" - }, - { - "lemma": "müssen", - "text": "muss" - }, - { - "lemma": "sein", - "text": "seine" - }, - { - "lemma": "Außengrenze", - "text": "Außengrenzen" - }, - { - "lemma": "schon", - "text": "schon" - }, - { - "lemma": "selber", - "text": "selber" - }, - { - "lemma": "kontrollieren", - "text": "kontrollieren" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "wenn", - "text": "Wenn" - }, - { - "lemma": "wir", - "text": "wir" - }, - { - "lemma": "die", - "text": "die" - }, - { - "lemma": "Verantwortung", - "text": "Verantwortung" - }, - { - "lemma": "nach", - "text": "nach" - }, - { - "lemma": "Europa", - "text": "Europa" - }, - { - "lemma": "schieben", - "text": "schieben" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "werden", - "text": "wird" - }, - { - "lemma": "es", - "text": "es" - }, - { - "lemma": "weder", - "text": "weder" - }, - { - "lemma": "Bürgernah", - "text": "bürgernäher" - }, - { - "lemma": "noch", - "text": "noch" - }, - { - "lemma": "effizient", - "text": "effizienter" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "sondern", - "text": "sondern" - }, - { - "lemma": "ganz", - "text": "ganz" - }, - { - "lemma": "in der", - "text": "im" - }, - { - "lemma": "Gegenteil", - "text": "Gegenteil" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - } + "김일성", + "(", + "金", + "日", + "成", + ",", + "년", + "월", + "일", + "~", + "년", + "월", + "일", + ")", + "은", + "한국", + "독립운동가", + "조선민주주의", + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의", + "정치인", + ".", + "만주", + "조선공산주의청년동맹", + ",", + "조선혁명군", + ",", + "반일인민유격대", + "(", + "그후", + "조선인민혁명군", + "개편", + ")", + "등", + "조직", + ".", + "해방", + "후", + "년", + "년", + "조선민주주의인민공화국", + "총리", + ",", + "년", + "인민공화국", + "국가주석", + ",", + "년", + "국가주석", + "재선", + ".", + "원래", + "이름", + "김성주", + "(", + "金", + "成", + "柱", + "[", + "1", + "]", + "[", + "2", + "]", + "또는", + "金", + "聖", + "柱", + "[", + "3", + "]", + "[", + "4", + "]", + ")", + "이다", + ",", + "항일", + "투쟁", + "하다", + "[", + "3", + "]", + "[", + "4", + "]", + "[", + "5", + "]", + "김일성", + "개명", + "[", + "3", + "]", + "[", + "4", + "]", + "[", + "6", + "]", + "하다", + ".", + "년", + "월", + "당중앙위원회", + "제4기", + "14차전원회의에서", + "조선로동당", + "중앙위원회", + "총비서로", + "선출", + "1970", + "년", + "진행", + "제5차전당대회와", + "년", + "월", + "6차전당대회에서", + "당중앙위원회", + "총비서로", + "또다시", + "재서", + "되", + ".", + "대한민국", + "한국전쟁", + "발발", + "하", + "장본인중", + "한사람", + "지목", + "최근", + "부정", + "평가", + "받다", + "오", + ".", + "년", + "절대권력", + "상징", + "그", + "사망", + "아들", + "김정일", + "모든", + "권력", + "승", + "계하", + ".", + "어리", + "시절", + "가계", + "[", + "편집", + "]", + "김일성", + "생가", + "김일성", + "년", + "월", + "일", + "평안남도", + "대동군", + "고평면", + "(", + "古", + "平", + "面", + ")", + "하리", + "칠곡", + "(", + "외가", + "있", + "곳", + ",", + "오늘날", + "평양", + "만경대", + ")", + "[", + "6", + "]", + "에서", + "아버지", + "김형직", + "(", + "金", + "亨", + "稷", + ",", + "년", + "월", + "일", + "~", + "년", + ")", + "과", + "어머니", + "강반석", + "(", + "康", + "盤", + "石", + ",", + "[", + "7", + "]", + "년", + "~", + "년", + ")", + "의", + "삼형제의", + "맏아", + "태어나다", + ".", + "김일성", + "전주", + "김", + "12대조", + "김계상", + "전라북도", + "전", + "주", + "평양", + "이주", + ",", + "[", + "6", + "]", + "[", + "8", + "]", + "이후", + "농업", + "종사", + ",", + "증조부", + "김응우", + "제너럴", + "셔먼호", + "사건", + "종군", + ".", + "북조선", + "김응우", + "제너럴", + "셔먼", + "호", + "격퇴", + "지휘관", + "주장", + ".", + "그", + "생가", + "만경대", + "이름", + "보존", + ",", + "관리", + "있", + ".", + "김형직", + "할아버지", + "이래", + "지주", + "집안", + "묘지기", + ",", + "[", + "9", + "]", + "일본", + "제국주의", + "대항", + "항일무장투쟁", + "벌이다", + "한국", + "독립", + "운동가", + "알려지다", + "있", + ".", + "[", + "3", + "]", + "어머니", + "강반석", + "기독교", + "장로교", + "신도", + ",", + "외할아버지", + "강돈욱", + "[", + "9", + "]", + "늘", + "칠골교회", + "장로", + "[", + "10", + "]", + "이다", + ".", + "[", + "3", + "]", + "김일성", + "외", + "늘다", + "크", + "외삼촌", + "강진석", + "(", + "康", + "晋", + "錫", + ")", + "을", + "비롯", + "일찍부터", + "항일", + "민족운동", + "관련", + "맺다", + "있", + ",", + "강돈욱", + "평생", + "교육사업", + "헌신", + "기독교인", + ".", + "[", + "9", + "]", + "아버지", + "김형직", + "또는", + "할아버지", + "김보현", + "기둥이", + "되", + "늘", + "뜻", + "그", + "이름", + "성주", + "(", + "成", + "柱", + ")", + "또는", + "성주", + "(", + "聖", + "柱", + ")", + "라", + "짓다", + "하", + ".", + "어려서", + "부모", + "따르다", + "주", + "지린성", + "(", + "吉", + "林", + "省", + ")", + "무송", + "(", + "撫", + "松", + ")", + "으로", + "이사", + ".", + "년", + "일곱", + "살", + "김일성", + "민족주의", + "계열", + "독립운동", + "하다", + "아버지", + "김형직", + "따르다", + "만주", + "건너", + "장백현", + "팔도구", + "팔도구소", + "학교", + "다니다", + ".", + "그", + "뒤", + "자식", + "장래", + "생각", + "김형직", + "결심", + "따르다", + "년", + "초", + "년", + "초", + "평", + "안", + "대동군", + "용산면", + "하리", + "(", + "下", + "里", + ")", + "칠골", + "있", + "외가", + "머물다", + "창덕소학교", + "다니다", + ".", + "[", + "9", + "]", + "창덕학교", + "년", + "하리", + "장로교회", + "중심", + "되다", + "세운", + "년제", + "학교", + ",", + "김일성", + "외할아버지", + "강돈욱", + "설립자", + "가운데", + "한", + "사람", + ",", + "한때", + "창덕학교", + "교감", + "교장", + "맡다", + "하", + ".", + "아버지", + "김형직", + "권고", + "중국말", + "을", + "배우다", + "중국인소학교", + "중어공부", + "하다", + "중어", + "자유롭", + "구사할수", + "있", + ".", + "[", + "11", + "]", + "창덕학교", + "진학과정", + "대하다", + "략력", + "아버지", + "김형직", + "'", + "혁명", + "하다", + "자기", + "나라", + "알다", + "하", + "말하다", + "권고", + "받다", + "년", + "월", + "중국", + "팔도구", + "만경대까지배움", + "천리길", + "걷다", + "통학", + "외", + "가집", + "있", + "칠고", + "창덕학교", + "공부", + "것", + "." ], "posTags": [ - { - "pos": "CARD", - "text": "3.11.06" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADV", - "text": "Not" - }, - { - "pos": "COORD", - "text": "und" - }, - { - "pos": "NOUN", - "text": "Elend" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "POSDET", - "text": "ihren" - }, - { - "pos": "NOUN", - "text": "Heimatländern" - }, - { - "pos": "VVFIN", - "text": "lassen" - }, - { - "pos": "ADV", - "text": "immer" - }, - { - "pos": "INDADJ", - "text": "mehr" - }, - { - "pos": "NOUN", - "text": "Afrikaner" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "NOUN", - "text": "Reise" - }, - { - "pos": "PREP", - "text": "nach" - }, - { - "pos": "NOUN", - "text": "Europa" - }, - { - "pos": "VVINF", - "text": "antreten" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Insbesondere" - }, - { - "pos": "NOUN", - "text": "Spanien" - }, - { - "pos": "VAFIN", - "text": "ist" - }, - { - "pos": "VVPP", - "text": "betroffen" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADV", - "text": "allein" - }, - { - "pos": "CARD", - "text": "24.000" - }, - { - "pos": "NOUN", - "text": "Flüchtlinge" - }, - { - "pos": "VAFIN", - "text": "sind" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "DEMDET", - "text": "diesem" - }, - { - "pos": "NOUN", - "text": "Jahr" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "NOUN", - "text": "Teneriffa" - }, - { - "pos": "VVPP", - "text": "angekommen" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ADV", - "text": "Nun" - }, - { - "pos": "VVFIN", - "text": "berät" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "ADJA", - "text": "Europäische" - }, - { - "pos": "NOUN", - "text": "Union" - }, - { - "pos": "PREP", - "text": "über" - }, - { - "pos": "NOUN", - "text": "Maßnahmen" - }, - { - "pos": "PREP", - "text": "gegen" - }, - { - "pos": "ART", - "text": "den" - }, - { - "pos": "NOUN", - "text": "Flüchtlingsstrom" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PTKNEG", - "text": "Nicht" - }, - { - "pos": "INDDET", - "text": "alle" - }, - { - "pos": "NOUN", - "text": "Länder" - }, - { - "pos": "VVFIN", - "text": "sehen" - }, - { - "pos": "ADV", - "text": "darin" - }, - { - "pos": "ART", - "text": "ein" - }, - { - "pos": "NOUN", - "text": "Gemeinschaftsproblem" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ART", - "text": "der" - }, - { - "pos": "ADJA", - "text": "deutsche" - }, - { - "pos": "NOUN", - "text": "Innenminister" - }, - { - "pos": "NOUN", - "text": "Schäuble" - }, - { - "pos": "VVFIN", - "text": "appelliert" - }, - { - "pos": "PREP", - "text": "an" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "NOUN", - "text": "Eigenverantwortung" - }, - { - "pos": "ART", - "text": "der" - }, - { - "pos": "NOUN", - "text": "Länder" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "ART", - "text": "Die" - }, - { - "pos": "NOUN", - "text": "Flüchtlinge" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "RELPRO", - "text": "die" - }, - { - "pos": "PREP", - "text": "auf" - }, - { - "pos": "NOUN", - "text": "Teneriffa" - }, - { - "pos": "PREPART", - "text": "im" - }, - { - "pos": "NOUN", - "text": "Lager" - }, - { - "pos": "VVINF", - "text": "ausharren" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VVFIN", - "text": "kommen" - }, - { - "pos": "PREP", - "text": "aus" - }, - { - "pos": "NOUN", - "text": "Ländern" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "RELPRO", - "text": "denen" - }, - { - "pos": "PERSPRO", - "text": "sie" - }, - { - "pos": "ADV", - "text": "kaum" - }, - { - "pos": "VVINF", - "text": "existieren" - }, - { - "pos": "VMFIN", - "text": "können" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "ADV", - "text": "auch" - }, - { - "pos": "PREP", - "text": "wegen" - }, - { - "pos": "ART", - "text": "der" - }, - { - "pos": "NOUN", - "text": "Konkurrenz" - }, - { - "pos": "PREP", - "text": "aus" - }, - { - "pos": "NOUN", - "text": "Europa" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COWIE", - "text": "wie" - }, - { - "pos": "NOUN", - "text": "Professor" - }, - { - "pos": "NOUN", - "text": "Klaus" - }, - { - "pos": "NOUN", - "text": "J." - }, - { - "pos": "NOUN", - "text": "Bade" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "Migrationsforscher" - }, - { - "pos": "PREP", - "text": "an" - }, - { - "pos": "ART", - "text": "der" - }, - { - "pos": "NOUN", - "text": "Universität" - }, - { - "pos": "NOUN", - "text": "Osnabrück" - }, - { - "pos": "VVFIN", - "text": "weiß" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "POSDET", - "text": "Unsere" - }, - { - "pos": "NOUN", - "text": "Textilsammlungen" - }, - { - "pos": "VVFIN", - "text": "landen" - }, - { - "pos": "PREP", - "text": "auf" - }, - { - "pos": "ADJA", - "text": "kommerziellen" - }, - { - "pos": "NOUN", - "text": "Märkten" - }, - { - "pos": "COORD", - "text": "und" - }, - { - "pos": "VVFIN", - "text": "ruinieren" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "NOUN", - "text": "Textilindustrie" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COORD", - "text": "Und" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "ADJA", - "text": "schwimmenden" - }, - { - "pos": "NOUN", - "text": "Fischfabriken" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "NOUN", - "text": "Fisch" - }, - { - "pos": "ADV", - "text": "unten" - }, - { - "pos": "ADJD", - "text": "rein" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "NOUN", - "text": "Dose" - }, - { - "pos": "ADV", - "text": "oben" - }, - { - "pos": "VPREF", - "text": "raus" - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "PREP", - "text": "vor" - }, - { - "pos": "ART", - "text": "den" - }, - { - "pos": "ADJA", - "text": "afrikanischen" - }, - { - "pos": "NOUN", - "text": "Küsten" - }, - { - "pos": "VVFIN", - "text": "ruinieren" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "NOUN", - "text": "Küstenfischerei" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "NOUN", - "text": "Ergebnis" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PREP", - "text": "In" - }, - { - "pos": "NOUN", - "text": "Somalia" - }, - { - "pos": "VVFIN", - "text": "transportieren" - }, - { - "pos": "ADV", - "text": "inzwischen" - }, - { - "pos": "ADJA", - "text": "ruinierte" - }, - { - "pos": "NOUN", - "text": "Fischer" - }, - { - "pos": "PREP", - "text": "mit" - }, - { - "pos": "POSDET", - "text": "ihren" - }, - { - "pos": "NOUN", - "text": "Booten" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "NOUN", - "text": "Illegalen" - }, - { - "pos": "PREP", - "text": "in" - }, - { - "pos": "NOUN", - "text": "Richtung" - }, - { - "pos": "NOUN", - "text": "Europa" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "COADV", - "text": "Doch" - }, - { - "pos": "REFLPRO", - "text": "sich" - }, - { - "pos": "PREP", - "text": "vor" - }, - { - "pos": "NOUN", - "text": "Illegalen" - }, - { - "pos": "PTKINF", - "text": "zu" - }, - { - "pos": "VVINF", - "text": "schützen" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "ADV", - "text": "damit" - }, - { - "pos": "VMFIN", - "text": "müsse" - }, - { - "pos": "INDDET", - "text": "jedes" - }, - { - "pos": "NOUN", - "text": "Land" - }, - { - "pos": "ADV", - "text": "selbst" - }, - { - "pos": "ADJD", - "text": "fertig" - }, - { - "pos": "VAINF", - "text": "werden" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COWIE", - "text": "wie" - }, - { - "pos": "NOUN", - "text": "Wolfgang" - }, - { - "pos": "NOUN", - "text": "Schäuble" - }, - { - "pos": "PUNCT", - "text": "(" - }, - { - "pos": "NOUN", - "text": "CDU" - }, - { - "pos": "PUNCT", - "text": ")" - }, - { - "pos": "VVPP", - "text": "betont" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "PREP", - "text": "In" - }, - { - "pos": "NOUN", - "text": "Brüssel" - }, - { - "pos": "VAFIN", - "text": "ist" - }, - { - "pos": "ART", - "text": "der" - }, - { - "pos": "NOUN", - "text": "Ruf" - }, - { - "pos": "ADV", - "text": "immer" - }, - { - "pos": "ADJD", - "text": "wohlfeil" - }, - { - "pos": "PUNCT", - "text": ":" - }, - { - "pos": "PERSPRO", - "text": "Es" - }, - { - "pos": "VMFIN", - "text": "muss" - }, - { - "pos": "INDPRO", - "text": "alles" - }, - { - "pos": "ADJD", - "text": "europäisch" - }, - { - "pos": "VVPP", - "text": "gemacht" - }, - { - "pos": "VAINF", - "text": "werden" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "INDDET", - "text": "Jedes" - }, - { - "pos": "NOUN", - "text": "Land" - }, - { - "pos": "PREP", - "text": "mit" - }, - { - "pos": "NOUN", - "text": "Außengrenzen" - }, - { - "pos": "VMFIN", - "text": "muss" - }, - { - "pos": "POSDET", - "text": "seine" - }, - { - "pos": "NOUN", - "text": "Außengrenzen" - }, - { - "pos": "ADV", - "text": "schon" - }, - { - "pos": "ADV", - "text": "selber" - }, - { - "pos": "VVINF", - "text": "kontrollieren" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "COSUB", - "text": "Wenn" - }, - { - "pos": "PERSPRO", - "text": "wir" - }, - { - "pos": "ART", - "text": "die" - }, - { - "pos": "NOUN", - "text": "Verantwortung" - }, - { - "pos": "PREP", - "text": "nach" - }, - { - "pos": "NOUN", - "text": "Europa" - }, - { - "pos": "VVINF", - "text": "schieben" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "VAFIN", - "text": "wird" - }, - { - "pos": "PERSPRO", - "text": "es" - }, - { - "pos": "COP1", - "text": "weder" - }, - { - "pos": "ADJD2", - "text": "bürgernäher" - }, - { - "pos": "ADV", - "text": "noch" - }, - { - "pos": "ADJD2", - "text": "effizienter" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "COORD", - "text": "sondern" - }, - { - "pos": "ADJD", - "text": "ganz" - }, - { - "pos": "PREPART", - "text": "im" - }, - { - "pos": "NOUN", - "text": "Gegenteil" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - } + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SCM", + "NNU", + "NNU", + "NNU", + "SSY", + "NNU", + "NNU", + "NNU", + "SRQ", + "NPR", + "NPR", + "NNC", + "NNC", + null, + "NPR", + "SSY", + "NPR", + "NNC", + "SCM", + "NNC", + "SCM", + "NNC", + "SLQ", + "NNC", + "NNC", + "NNC", + "SRQ", + "NNX", + "NNC", + "SFN", + "NNC", + "NNC", + "NNU", + "NNU", + "NNC", + "NNC", + "SCM", + "NNU", + "NNC", + "NNC", + "SCM", + "NNU", + "NNC", + "NNC", + "SFN", + "NNC", + "NNC", + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "ADC", + "UNK", + "UNK", + "UNK", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "SRQ", + "VV", + "SCM", + "NNC", + "NNC", + "VV", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "NPR", + "NNC", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "VV", + "SFN", + "NNU", + "NNU", + "NNC", + "UNK", + "UNK", + "NPR", + "NPR", + "NNC", + "NNC", + "NNU", + "NNX", + "NNC", + "UNK", + "NNU", + "NNU", + "UNK", + "NNC", + "NNC", + "ADV", + "NNC", + "VJ", + "SFN", + "NPR", + "NPR", + "NNC", + "VX", + "NNC", + "NNC", + "NNC", + "NNC", + "NNC", + "NNC", + "VV", + "VX", + "SFN", + "NNU", + "NNC", + "NNC", + "NPN", + "NNC", + "NNC", + "NPR", + "DAN", + "NNC", + "NPR", + "NNC", + "SFN", + "VJ", + "NNC", + "NNC", + "SLQ", + "NNC", + "SRQ", + "NPR", + "NNC", + "NPR", + "NNU", + "NNU", + "NNU", + "NPR", + "NPR", + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SRQ", + "NNC", + "NPR", + "SLQ", + "NNC", + "VJ", + "NNC", + "SCM", + "NNC", + "NPR", + "NPR", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "NPR", + "NNC", + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SCM", + "NNU", + "NNU", + "NNU", + "SSY", + "NNU", + "SRQ", + "NNC", + "NNC", + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SCM", + "SLQ", + "NNU", + "SRQ", + "NNU", + "SSY", + "NNU", + "SRQ", + "NNC", + "NNC", + "NNC", + "VV", + "SFN", + "NPR", + "NNC", + "NPR", + "UNK", + "NPR", + "NPR", + "NNC", + "NNX", + "NPR", + "NNC", + "SCM", + "SLQ", + "NNU", + "SRQ", + "SLQ", + "NNU", + "SRQ", + "NNC", + "NNC", + "NNC", + "SCM", + "NNC", + "NPR", + "NPR", + "NPR", + "NNC", + "NNC", + "SFN", + "NNC", + "NPR", + "ADV", + "NPR", + "NNX", + "NNC", + "NNC", + "NNC", + "SFN", + "NPN", + "NNC", + "NPR", + "NNC", + "NNC", + "SCM", + "NNC", + "VX", + "SFN", + "NPR", + "NNC", + "NNX", + "NNC", + "NNC", + "NNC", + "SCM", + "SLQ", + "NNU", + "SRQ", + "NPR", + "NNC", + "NNC", + "NNC", + "VV", + "NPR", + "NNC", + "NNC", + "VV", + "VX", + "SFN", + "SLQ", + "NNU", + "SRQ", + "NNC", + "NPR", + "NNC", + "NNC", + "NNC", + "SCM", + "NNC", + "NPR", + "SLQ", + "NNU", + "SRQ", + "VJ", + "NNC", + "NNC", + "SLQ", + "NNU", + "SRQ", + "VV", + "SFN", + "SLQ", + "NNU", + "SRQ", + "NPR", + "NNC", + "VV", + "VJ", + "NNC", + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SRQ", + "NNC", + "NNC", + "NPR", + "NNC", + "NNC", + "NNC", + "VV", + "VX", + "SCM", + "NPR", + "NNC", + "NNC", + "NNC", + "NNC", + "SFN", + "SLQ", + "NNU", + "SRQ", + "NNC", + "NPR", + "ADC", + "NNC", + "NPR", + "NNC", + "NNX", + "VJ", + "NNC", + "NPN", + "NNC", + "NNC", + "SLQ", + "UNK", + "UNK", + "SRQ", + "ADC", + "NNC", + "SLQ", + "UNK", + "UNK", + "SRQ", + "NPR", + "VV", + "VX", + "SFN", + "NPR", + "NNC", + "VV", + "NNU", + "NPR", + "SLQ", + "UNK", + "UNK", + "UNK", + "SRQ", + "NNC", + "SLQ", + "UNK", + "UNK", + "SRQ", + "NPR", + "NNC", + "SFN", + "NNU", + "NNU", + "NNX", + "NPR", + "NNC", + "NNC", + "NNC", + "VV", + "NNC", + "NPR", + "VV", + "NPR", + "NNC", + "NPR", + "NNC", + "NNC", + "NNC", + "VV", + "SFN", + "DAN", + "NNC", + "NNC", + "NNC", + "NNC", + "NPR", + "NNC", + "VV", + "NNU", + "NNX", + "NNU", + "NNX", + "NPR", + "NNC", + "NPR", + "NPR", + "NNC", + "SLQ", + "UNK", + "UNK", + "SRQ", + "NPR", + "VJ", + "NNC", + "VV", + "NPR", + "VV", + "SFN", + "SLQ", + "NNU", + "SRQ", + "NNC", + "NNU", + "NNC", + "NNC", + "NNC", + "VV", + "NNC", + "NNU", + "NNC", + "SCM", + "NPR", + "NNC", + "NPR", + "NNC", + "NNC", + "NNU", + "NNC", + "SCM", + "NNC", + "NNC", + "NNC", + "NNC", + "VV", + "VX", + "SFN", + "NNC", + "NPR", + "NNC", + "NNC", + "NNC", + "VV", + "NNC", + "NNC", + "VV", + "NNC", + "VJ", + "ADV", + "VJ", + "SFN", + "SLQ", + "NNU", + "SRQ", + "NNC", + "NNC", + "VV", + "NNC", + "NNC", + "NPR", + "SLQ", + "NNC", + "VV", + "NPN", + "NNC", + "VV", + "VX", + "VV", + "NNC", + "VV", + "NNU", + "NNU", + "NPR", + "NNC", + "NNC", + "NPR", + "VV", + "NNC", + "NNX", + "NNC", + "VJ", + "NNC", + "NNC", + "NNC", + "NNX", + "SSY" ], - "requestId": "4e114334-6092-497f-9c00-93cacd700ebf", - "timers": { - "rblJe": 133, - "rliJe": 4 - } + "tokens": [ + "김일성", + "(", + "金", + "日", + "成", + ",", + "1912년", + "4월", + "15일", + "~", + "1994년", + "7월", + "8일", + ")", + "은", + "한국의", + "독립운동가이자", + "조선민주주의", + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의", + "정치인이다", + ".", + "만주", + "조선공산주의청년동맹", + ",", + "조선혁명군", + ",", + "반일인민유격대", + "(", + "그후", + "조선인민혁명군으로", + "개편", + ")", + "등을", + "조직했다", + ".", + "해방", + "후", + "1948년부터", + "1972년까지는", + "조선민주주의인민공화국의", + "총리", + ",", + "1972년부터는", + "인민공화국", + "국가주석이었고", + ",", + "1990년", + "국가주석에", + "재선되었다", + ".", + "원래", + "이름은", + "김성주", + "(", + "金", + "成", + "柱", + "[", + "1", + "]", + "[", + "2", + "]", + "또는", + "金", + "聖", + "柱", + "[", + "3", + "]", + "[", + "4", + "]", + ")", + "였는데", + ",", + "항일", + "투쟁을", + "하면서", + "[", + "3", + "]", + "[", + "4", + "]", + "[", + "5", + "]", + "김일성으로", + "개명", + "[", + "3", + "]", + "[", + "4", + "]", + "[", + "6", + "]", + "하였다", + ".", + "1966년", + "10월", + "당중앙위원회", + "제4기", + "14차전원회의에서", + "조선로동당", + "중앙위원회", + "총비서로", + "선출되었고", + "1970", + "년에", + "진행된", + "제5차전당대회와", + "1980년", + "10월에의", + "6차전당대회에서", + "당중앙위원회", + "총비서로", + "또다시", + "재선", + "되었다", + ".", + "대한민국에서는", + "한국전쟁을", + "발발하게", + "한", + "장본인중", + "한사람으로", + "지목되어", + "최근까지", + "부정적인", + "평가를", + "받아", + "왔다", + ".", + "1994년", + "절대권력의", + "상징이었던", + "그가", + "사망하면서", + "아들", + "김정일에게", + "모든", + "권력을", + "승", + "계하였다", + ".", + "어린", + "시절과", + "가계", + "[", + "편집", + "]", + "김일성의", + "생가", + "김일성은", + "1912년", + "4월", + "15일에", + "평안남도", + "대동군", + "고평면", + "(", + "古", + "平", + "面", + ")", + "하리", + "칠곡", + "(", + "외가가", + "있었던", + "곳으로", + ",", + "오늘날", + "평양", + "만경대", + ")", + "[", + "6", + "]", + "에서", + "아버지", + "김형직", + "(", + "金", + "亨", + "稷", + ",", + "1894년", + "7월", + "10일", + "~", + "1926년", + ")", + "과", + "어머니", + "강반석", + "(", + "康", + "盤", + "石", + ",", + "[", + "7", + "]", + "1892년", + "~", + "1932년", + ")", + "의", + "삼형제의", + "맏아들로", + "태어났다", + ".", + "김일성의", + "전주", + "김씨", + "12대조", + "김계상이", + "전라북도", + "전", + "주에서", + "평양으로", + "이주하였으며", + ",", + "[", + "6", + "]", + "[", + "8", + "]", + "이후", + "농업에", + "종사하였으며", + ",", + "증조부", + "김응우는", + "제너럴", + "셔먼호", + "사건에", + "종군하였다", + ".", + "북조선에서는", + "김응우가", + "제너럴", + "셔먼", + "호", + "격퇴의", + "지휘관이라", + "주장한다", + ".", + "그의", + "생가는", + "만경대라는", + "이름으로", + "보존", + ",", + "관리되고", + "있다", + ".", + "김형직은", + "할아버지", + "이래로", + "지주", + "집안의", + "묘지기였으며", + ",", + "[", + "9", + "]", + "일본", + "제국주의에", + "대항하여", + "항일무장투쟁을", + "벌인", + "한국의", + "독립", + "운동가로", + "알려져", + "있다", + ".", + "[", + "3", + "]", + "어머니", + "강반석은", + "기독교", + "장로교", + "신도였고", + ",", + "외할아버지", + "강돈욱", + "[", + "9", + "]", + "는", + "칠골교회의", + "장로", + "[", + "10", + "]", + "였다", + ".", + "[", + "3", + "]", + "김일성의", + "외가", + "는", + "큰", + "외삼촌", + "강진석", + "(", + "康", + "晋", + "錫", + ")", + "을", + "비롯하여", + "일찍부터", + "항일", + "민족운동과", + "관련을", + "맺고", + "있었으며", + ",", + "강돈욱은", + "평생을", + "교육사업에", + "헌신한", + "기독교인이었다", + ".", + "[", + "9", + "]", + "아버지", + "김형직", + "또는", + "할아버지", + "김보현이", + "기둥이", + "되라", + "는", + "뜻에서", + "그의", + "이름을", + "성주", + "(", + "成", + "柱", + ")", + "또는", + "성주", + "(", + "聖", + "柱", + ")", + "라", + "지었다고", + "한다", + ".", + "어려서", + "부모를", + "따라", + "만주", + "지린성", + "(", + "吉", + "林", + "省", + ")", + "무송", + "(", + "撫", + "松", + ")", + "으로", + "이사했다", + ".", + "1919년", + "일곱", + "살이었던", + "김일성은", + "민족주의", + "계열의", + "독립운동을", + "하던", + "아버지", + "김형직을", + "따라", + "만주로", + "건너가", + "장백현", + "팔도구에서", + "팔도구소", + "학교를", + "다녔다", + ".", + "그", + "뒤", + "자식의", + "장래를", + "생각한", + "김형직의", + "결심에", + "따라", + "1923년", + "초부터", + "1925년", + "초까지", + "평", + "안도", + "대동군", + "용산면", + "하리", + "(", + "下", + "里", + ")", + "칠골에", + "있는", + "외가에서", + "머물면서", + "창덕소학교에", + "다녔다", + ".", + "[", + "9", + "]", + "창덕학교는", + "1907년", + "하리", + "장로교회가", + "중심이", + "되어", + "세운", + "5년제", + "학교인데", + ",", + "김일성의", + "외할아버지인", + "강돈욱도", + "설립자", + "가운데", + "한", + "사람이며", + ",", + "한때", + "창덕학교의", + "교감과", + "교장을", + "맡기도", + "했다", + ".", + "아버지", + "김형직의", + "권고로", + "중국말", + "을", + "배우고", + "중국인소학교에서", + "중어공부를", + "하여", + "중어를", + "자유롭게", + "구사할수", + "있었다", + ".", + "[", + "11", + "]", + "창덕학교로의", + "진학과정에", + "대하여", + "략력에서는", + "아버지", + "김형직이", + "'", + "혁명을", + "하자면", + "자기", + "나라를", + "알아야", + "한다고", + "말한", + "권고를", + "받고", + "1923년", + "3월", + "중국", + "팔도구로부터", + "만경대까지배움의", + "천리길을", + "걸어", + "통학하며", + "외", + "가집이", + "있는", + "칠골", + "창덕학교에서", + "공부하였다는", + "것이다", + "." + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-doc-sentiment.json b/api/src/test/mock-data/response/xxx-doc-sentiment.json index 5e6e84cc3c..c8daadf000 100644 --- a/api/src/test/mock-data/response/xxx-doc-sentiment.json +++ b/api/src/test/mock-data/response/xxx-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "German is not supported by Rosette Sentiment Analyzer", - "requestId": "17bcc28d-06ee-4f13-97bc-0cbc8a8892d3" + "message": "Unsupported language: Korean" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-categories.json b/api/src/test/mock-data/response/xxx-null-categories.json deleted file mode 100644 index fc7fb9f9ba..0000000000 --- a/api/src/test/mock-data/response/xxx-null-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Korean is not supported by Rosette Categorizer", - "requestId": "91544ea7-3081-433d-94f7-6add50121419" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-categories.status b/api/src/test/mock-data/response/xxx-null-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/xxx-null-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-entities.json b/api/src/test/mock-data/response/xxx-null-entities.json deleted file mode 100644 index 8488511d0f..0000000000 --- a/api/src/test/mock-data/response/xxx-null-entities.json +++ /dev/null @@ -1,410 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.03028862178325653, - "count": 4, - "indocChainId": 18, - "mention": "김일성의", - "normalized": "김일성", - "type": "PERSON" - }, - { - "confidence": 0.04124155640602112, - "count": 2, - "indocChainId": 2, - "mention": "한국의", - "normalized": "한국", - "type": "LOCATION" - }, - { - "confidence": 0.015332251787185669, - "count": 2, - "indocChainId": 13, - "mention": "총비서로", - "normalized": "총비서로", - "type": "TITLE" - }, - { - "confidence": 0.031436413526535034, - "count": 2, - "indocChainId": 19, - "mention": "김일성은", - "normalized": "김일성", - "type": "PERSON" - }, - { - "confidence": 0.01727735996246338, - "count": 2, - "indocChainId": 21, - "mention": "대동군", - "normalized": "대동군", - "type": "LOCATION" - }, - { - "confidence": 0.006769031286239624, - "count": 2, - "indocChainId": 25, - "mention": "김형직", - "normalized": "김형직", - "type": "PERSON" - }, - { - "confidence": 0.03579825162887573, - "count": 1, - "indocChainId": 0, - "mention": "김일성", - "normalized": "김일성", - "type": "PERSON" - }, - { - "confidence": 0.031337738037109375, - "count": 1, - "indocChainId": 1, - "mention": "金日成", - "normalized": "金日成", - "type": "PERSON" - }, - { - "confidence": 0.003444194793701172, - "count": 1, - "indocChainId": 3, - "mention": "만주 조선공산주의청년동맹", - "normalized": "만주 조선공산주의청년동맹", - "type": "ORGANIZATION" - }, - { - "confidence": 0.0034142136573791504, - "count": 1, - "indocChainId": 4, - "mention": "조선혁명군", - "normalized": "조선혁명군", - "type": "ORGANIZATION" - }, - { - "confidence": 0.004472017288208008, - "count": 1, - "indocChainId": 5, - "mention": "조선인민혁명군으로", - "normalized": "조선인민혁명군", - "type": "ORGANIZATION" - }, - { - "confidence": 0.022660374641418457, - "count": 1, - "indocChainId": 6, - "mention": "조선민주주의인민공화국의", - "normalized": "조선민주주의인민공화국", - "type": "ORGANIZATION" - }, - { - "confidence": 0.06643146276473999, - "count": 1, - "indocChainId": 7, - "mention": "총리", - "normalized": "총리", - "type": "TITLE" - }, - { - "confidence": 0.0021535754203796387, - "count": 1, - "indocChainId": 8, - "mention": "김성주", - "normalized": "김성주", - "type": "PERSON" - }, - { - "confidence": 0.0018841028213500977, - "count": 1, - "indocChainId": 9, - "mention": "金成柱", - "normalized": "金成柱", - "type": "PERSON" - }, - { - "confidence": 0.00426030158996582, - "count": 1, - "indocChainId": 10, - "mention": "金聖柱", - "normalized": "金聖柱", - "type": "PERSON" - }, - { - "confidence": 0.0010657310485839844, - "count": 1, - "indocChainId": 10, - "mention": "聖柱", - "normalized": "聖柱", - "type": "PERSON" - }, - { - "confidence": 0.005452632904052734, - "count": 1, - "indocChainId": 11, - "mention": "김일성으로", - "normalized": "김일성", - "type": "PERSON" - }, - { - "confidence": 0.007513463497161865, - "count": 1, - "indocChainId": 12, - "mention": "조선로동당 중앙위원회", - "normalized": "조선로동당 중앙위원회", - "type": "ORGANIZATION" - }, - { - "confidence": 0.008457183837890625, - "count": 1, - "indocChainId": 14, - "mention": "당중앙위원회", - "normalized": "당중앙위원회", - "type": "PERSON" - }, - { - "confidence": 0.055203258991241455, - "count": 1, - "indocChainId": 16, - "mention": "대한민국에서는", - "normalized": "대한민국", - "type": "LOCATION" - }, - { - "confidence": 0.014769792556762695, - "count": 1, - "indocChainId": 17, - "mention": "한국전쟁을", - "normalized": "한국전쟁", - "type": "LOCATION" - }, - { - "confidence": 0.0021106600761413574, - "count": 1, - "indocChainId": 20, - "mention": "평안남도", - "normalized": "평안남도", - "type": "LOCATION" - }, - { - "confidence": 0.0016984343528747559, - "count": 1, - "indocChainId": 22, - "mention": "고평면", - "normalized": "고평면", - "type": "LOCATION" - }, - { - "confidence": 0.008638203144073486, - "count": 1, - "indocChainId": 23, - "mention": "평양", - "normalized": "평양", - "type": "LOCATION" - }, - { - "confidence": 0.0007074475288391113, - "count": 1, - "indocChainId": 24, - "mention": "만경대", - "normalized": "만경대", - "type": "ORGANIZATION" - }, - { - "confidence": 0.006536602973937988, - "count": 1, - "indocChainId": 26, - "mention": "金亨稷", - "normalized": "金亨稷", - "type": "PERSON" - }, - { - "confidence": 0.0037943124771118164, - "count": 1, - "indocChainId": 28, - "mention": "전주", - "normalized": "전주", - "type": "LOCATION" - }, - { - "confidence": 0.012494027614593506, - "count": 1, - "indocChainId": 29, - "mention": "김씨", - "normalized": "김", - "type": "PERSON" - }, - { - "confidence": 0.01468271017074585, - "count": 1, - "indocChainId": 30, - "mention": "전라북도", - "normalized": "전라북도", - "type": "ORGANIZATION" - }, - { - "confidence": 0.008353173732757568, - "count": 1, - "indocChainId": 31, - "mention": "평양으로", - "normalized": "평양", - "type": "LOCATION" - }, - { - "confidence": 0.024269163608551025, - "count": 1, - "indocChainId": 32, - "mention": "셔먼", - "normalized": "셔먼", - "type": "PERSON" - }, - { - "confidence": 0.024208784103393555, - "count": 1, - "indocChainId": 33, - "mention": "일본", - "normalized": "일본", - "type": "LOCATION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 35, - "mention": "기독교", - "normalized": "기독교", - "type": "RELIGION" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 36, - "mention": "장로교", - "normalized": "장로교", - "type": "RELIGION" - }, - { - "confidence": 0.01832038164138794, - "count": 1, - "indocChainId": 37, - "mention": "칠골교회의", - "normalized": "칠골교회", - "type": "ORGANIZATION" - }, - { - "confidence": 0.00029218196868896484, - "count": 1, - "indocChainId": 39, - "mention": "강진석", - "normalized": "강진석", - "type": "PERSON" - }, - { - "confidence": 0.007561743259429932, - "count": 1, - "indocChainId": 40, - "mention": "康晋錫", - "normalized": "康晋錫", - "type": "PERSON" - }, - { - "confidence": 0.0018424391746520996, - "count": 1, - "indocChainId": 42, - "mention": "성주", - "normalized": "성주", - "type": "PERSON" - }, - { - "confidence": 0.010734498500823975, - "count": 1, - "indocChainId": 44, - "mention": "지린성", - "normalized": "지린성", - "type": "ORGANIZATION" - }, - { - "confidence": 0.00962001085281372, - "count": 1, - "indocChainId": 45, - "mention": "吉林省", - "normalized": "吉林省", - "type": "LOCATION" - }, - { - "confidence": 0.011630892753601074, - "count": 1, - "indocChainId": 47, - "mention": "만주로", - "normalized": "만주", - "type": "LOCATION" - }, - { - "confidence": 0.014584720134735107, - "count": 1, - "indocChainId": 49, - "mention": "용산면", - "normalized": "용산면", - "type": "LOCATION" - }, - { - "confidence": 0.018989503383636475, - "count": 1, - "indocChainId": 50, - "mention": "칠골에", - "normalized": "칠골", - "type": "LOCATION" - }, - { - "confidence": 0.005848109722137451, - "count": 1, - "indocChainId": 51, - "mention": "창덕학교는", - "normalized": "창덕학교", - "type": "ORGANIZATION" - }, - { - "confidence": 0.006634712219238281, - "count": 1, - "indocChainId": 53, - "mention": "교장을", - "normalized": "교장", - "type": "TITLE" - }, - { - "confidence": 0.004437685012817383, - "count": 1, - "indocChainId": 54, - "mention": "중국말", - "normalized": "중국말", - "type": "LOCATION" - }, - { - "confidence": 0.0015404820442199707, - "count": 1, - "indocChainId": 55, - "mention": "창덕학교로의", - "normalized": "창덕학교", - "type": "ORGANIZATION" - }, - { - "confidence": 0.020579516887664795, - "count": 1, - "indocChainId": 56, - "mention": "중국", - "normalized": "중국", - "type": "LOCATION" - }, - { - "confidence": 0.0038282275199890137, - "count": 1, - "indocChainId": 57, - "mention": "칠골", - "normalized": "칠고", - "type": "PERSON" - } - ], - "requestId": "6df84631-22d5-484a-b044-26929d7d70cd", - "timers": { - "rblJe": 15, - "rexJe": 38, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-entities.status b/api/src/test/mock-data/response/xxx-null-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-null-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-entities_linked.json b/api/src/test/mock-data/response/xxx-null-entities_linked.json deleted file mode 100644 index dd3cfab0dc..0000000000 --- a/api/src/test/mock-data/response/xxx-null-entities_linked.json +++ /dev/null @@ -1,275 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.8489604344623649, - "entityId": "Q41117", - "indocChainId": 0, - "mention": "김일성" - }, - { - "confidence": 0.7067528050136327, - "entityId": "Q41117", - "indocChainId": 1, - "mention": "金日成" - }, - { - "confidence": 0.6840614198452438, - "entityId": "Q884", - "indocChainId": 2, - "mention": "한국" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 3, - "mention": "만주 조선공산주의청년동맹" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 4, - "mention": "조선혁명군" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 5, - "mention": "조선인민혁명군" - }, - { - "confidence": 0.5089752589326131, - "entityId": "Q423", - "indocChainId": 6, - "mention": "조선민주주의인민공화국" - }, - { - "confidence": 0.13860603828715395, - "entityId": "NEW-CLUSTER", - "indocChainId": 8, - "mention": "김성주" - }, - { - "confidence": 0.8331319603922426, - "entityId": "Q41117", - "indocChainId": 9, - "mention": "金成柱" - }, - { - "confidence": 0.2485642196994468, - "entityId": "NEW-CLUSTER", - "indocChainId": 10, - "mention": "金聖柱" - }, - { - "confidence": 0.8176772941578195, - "entityId": "Q41117", - "indocChainId": 11, - "mention": "김일성" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 12, - "mention": "조선로동당 중앙위원회" - }, - { - "confidence": 0.47046726511234904, - "entityId": "NEW-CLUSTER", - "indocChainId": 14, - "mention": "당중앙위원회" - }, - { - "confidence": 0.5327457921949627, - "entityId": "Q884", - "indocChainId": 16, - "mention": "대한민국" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 17, - "mention": "한국전쟁" - }, - { - "confidence": 0.8177571139954269, - "entityId": "Q41117", - "indocChainId": 18, - "mention": "김일성" - }, - { - "confidence": 0.8177030933146751, - "entityId": "Q41117", - "indocChainId": 19, - "mention": "김일성" - }, - { - "confidence": 0.5512206112575233, - "entityId": "NEW-CLUSTER", - "indocChainId": 20, - "mention": "평안남도" - }, - { - "confidence": 0.27147192435349504, - "entityId": "NEW-CLUSTER", - "indocChainId": 21, - "mention": "대동군" - }, - { - "confidence": 0.47722873529626136, - "entityId": "NEW-CLUSTER", - "indocChainId": 22, - "mention": "고평면" - }, - { - "confidence": 0.5777448106600542, - "entityId": "Q18808", - "indocChainId": 23, - "mention": "평양" - }, - { - "confidence": 0.4057503169230009, - "entityId": "Q15244757", - "indocChainId": 24, - "mention": "만경대" - }, - { - "confidence": 0.7876031545345472, - "entityId": "Q489279", - "indocChainId": 25, - "mention": "김형직" - }, - { - "confidence": 0.8343778214073765, - "entityId": "Q489279", - "indocChainId": 26, - "mention": "金亨稷" - }, - { - "confidence": 0.5366624538403322, - "entityId": "Q42140", - "indocChainId": 28, - "mention": "전주" - }, - { - "confidence": 0.03926331392845221, - "entityId": "NEW-CLUSTER", - "indocChainId": 29, - "mention": "김" - }, - { - "confidence": 0.5105738037644278, - "entityId": "Q41157", - "indocChainId": 30, - "mention": "전라북도" - }, - { - "confidence": 0.5838088908707967, - "entityId": "Q18808", - "indocChainId": 31, - "mention": "평양" - }, - { - "confidence": 0.041272329702973974, - "entityId": "NEW-CLUSTER", - "indocChainId": 32, - "mention": "셔먼" - }, - { - "confidence": 0.4542268299993202, - "entityId": "NEW-CLUSTER", - "indocChainId": 33, - "mention": "일본" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 37, - "mention": "칠골교회" - }, - { - "confidence": 0.45826704226055154, - "entityId": "NEW-CLUSTER", - "indocChainId": 39, - "mention": "강진석" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 40, - "mention": "康晋錫" - }, - { - "confidence": 0.24114628980747507, - "entityId": "NEW-CLUSTER", - "indocChainId": 42, - "mention": "성주" - }, - { - "confidence": 0.6479660059521329, - "entityId": "NEW-CLUSTER", - "indocChainId": 44, - "mention": "지린성" - }, - { - "confidence": 0.45290427147832335, - "entityId": "Q45208", - "indocChainId": 45, - "mention": "吉林省" - }, - { - "confidence": 0.07353817177994378, - "entityId": "NEW-CLUSTER", - "indocChainId": 47, - "mention": "만주" - }, - { - "confidence": 0.6646454916440627, - "entityId": "NEW-CLUSTER", - "indocChainId": 49, - "mention": "용산면" - }, - { - "confidence": 0.31371754515329237, - "entityId": "NEW-CLUSTER", - "indocChainId": 50, - "mention": "칠골" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 51, - "mention": "창덕학교" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 54, - "mention": "중국말" - }, - { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 55, - "mention": "창덕학교" - }, - { - "confidence": 0.7540118355486469, - "entityId": "NEW-CLUSTER", - "indocChainId": 56, - "mention": "중국" - }, - { - "confidence": 0.03286639397910264, - "entityId": "NEW-CLUSTER", - "indocChainId": 57, - "mention": "칠고" - } - ], - "requestId": "0203e6c8-aee4-48ca-9279-cfecd0e65ded", - "timers": { - "rblJe": 13, - "res": 5414, - "rexJe": 23, - "rliJe": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-entities_linked.status b/api/src/test/mock-data/response/xxx-null-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-null-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-language.json b/api/src/test/mock-data/response/xxx-null-language.json deleted file mode 100644 index 963d12de70..0000000000 --- a/api/src/test/mock-data/response/xxx-null-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.2576247444801467, - "language": "kor" - }, - { - "confidence": 0.0002490209464562909, - "language": "zho" - }, - { - "confidence": 0.00021850038841830788, - "language": "zho" - }, - { - "confidence": 0.00010487340166964731, - "language": "jpn" - }, - { - "confidence": 0.0, - "language": "ara" - } - ], - "requestId": "7abef8d4-b045-41d3-a3d4-00b5ef1fd6a4", - "timers": { - "rliJe": 5 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-language.status b/api/src/test/mock-data/response/xxx-null-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-null-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-morphology_complete.json b/api/src/test/mock-data/response/xxx-null-morphology_complete.json deleted file mode 100644 index 6849f823bf..0000000000 --- a/api/src/test/mock-data/response/xxx-null-morphology_complete.json +++ /dev/null @@ -1,4320 +0,0 @@ -{ - "compounds": [ - { - "compoundComponents": [ - "독립", - "운동가" - ], - "text": "독립운동가이자" - }, - { - "compoundComponents": [ - "조선", - "민주주의" - ], - "text": "조선민주주의" - }, - { - "compoundComponents": [ - "인민", - "공화국" - ], - "text": "인민공화국의" - }, - { - "compoundComponents": [ - "조선", - "공산주의", - "청년", - "동맹" - ], - "text": "조선공산주의청년동맹" - }, - { - "compoundComponents": [ - "조선", - "혁명군" - ], - "text": "조선혁명군" - }, - { - "compoundComponents": [ - "반일", - "인민", - "유격대" - ], - "text": "반일인민유격대" - }, - { - "compoundComponents": [ - "조선", - "인민", - "혁명군" - ], - "text": "조선인민혁명군으로" - }, - { - "compoundComponents": [ - "조선", - "민주주의", - "인민", - "공화국" - ], - "text": "조선민주주의인민공화국의" - }, - { - "compoundComponents": [ - "인민", - "공화국" - ], - "text": "인민공화국" - }, - { - "compoundComponents": [ - "국가", - "주석" - ], - "text": "국가주석이었고" - }, - { - "compoundComponents": [ - "국가", - "주석" - ], - "text": "국가주석에" - }, - { - "compoundComponents": [ - "당중앙", - "위원회" - ], - "text": "당중앙위원회" - }, - { - "compoundComponents": [ - "중앙", - "위원회" - ], - "text": "중앙위원회" - }, - { - "compoundComponents": [ - "총비", - "서로" - ], - "text": "총비서로" - }, - { - "compoundComponents": [ - "당중앙", - "위원회" - ], - "text": "당중앙위원회" - }, - { - "compoundComponents": [ - "총비", - "서로" - ], - "text": "총비서로" - }, - { - "compoundComponents": [ - "한국", - "전쟁" - ], - "text": "한국전쟁을" - }, - { - "compoundComponents": [ - "장본인", - "중" - ], - "text": "장본인중" - }, - { - "compoundComponents": [ - "절대", - "권력" - ], - "text": "절대권력의" - }, - { - "compoundComponents": [ - "삼형", - "제의" - ], - "text": "삼형제의" - }, - { - "compoundComponents": [ - "셔먼", - "호" - ], - "text": "셔먼호" - }, - { - "compoundComponents": [ - "항일", - "무장", - "투쟁" - ], - "text": "항일무장투쟁을" - }, - { - "compoundComponents": [ - "민족", - "운동" - ], - "text": "민족운동과" - }, - { - "compoundComponents": [ - "교육", - "사업" - ], - "text": "교육사업에" - }, - { - "compoundComponents": [ - "독립", - "운동" - ], - "text": "독립운동을" - }, - { - "compoundComponents": [ - "팔", - "도구" - ], - "text": "팔도구에서" - }, - { - "compoundComponents": [ - "팔도", - "구소" - ], - "text": "팔도구소" - }, - { - "compoundComponents": [ - "창덕", - "소학교" - ], - "text": "창덕소학교에" - }, - { - "compoundComponents": [ - "창덕", - "학교" - ], - "text": "창덕학교는" - }, - { - "compoundComponents": [ - "장로", - "교회" - ], - "text": "장로교회가" - }, - { - "compoundComponents": [ - "창덕", - "학교" - ], - "text": "창덕학교의" - }, - { - "compoundComponents": [ - "중국인", - "소학교" - ], - "text": "중국인소학교에서" - }, - { - "compoundComponents": [ - "중어", - "공부" - ], - "text": "중어공부를" - }, - { - "compoundComponents": [ - "창덕", - "학교" - ], - "text": "창덕학교로의" - }, - { - "compoundComponents": [ - "진학", - "과정" - ], - "text": "진학과정에" - }, - { - "compoundComponents": [ - "팔", - "도구" - ], - "text": "팔도구로부터" - }, - { - "compoundComponents": [ - "창덕", - "학교" - ], - "text": "창덕학교에서" - } - ], - "hanReadings": [], - "lemmas": [ - { - "lemma": "김일성", - "text": "김일성" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "金", - "text": "金" - }, - { - "lemma": "日", - "text": "日" - }, - { - "lemma": "成", - "text": "成" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "년", - "text": "1912년" - }, - { - "lemma": "월", - "text": "4월" - }, - { - "lemma": "일", - "text": "15일" - }, - { - "lemma": "~", - "text": "~" - }, - { - "lemma": "년", - "text": "1994년" - }, - { - "lemma": "월", - "text": "7월" - }, - { - "lemma": "일", - "text": "8일" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "은", - "text": "은" - }, - { - "lemma": "한국", - "text": "한국의" - }, - { - "lemma": "독립운동가", - "text": "독립운동가이자" - }, - { - "lemma": "조선민주주의", - "text": "조선민주주의" - }, - { - "lemma": "인민공화국", - "text": "인민공화국의" - }, - { - "lemma": "정치인", - "text": "정치인이다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "만주", - "text": "만주" - }, - { - "lemma": "조선공산주의청년동맹", - "text": "조선공산주의청년동맹" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "조선혁명군", - "text": "조선혁명군" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "반일인민유격대", - "text": "반일인민유격대" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "그후", - "text": "그후" - }, - { - "lemma": "조선인민혁명군", - "text": "조선인민혁명군으로" - }, - { - "lemma": "개편", - "text": "개편" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "등", - "text": "등을" - }, - { - "lemma": "조직", - "text": "조직했다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "해방", - "text": "해방" - }, - { - "lemma": "후", - "text": "후" - }, - { - "lemma": "년", - "text": "1948년부터" - }, - { - "lemma": "년", - "text": "1972년까지는" - }, - { - "lemma": "조선민주주의인민공화국", - "text": "조선민주주의인민공화국의" - }, - { - "lemma": "총리", - "text": "총리" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "년", - "text": "1972년부터는" - }, - { - "lemma": "인민공화국", - "text": "인민공화국" - }, - { - "lemma": "국가주석", - "text": "국가주석이었고" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "년", - "text": "1990년" - }, - { - "lemma": "국가주석", - "text": "국가주석에" - }, - { - "lemma": "재선", - "text": "재선되었다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "원래", - "text": "원래" - }, - { - "lemma": "이름", - "text": "이름은" - }, - { - "lemma": "김성주", - "text": "김성주" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "金", - "text": "金" - }, - { - "lemma": "成", - "text": "成" - }, - { - "lemma": "柱", - "text": "柱" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "1", - "text": "1" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "또는", - "text": "또는" - }, - { - "lemma": "金", - "text": "金" - }, - { - "lemma": "聖", - "text": "聖" - }, - { - "lemma": "柱", - "text": "柱" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "4", - "text": "4" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "이다", - "text": "였는데" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "항일", - "text": "항일" - }, - { - "lemma": "투쟁", - "text": "투쟁을" - }, - { - "lemma": "하다", - "text": "하면서" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "4", - "text": "4" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "5", - "text": "5" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "김일성", - "text": "김일성으로" - }, - { - "lemma": "개명", - "text": "개명" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "4", - "text": "4" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "6", - "text": "6" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "하다", - "text": "하였다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "년", - "text": "1966년" - }, - { - "lemma": "월", - "text": "10월" - }, - { - "lemma": "당중앙위원회", - "text": "당중앙위원회" - }, - { - "lemma": "제4기", - "text": "제4기" - }, - { - "lemma": "14차전원회의에서", - "text": "14차전원회의에서" - }, - { - "lemma": "조선로동당", - "text": "조선로동당" - }, - { - "lemma": "중앙위원회", - "text": "중앙위원회" - }, - { - "lemma": "총비서로", - "text": "총비서로" - }, - { - "lemma": "선출", - "text": "선출되었고" - }, - { - "lemma": "1970", - "text": "1970" - }, - { - "lemma": "년", - "text": "년에" - }, - { - "lemma": "진행", - "text": "진행된" - }, - { - "lemma": "제5차전당대회와", - "text": "제5차전당대회와" - }, - { - "lemma": "년", - "text": "1980년" - }, - { - "lemma": "월", - "text": "10월에의" - }, - { - "lemma": "6차전당대회에서", - "text": "6차전당대회에서" - }, - { - "lemma": "당중앙위원회", - "text": "당중앙위원회" - }, - { - "lemma": "총비서로", - "text": "총비서로" - }, - { - "lemma": "또다시", - "text": "또다시" - }, - { - "lemma": "재서", - "text": "재선" - }, - { - "lemma": "되", - "text": "되었다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "대한민국", - "text": "대한민국에서는" - }, - { - "lemma": "한국전쟁", - "text": "한국전쟁을" - }, - { - "lemma": "발발", - "text": "발발하게" - }, - { - "lemma": "하", - "text": "한" - }, - { - "lemma": "장본인중", - "text": "장본인중" - }, - { - "lemma": "한사람", - "text": "한사람으로" - }, - { - "lemma": "지목", - "text": "지목되어" - }, - { - "lemma": "최근", - "text": "최근까지" - }, - { - "lemma": "부정", - "text": "부정적인" - }, - { - "lemma": "평가", - "text": "평가를" - }, - { - "lemma": "받다", - "text": "받아" - }, - { - "lemma": "오", - "text": "왔다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "년", - "text": "1994년" - }, - { - "lemma": "절대권력", - "text": "절대권력의" - }, - { - "lemma": "상징", - "text": "상징이었던" - }, - { - "lemma": "그", - "text": "그가" - }, - { - "lemma": "사망", - "text": "사망하면서" - }, - { - "lemma": "아들", - "text": "아들" - }, - { - "lemma": "김정일", - "text": "김정일에게" - }, - { - "lemma": "모든", - "text": "모든" - }, - { - "lemma": "권력", - "text": "권력을" - }, - { - "lemma": "승", - "text": "승" - }, - { - "lemma": "계하", - "text": "계하였다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "어리", - "text": "어린" - }, - { - "lemma": "시절", - "text": "시절과" - }, - { - "lemma": "가계", - "text": "가계" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "편집", - "text": "편집" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "김일성", - "text": "김일성의" - }, - { - "lemma": "생가", - "text": "생가" - }, - { - "lemma": "김일성", - "text": "김일성은" - }, - { - "lemma": "년", - "text": "1912년" - }, - { - "lemma": "월", - "text": "4월" - }, - { - "lemma": "일", - "text": "15일에" - }, - { - "lemma": "평안남도", - "text": "평안남도" - }, - { - "lemma": "대동군", - "text": "대동군" - }, - { - "lemma": "고평면", - "text": "고평면" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "古", - "text": "古" - }, - { - "lemma": "平", - "text": "平" - }, - { - "lemma": "面", - "text": "面" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "하리", - "text": "하리" - }, - { - "lemma": "칠곡", - "text": "칠곡" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "외가", - "text": "외가가" - }, - { - "lemma": "있", - "text": "있었던" - }, - { - "lemma": "곳", - "text": "곳으로" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "오늘날", - "text": "오늘날" - }, - { - "lemma": "평양", - "text": "평양" - }, - { - "lemma": "만경대", - "text": "만경대" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "6", - "text": "6" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "에서", - "text": "에서" - }, - { - "lemma": "아버지", - "text": "아버지" - }, - { - "lemma": "김형직", - "text": "김형직" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "金", - "text": "金" - }, - { - "lemma": "亨", - "text": "亨" - }, - { - "lemma": "稷", - "text": "稷" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "년", - "text": "1894년" - }, - { - "lemma": "월", - "text": "7월" - }, - { - "lemma": "일", - "text": "10일" - }, - { - "lemma": "~", - "text": "~" - }, - { - "lemma": "년", - "text": "1926년" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "과", - "text": "과" - }, - { - "lemma": "어머니", - "text": "어머니" - }, - { - "lemma": "강반석", - "text": "강반석" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "康", - "text": "康" - }, - { - "lemma": "盤", - "text": "盤" - }, - { - "lemma": "石", - "text": "石" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "7", - "text": "7" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "년", - "text": "1892년" - }, - { - "lemma": "~", - "text": "~" - }, - { - "lemma": "년", - "text": "1932년" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "의", - "text": "의" - }, - { - "lemma": "삼형제의", - "text": "삼형제의" - }, - { - "lemma": "맏아", - "text": "맏아들로" - }, - { - "lemma": "태어나다", - "text": "태어났다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "김일성", - "text": "김일성의" - }, - { - "lemma": "전주", - "text": "전주" - }, - { - "lemma": "김", - "text": "김씨" - }, - { - "lemma": "12대조", - "text": "12대조" - }, - { - "lemma": "김계상", - "text": "김계상이" - }, - { - "lemma": "전라북도", - "text": "전라북도" - }, - { - "lemma": "전", - "text": "전" - }, - { - "lemma": "주", - "text": "주에서" - }, - { - "lemma": "평양", - "text": "평양으로" - }, - { - "lemma": "이주", - "text": "이주하였으며" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "6", - "text": "6" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "8", - "text": "8" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "이후", - "text": "이후" - }, - { - "lemma": "농업", - "text": "농업에" - }, - { - "lemma": "종사", - "text": "종사하였으며" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "증조부", - "text": "증조부" - }, - { - "lemma": "김응우", - "text": "김응우는" - }, - { - "lemma": "제너럴", - "text": "제너럴" - }, - { - "lemma": "셔먼호", - "text": "셔먼호" - }, - { - "lemma": "사건", - "text": "사건에" - }, - { - "lemma": "종군", - "text": "종군하였다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "북조선", - "text": "북조선에서는" - }, - { - "lemma": "김응우", - "text": "김응우가" - }, - { - "lemma": "제너럴", - "text": "제너럴" - }, - { - "lemma": "셔먼", - "text": "셔먼" - }, - { - "lemma": "호", - "text": "호" - }, - { - "lemma": "격퇴", - "text": "격퇴의" - }, - { - "lemma": "지휘관", - "text": "지휘관이라" - }, - { - "lemma": "주장", - "text": "주장한다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "그", - "text": "그의" - }, - { - "lemma": "생가", - "text": "생가는" - }, - { - "lemma": "만경대", - "text": "만경대라는" - }, - { - "lemma": "이름", - "text": "이름으로" - }, - { - "lemma": "보존", - "text": "보존" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "관리", - "text": "관리되고" - }, - { - "lemma": "있", - "text": "있다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "김형직", - "text": "김형직은" - }, - { - "lemma": "할아버지", - "text": "할아버지" - }, - { - "lemma": "이래", - "text": "이래로" - }, - { - "lemma": "지주", - "text": "지주" - }, - { - "lemma": "집안", - "text": "집안의" - }, - { - "lemma": "묘지기", - "text": "묘지기였으며" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "9", - "text": "9" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "일본", - "text": "일본" - }, - { - "lemma": "제국주의", - "text": "제국주의에" - }, - { - "lemma": "대항", - "text": "대항하여" - }, - { - "lemma": "항일무장투쟁", - "text": "항일무장투쟁을" - }, - { - "lemma": "벌이다", - "text": "벌인" - }, - { - "lemma": "한국", - "text": "한국의" - }, - { - "lemma": "독립", - "text": "독립" - }, - { - "lemma": "운동가", - "text": "운동가로" - }, - { - "lemma": "알려지다", - "text": "알려져" - }, - { - "lemma": "있", - "text": "있다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "어머니", - "text": "어머니" - }, - { - "lemma": "강반석", - "text": "강반석은" - }, - { - "lemma": "기독교", - "text": "기독교" - }, - { - "lemma": "장로교", - "text": "장로교" - }, - { - "lemma": "신도", - "text": "신도였고" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "외할아버지", - "text": "외할아버지" - }, - { - "lemma": "강돈욱", - "text": "강돈욱" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "9", - "text": "9" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "늘", - "text": "는" - }, - { - "lemma": "칠골교회", - "text": "칠골교회의" - }, - { - "lemma": "장로", - "text": "장로" - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "10", - "text": "10" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "이다", - "text": "였다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "김일성", - "text": "김일성의" - }, - { - "lemma": "외", - "text": "외가" - }, - { - "lemma": "늘다", - "text": "는" - }, - { - "lemma": "크", - "text": "큰" - }, - { - "lemma": "외삼촌", - "text": "외삼촌" - }, - { - "lemma": "강진석", - "text": "강진석" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "康", - "text": "康" - }, - { - "lemma": "晋", - "text": "晋" - }, - { - "lemma": "錫", - "text": "錫" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "을", - "text": "을" - }, - { - "lemma": "비롯", - "text": "비롯하여" - }, - { - "lemma": "일찍부터", - "text": "일찍부터" - }, - { - "lemma": "항일", - "text": "항일" - }, - { - "lemma": "민족운동", - "text": "민족운동과" - }, - { - "lemma": "관련", - "text": "관련을" - }, - { - "lemma": "맺다", - "text": "맺고" - }, - { - "lemma": "있", - "text": "있었으며" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "강돈욱", - "text": "강돈욱은" - }, - { - "lemma": "평생", - "text": "평생을" - }, - { - "lemma": "교육사업", - "text": "교육사업에" - }, - { - "lemma": "헌신", - "text": "헌신한" - }, - { - "lemma": "기독교인", - "text": "기독교인이었다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "9", - "text": "9" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "아버지", - "text": "아버지" - }, - { - "lemma": "김형직", - "text": "김형직" - }, - { - "lemma": "또는", - "text": "또는" - }, - { - "lemma": "할아버지", - "text": "할아버지" - }, - { - "lemma": "김보현", - "text": "김보현이" - }, - { - "lemma": "기둥이", - "text": "기둥이" - }, - { - "lemma": "되", - "text": "되라" - }, - { - "lemma": "늘", - "text": "는" - }, - { - "lemma": "뜻", - "text": "뜻에서" - }, - { - "lemma": "그", - "text": "그의" - }, - { - "lemma": "이름", - "text": "이름을" - }, - { - "lemma": "성주", - "text": "성주" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "成", - "text": "成" - }, - { - "lemma": "柱", - "text": "柱" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "또는", - "text": "또는" - }, - { - "lemma": "성주", - "text": "성주" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "聖", - "text": "聖" - }, - { - "lemma": "柱", - "text": "柱" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "라", - "text": "라" - }, - { - "lemma": "짓다", - "text": "지었다고" - }, - { - "lemma": "하", - "text": "한다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "어려서", - "text": "어려서" - }, - { - "lemma": "부모", - "text": "부모를" - }, - { - "lemma": "따르다", - "text": "따라" - }, - { - "lemma": "주", - "text": "만주" - }, - { - "lemma": "지린성", - "text": "지린성" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "吉", - "text": "吉" - }, - { - "lemma": "林", - "text": "林" - }, - { - "lemma": "省", - "text": "省" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "무송", - "text": "무송" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "撫", - "text": "撫" - }, - { - "lemma": "松", - "text": "松" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "으로", - "text": "으로" - }, - { - "lemma": "이사", - "text": "이사했다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "년", - "text": "1919년" - }, - { - "lemma": "일곱", - "text": "일곱" - }, - { - "lemma": "살", - "text": "살이었던" - }, - { - "lemma": "김일성", - "text": "김일성은" - }, - { - "lemma": "민족주의", - "text": "민족주의" - }, - { - "lemma": "계열", - "text": "계열의" - }, - { - "lemma": "독립운동", - "text": "독립운동을" - }, - { - "lemma": "하다", - "text": "하던" - }, - { - "lemma": "아버지", - "text": "아버지" - }, - { - "lemma": "김형직", - "text": "김형직을" - }, - { - "lemma": "따르다", - "text": "따라" - }, - { - "lemma": "만주", - "text": "만주로" - }, - { - "lemma": "건너", - "text": "건너가" - }, - { - "lemma": "장백현", - "text": "장백현" - }, - { - "lemma": "팔도구", - "text": "팔도구에서" - }, - { - "lemma": "팔도구소", - "text": "팔도구소" - }, - { - "lemma": "학교", - "text": "학교를" - }, - { - "lemma": "다니다", - "text": "다녔다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "그", - "text": "그" - }, - { - "lemma": "뒤", - "text": "뒤" - }, - { - "lemma": "자식", - "text": "자식의" - }, - { - "lemma": "장래", - "text": "장래를" - }, - { - "lemma": "생각", - "text": "생각한" - }, - { - "lemma": "김형직", - "text": "김형직의" - }, - { - "lemma": "결심", - "text": "결심에" - }, - { - "lemma": "따르다", - "text": "따라" - }, - { - "lemma": "년", - "text": "1923년" - }, - { - "lemma": "초", - "text": "초부터" - }, - { - "lemma": "년", - "text": "1925년" - }, - { - "lemma": "초", - "text": "초까지" - }, - { - "lemma": "평", - "text": "평" - }, - { - "lemma": "안", - "text": "안도" - }, - { - "lemma": "대동군", - "text": "대동군" - }, - { - "lemma": "용산면", - "text": "용산면" - }, - { - "lemma": "하리", - "text": "하리" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "下", - "text": "下" - }, - { - "lemma": "里", - "text": "里" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "칠골", - "text": "칠골에" - }, - { - "lemma": "있", - "text": "있는" - }, - { - "lemma": "외가", - "text": "외가에서" - }, - { - "lemma": "머물다", - "text": "머물면서" - }, - { - "lemma": "창덕소학교", - "text": "창덕소학교에" - }, - { - "lemma": "다니다", - "text": "다녔다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "9", - "text": "9" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "창덕학교", - "text": "창덕학교는" - }, - { - "lemma": "년", - "text": "1907년" - }, - { - "lemma": "하리", - "text": "하리" - }, - { - "lemma": "장로교회", - "text": "장로교회가" - }, - { - "lemma": "중심", - "text": "중심이" - }, - { - "lemma": "되다", - "text": "되어" - }, - { - "lemma": "세운", - "text": "세운" - }, - { - "lemma": "년제", - "text": "5년제" - }, - { - "lemma": "학교", - "text": "학교인데" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "김일성", - "text": "김일성의" - }, - { - "lemma": "외할아버지", - "text": "외할아버지인" - }, - { - "lemma": "강돈욱", - "text": "강돈욱도" - }, - { - "lemma": "설립자", - "text": "설립자" - }, - { - "lemma": "가운데", - "text": "가운데" - }, - { - "lemma": "한", - "text": "한" - }, - { - "lemma": "사람", - "text": "사람이며" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "한때", - "text": "한때" - }, - { - "lemma": "창덕학교", - "text": "창덕학교의" - }, - { - "lemma": "교감", - "text": "교감과" - }, - { - "lemma": "교장", - "text": "교장을" - }, - { - "lemma": "맡다", - "text": "맡기도" - }, - { - "lemma": "하", - "text": "했다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "아버지", - "text": "아버지" - }, - { - "lemma": "김형직", - "text": "김형직의" - }, - { - "lemma": "권고", - "text": "권고로" - }, - { - "lemma": "중국말", - "text": "중국말" - }, - { - "lemma": "을", - "text": "을" - }, - { - "lemma": "배우다", - "text": "배우고" - }, - { - "lemma": "중국인소학교", - "text": "중국인소학교에서" - }, - { - "lemma": "중어공부", - "text": "중어공부를" - }, - { - "lemma": "하다", - "text": "하여" - }, - { - "lemma": "중어", - "text": "중어를" - }, - { - "lemma": "자유롭", - "text": "자유롭게" - }, - { - "lemma": "구사할수", - "text": "구사할수" - }, - { - "lemma": "있", - "text": "있었다" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "[", - "text": "[" - }, - { - "lemma": "11", - "text": "11" - }, - { - "lemma": "]", - "text": "]" - }, - { - "lemma": "창덕학교", - "text": "창덕학교로의" - }, - { - "lemma": "진학과정", - "text": "진학과정에" - }, - { - "lemma": "대하다", - "text": "대하여" - }, - { - "lemma": "략력", - "text": "략력에서는" - }, - { - "lemma": "아버지", - "text": "아버지" - }, - { - "lemma": "김형직", - "text": "김형직이" - }, - { - "lemma": "'", - "text": "'" - }, - { - "lemma": "혁명", - "text": "혁명을" - }, - { - "lemma": "하다", - "text": "하자면" - }, - { - "lemma": "자기", - "text": "자기" - }, - { - "lemma": "나라", - "text": "나라를" - }, - { - "lemma": "알다", - "text": "알아야" - }, - { - "lemma": "하", - "text": "한다고" - }, - { - "lemma": "말하다", - "text": "말한" - }, - { - "lemma": "권고", - "text": "권고를" - }, - { - "lemma": "받다", - "text": "받고" - }, - { - "lemma": "년", - "text": "1923년" - }, - { - "lemma": "월", - "text": "3월" - }, - { - "lemma": "중국", - "text": "중국" - }, - { - "lemma": "팔도구", - "text": "팔도구로부터" - }, - { - "lemma": "만경대까지배움", - "text": "만경대까지배움의" - }, - { - "lemma": "천리길", - "text": "천리길을" - }, - { - "lemma": "걷다", - "text": "걸어" - }, - { - "lemma": "통학", - "text": "통학하며" - }, - { - "lemma": "외", - "text": "외" - }, - { - "lemma": "가집", - "text": "가집이" - }, - { - "lemma": "있", - "text": "있는" - }, - { - "lemma": "칠고", - "text": "칠골" - }, - { - "lemma": "창덕학교", - "text": "창덕학교에서" - }, - { - "lemma": "공부", - "text": "공부하였다는" - }, - { - "lemma": "것", - "text": "것이다" - }, - { - "lemma": ".", - "text": "." - } - ], - "posTags": [ - { - "pos": "NPR", - "text": "김일성" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "金" - }, - { - "pos": "UNK", - "text": "日" - }, - { - "pos": "UNK", - "text": "成" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNU", - "text": "1912년" - }, - { - "pos": "NNU", - "text": "4월" - }, - { - "pos": "NNU", - "text": "15일" - }, - { - "pos": "SSY", - "text": "~" - }, - { - "pos": "NNU", - "text": "1994년" - }, - { - "pos": "NNU", - "text": "7월" - }, - { - "pos": "NNU", - "text": "8일" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NPR", - "text": "은" - }, - { - "pos": "NPR", - "text": "한국의" - }, - { - "pos": "NNC", - "text": "독립운동가이자" - }, - { - "pos": "NNC", - "text": "조선민주주의" - }, - { - "pos": "NNC", - "text": "인민공화국의" - }, - { - "pos": "NPR", - "text": "정치인이다" - }, - { - "pos": "SSY", - "text": "." - }, - { - "pos": "NPR", - "text": "만주" - }, - { - "pos": "NNC", - "text": "조선공산주의청년동맹" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "조선혁명군" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "반일인민유격대" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "NNC", - "text": "그후" - }, - { - "pos": "NNC", - "text": "조선인민혁명군으로" - }, - { - "pos": "NNC", - "text": "개편" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NNX", - "text": "등을" - }, - { - "pos": "NNC", - "text": "조직했다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNC", - "text": "해방" - }, - { - "pos": "NNC", - "text": "후" - }, - { - "pos": "NNU", - "text": "1948년부터" - }, - { - "pos": "NNU", - "text": "1972년까지는" - }, - { - "pos": "NNC", - "text": "조선민주주의인민공화국의" - }, - { - "pos": "NNC", - "text": "총리" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNU", - "text": "1972년부터는" - }, - { - "pos": "NNC", - "text": "인민공화국" - }, - { - "pos": "NNC", - "text": "국가주석이었고" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNU", - "text": "1990년" - }, - { - "pos": "NNC", - "text": "국가주석에" - }, - { - "pos": "NNC", - "text": "재선되었다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNC", - "text": "원래" - }, - { - "pos": "NNC", - "text": "이름은" - }, - { - "pos": "NPR", - "text": "김성주" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "金" - }, - { - "pos": "UNK", - "text": "成" - }, - { - "pos": "UNK", - "text": "柱" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "1" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "2" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "ADC", - "text": "또는" - }, - { - "pos": "UNK", - "text": "金" - }, - { - "pos": "UNK", - "text": "聖" - }, - { - "pos": "UNK", - "text": "柱" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "3" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "4" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "VV", - "text": "였는데" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "항일" - }, - { - "pos": "NNC", - "text": "투쟁을" - }, - { - "pos": "VV", - "text": "하면서" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "3" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "4" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "5" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NPR", - "text": "김일성으로" - }, - { - "pos": "NNC", - "text": "개명" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "3" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "4" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "6" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "VV", - "text": "하였다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNU", - "text": "1966년" - }, - { - "pos": "NNU", - "text": "10월" - }, - { - "pos": "NNC", - "text": "당중앙위원회" - }, - { - "pos": "UNK", - "text": "제4기" - }, - { - "pos": "UNK", - "text": "14차전원회의에서" - }, - { - "pos": "NPR", - "text": "조선로동당" - }, - { - "pos": "NPR", - "text": "중앙위원회" - }, - { - "pos": "NNC", - "text": "총비서로" - }, - { - "pos": "NNC", - "text": "선출되었고" - }, - { - "pos": "NNU", - "text": "1970" - }, - { - "pos": "NNX", - "text": "년에" - }, - { - "pos": "NNC", - "text": "진행된" - }, - { - "pos": "UNK", - "text": "제5차전당대회와" - }, - { - "pos": "NNU", - "text": "1980년" - }, - { - "pos": "NNU", - "text": "10월에의" - }, - { - "pos": "UNK", - "text": "6차전당대회에서" - }, - { - "pos": "NNC", - "text": "당중앙위원회" - }, - { - "pos": "NNC", - "text": "총비서로" - }, - { - "pos": "ADV", - "text": "또다시" - }, - { - "pos": "NNC", - "text": "재선" - }, - { - "pos": "VJ", - "text": "되었다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NPR", - "text": "대한민국에서는" - }, - { - "pos": "NPR", - "text": "한국전쟁을" - }, - { - "pos": "NNC", - "text": "발발하게" - }, - { - "pos": "VX", - "text": "한" - }, - { - "pos": "NNC", - "text": "장본인중" - }, - { - "pos": "NNC", - "text": "한사람으로" - }, - { - "pos": "NNC", - "text": "지목되어" - }, - { - "pos": "NNC", - "text": "최근까지" - }, - { - "pos": "NNC", - "text": "부정적인" - }, - { - "pos": "NNC", - "text": "평가를" - }, - { - "pos": "VV", - "text": "받아" - }, - { - "pos": "VX", - "text": "왔다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNU", - "text": "1994년" - }, - { - "pos": "NNC", - "text": "절대권력의" - }, - { - "pos": "NNC", - "text": "상징이었던" - }, - { - "pos": "NPN", - "text": "그가" - }, - { - "pos": "NNC", - "text": "사망하면서" - }, - { - "pos": "NNC", - "text": "아들" - }, - { - "pos": "NPR", - "text": "김정일에게" - }, - { - "pos": "DAN", - "text": "모든" - }, - { - "pos": "NNC", - "text": "권력을" - }, - { - "pos": "NPR", - "text": "승" - }, - { - "pos": "NNC", - "text": "계하였다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "VJ", - "text": "어린" - }, - { - "pos": "NNC", - "text": "시절과" - }, - { - "pos": "NNC", - "text": "가계" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNC", - "text": "편집" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NPR", - "text": "김일성의" - }, - { - "pos": "NNC", - "text": "생가" - }, - { - "pos": "NPR", - "text": "김일성은" - }, - { - "pos": "NNU", - "text": "1912년" - }, - { - "pos": "NNU", - "text": "4월" - }, - { - "pos": "NNU", - "text": "15일에" - }, - { - "pos": "NPR", - "text": "평안남도" - }, - { - "pos": "NPR", - "text": "대동군" - }, - { - "pos": "NPR", - "text": "고평면" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "古" - }, - { - "pos": "UNK", - "text": "平" - }, - { - "pos": "UNK", - "text": "面" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NNC", - "text": "하리" - }, - { - "pos": "NPR", - "text": "칠곡" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "NNC", - "text": "외가가" - }, - { - "pos": "VJ", - "text": "있었던" - }, - { - "pos": "NNC", - "text": "곳으로" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "오늘날" - }, - { - "pos": "NPR", - "text": "평양" - }, - { - "pos": "NPR", - "text": "만경대" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "6" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NPR", - "text": "에서" - }, - { - "pos": "NNC", - "text": "아버지" - }, - { - "pos": "NPR", - "text": "김형직" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "金" - }, - { - "pos": "UNK", - "text": "亨" - }, - { - "pos": "UNK", - "text": "稷" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNU", - "text": "1894년" - }, - { - "pos": "NNU", - "text": "7월" - }, - { - "pos": "NNU", - "text": "10일" - }, - { - "pos": "SSY", - "text": "~" - }, - { - "pos": "NNU", - "text": "1926년" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NNC", - "text": "과" - }, - { - "pos": "NNC", - "text": "어머니" - }, - { - "pos": "NPR", - "text": "강반석" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "康" - }, - { - "pos": "UNK", - "text": "盤" - }, - { - "pos": "UNK", - "text": "石" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "7" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NNU", - "text": "1892년" - }, - { - "pos": "SSY", - "text": "~" - }, - { - "pos": "NNU", - "text": "1932년" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NNC", - "text": "의" - }, - { - "pos": "NNC", - "text": "삼형제의" - }, - { - "pos": "NNC", - "text": "맏아들로" - }, - { - "pos": "VV", - "text": "태어났다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NPR", - "text": "김일성의" - }, - { - "pos": "NNC", - "text": "전주" - }, - { - "pos": "NPR", - "text": "김씨" - }, - { - "pos": "UNK", - "text": "12대조" - }, - { - "pos": "NPR", - "text": "김계상이" - }, - { - "pos": "NPR", - "text": "전라북도" - }, - { - "pos": "NNC", - "text": "전" - }, - { - "pos": "NNX", - "text": "주에서" - }, - { - "pos": "NPR", - "text": "평양으로" - }, - { - "pos": "NNC", - "text": "이주하였으며" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "6" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "8" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NNC", - "text": "이후" - }, - { - "pos": "NNC", - "text": "농업에" - }, - { - "pos": "NNC", - "text": "종사하였으며" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "증조부" - }, - { - "pos": "NPR", - "text": "김응우는" - }, - { - "pos": "NPR", - "text": "제너럴" - }, - { - "pos": "NPR", - "text": "셔먼호" - }, - { - "pos": "NNC", - "text": "사건에" - }, - { - "pos": "NNC", - "text": "종군하였다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNC", - "text": "북조선에서는" - }, - { - "pos": "NPR", - "text": "김응우가" - }, - { - "pos": "ADV", - "text": "제너럴" - }, - { - "pos": "NPR", - "text": "셔먼" - }, - { - "pos": "NNX", - "text": "호" - }, - { - "pos": "NNC", - "text": "격퇴의" - }, - { - "pos": "NNC", - "text": "지휘관이라" - }, - { - "pos": "NNC", - "text": "주장한다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NPN", - "text": "그의" - }, - { - "pos": "NNC", - "text": "생가는" - }, - { - "pos": "NPR", - "text": "만경대라는" - }, - { - "pos": "NNC", - "text": "이름으로" - }, - { - "pos": "NNC", - "text": "보존" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "관리되고" - }, - { - "pos": "VX", - "text": "있다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NPR", - "text": "김형직은" - }, - { - "pos": "NNC", - "text": "할아버지" - }, - { - "pos": "NNX", - "text": "이래로" - }, - { - "pos": "NNC", - "text": "지주" - }, - { - "pos": "NNC", - "text": "집안의" - }, - { - "pos": "NNC", - "text": "묘지기였으며" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "9" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NPR", - "text": "일본" - }, - { - "pos": "NNC", - "text": "제국주의에" - }, - { - "pos": "NNC", - "text": "대항하여" - }, - { - "pos": "NNC", - "text": "항일무장투쟁을" - }, - { - "pos": "VV", - "text": "벌인" - }, - { - "pos": "NPR", - "text": "한국의" - }, - { - "pos": "NNC", - "text": "독립" - }, - { - "pos": "NNC", - "text": "운동가로" - }, - { - "pos": "VV", - "text": "알려져" - }, - { - "pos": "VX", - "text": "있다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "3" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NNC", - "text": "어머니" - }, - { - "pos": "NPR", - "text": "강반석은" - }, - { - "pos": "NNC", - "text": "기독교" - }, - { - "pos": "NNC", - "text": "장로교" - }, - { - "pos": "NNC", - "text": "신도였고" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "외할아버지" - }, - { - "pos": "NPR", - "text": "강돈욱" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "9" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "VJ", - "text": "는" - }, - { - "pos": "NNC", - "text": "칠골교회의" - }, - { - "pos": "NNC", - "text": "장로" - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "10" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "VV", - "text": "였다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "3" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NPR", - "text": "김일성의" - }, - { - "pos": "NNC", - "text": "외가" - }, - { - "pos": "VV", - "text": "는" - }, - { - "pos": "VJ", - "text": "큰" - }, - { - "pos": "NNC", - "text": "외삼촌" - }, - { - "pos": "NPR", - "text": "강진석" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "康" - }, - { - "pos": "UNK", - "text": "晋" - }, - { - "pos": "UNK", - "text": "錫" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NNC", - "text": "을" - }, - { - "pos": "NNC", - "text": "비롯하여" - }, - { - "pos": "NPR", - "text": "일찍부터" - }, - { - "pos": "NNC", - "text": "항일" - }, - { - "pos": "NNC", - "text": "민족운동과" - }, - { - "pos": "NNC", - "text": "관련을" - }, - { - "pos": "VV", - "text": "맺고" - }, - { - "pos": "VX", - "text": "있었으며" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NPR", - "text": "강돈욱은" - }, - { - "pos": "NNC", - "text": "평생을" - }, - { - "pos": "NNC", - "text": "교육사업에" - }, - { - "pos": "NNC", - "text": "헌신한" - }, - { - "pos": "NNC", - "text": "기독교인이었다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "9" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NNC", - "text": "아버지" - }, - { - "pos": "NPR", - "text": "김형직" - }, - { - "pos": "ADC", - "text": "또는" - }, - { - "pos": "NNC", - "text": "할아버지" - }, - { - "pos": "NPR", - "text": "김보현이" - }, - { - "pos": "NNC", - "text": "기둥이" - }, - { - "pos": "NNX", - "text": "되라" - }, - { - "pos": "VJ", - "text": "는" - }, - { - "pos": "NNC", - "text": "뜻에서" - }, - { - "pos": "NPN", - "text": "그의" - }, - { - "pos": "NNC", - "text": "이름을" - }, - { - "pos": "NNC", - "text": "성주" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "成" - }, - { - "pos": "UNK", - "text": "柱" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "ADC", - "text": "또는" - }, - { - "pos": "NNC", - "text": "성주" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "聖" - }, - { - "pos": "UNK", - "text": "柱" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NPR", - "text": "라" - }, - { - "pos": "VV", - "text": "지었다고" - }, - { - "pos": "VX", - "text": "한다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NPR", - "text": "어려서" - }, - { - "pos": "NNC", - "text": "부모를" - }, - { - "pos": "VV", - "text": "따라" - }, - { - "pos": "NNU", - "text": "만주" - }, - { - "pos": "NPR", - "text": "지린성" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "吉" - }, - { - "pos": "UNK", - "text": "林" - }, - { - "pos": "UNK", - "text": "省" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NNC", - "text": "무송" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "撫" - }, - { - "pos": "UNK", - "text": "松" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NPR", - "text": "으로" - }, - { - "pos": "NNC", - "text": "이사했다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNU", - "text": "1919년" - }, - { - "pos": "NNU", - "text": "일곱" - }, - { - "pos": "NNX", - "text": "살이었던" - }, - { - "pos": "NPR", - "text": "김일성은" - }, - { - "pos": "NNC", - "text": "민족주의" - }, - { - "pos": "NNC", - "text": "계열의" - }, - { - "pos": "NNC", - "text": "독립운동을" - }, - { - "pos": "VV", - "text": "하던" - }, - { - "pos": "NNC", - "text": "아버지" - }, - { - "pos": "NPR", - "text": "김형직을" - }, - { - "pos": "VV", - "text": "따라" - }, - { - "pos": "NPR", - "text": "만주로" - }, - { - "pos": "NNC", - "text": "건너가" - }, - { - "pos": "NPR", - "text": "장백현" - }, - { - "pos": "NNC", - "text": "팔도구에서" - }, - { - "pos": "NNC", - "text": "팔도구소" - }, - { - "pos": "NNC", - "text": "학교를" - }, - { - "pos": "VV", - "text": "다녔다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "DAN", - "text": "그" - }, - { - "pos": "NNC", - "text": "뒤" - }, - { - "pos": "NNC", - "text": "자식의" - }, - { - "pos": "NNC", - "text": "장래를" - }, - { - "pos": "NNC", - "text": "생각한" - }, - { - "pos": "NPR", - "text": "김형직의" - }, - { - "pos": "NNC", - "text": "결심에" - }, - { - "pos": "VV", - "text": "따라" - }, - { - "pos": "NNU", - "text": "1923년" - }, - { - "pos": "NNX", - "text": "초부터" - }, - { - "pos": "NNU", - "text": "1925년" - }, - { - "pos": "NNX", - "text": "초까지" - }, - { - "pos": "NPR", - "text": "평" - }, - { - "pos": "NNC", - "text": "안도" - }, - { - "pos": "NPR", - "text": "대동군" - }, - { - "pos": "NPR", - "text": "용산면" - }, - { - "pos": "NNC", - "text": "하리" - }, - { - "pos": "SLQ", - "text": "(" - }, - { - "pos": "UNK", - "text": "下" - }, - { - "pos": "UNK", - "text": "里" - }, - { - "pos": "SRQ", - "text": ")" - }, - { - "pos": "NPR", - "text": "칠골에" - }, - { - "pos": "VJ", - "text": "있는" - }, - { - "pos": "NNC", - "text": "외가에서" - }, - { - "pos": "VV", - "text": "머물면서" - }, - { - "pos": "NPR", - "text": "창덕소학교에" - }, - { - "pos": "VV", - "text": "다녔다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "9" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NNC", - "text": "창덕학교는" - }, - { - "pos": "NNU", - "text": "1907년" - }, - { - "pos": "NNC", - "text": "하리" - }, - { - "pos": "NNC", - "text": "장로교회가" - }, - { - "pos": "NNC", - "text": "중심이" - }, - { - "pos": "VV", - "text": "되어" - }, - { - "pos": "NNC", - "text": "세운" - }, - { - "pos": "NNU", - "text": "5년제" - }, - { - "pos": "NNC", - "text": "학교인데" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NPR", - "text": "김일성의" - }, - { - "pos": "NNC", - "text": "외할아버지인" - }, - { - "pos": "NPR", - "text": "강돈욱도" - }, - { - "pos": "NNC", - "text": "설립자" - }, - { - "pos": "NNC", - "text": "가운데" - }, - { - "pos": "NNU", - "text": "한" - }, - { - "pos": "NNC", - "text": "사람이며" - }, - { - "pos": "SCM", - "text": "," - }, - { - "pos": "NNC", - "text": "한때" - }, - { - "pos": "NNC", - "text": "창덕학교의" - }, - { - "pos": "NNC", - "text": "교감과" - }, - { - "pos": "NNC", - "text": "교장을" - }, - { - "pos": "VV", - "text": "맡기도" - }, - { - "pos": "VX", - "text": "했다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "NNC", - "text": "아버지" - }, - { - "pos": "NPR", - "text": "김형직의" - }, - { - "pos": "NNC", - "text": "권고로" - }, - { - "pos": "NNC", - "text": "중국말" - }, - { - "pos": "NNC", - "text": "을" - }, - { - "pos": "VV", - "text": "배우고" - }, - { - "pos": "NNC", - "text": "중국인소학교에서" - }, - { - "pos": "NNC", - "text": "중어공부를" - }, - { - "pos": "VV", - "text": "하여" - }, - { - "pos": "NNC", - "text": "중어를" - }, - { - "pos": "VJ", - "text": "자유롭게" - }, - { - "pos": "ADV", - "text": "구사할수" - }, - { - "pos": "VJ", - "text": "있었다" - }, - { - "pos": "SFN", - "text": "." - }, - { - "pos": "SLQ", - "text": "[" - }, - { - "pos": "NNU", - "text": "11" - }, - { - "pos": "SRQ", - "text": "]" - }, - { - "pos": "NNC", - "text": "창덕학교로의" - }, - { - "pos": "NNC", - "text": "진학과정에" - }, - { - "pos": "VV", - "text": "대하여" - }, - { - "pos": "NNC", - "text": "략력에서는" - }, - { - "pos": "NNC", - "text": "아버지" - }, - { - "pos": "NPR", - "text": "김형직이" - }, - { - "pos": "SLQ", - "text": "'" - }, - { - "pos": "NNC", - "text": "혁명을" - }, - { - "pos": "VV", - "text": "하자면" - }, - { - "pos": "NPN", - "text": "자기" - }, - { - "pos": "NNC", - "text": "나라를" - }, - { - "pos": "VV", - "text": "알아야" - }, - { - "pos": "VX", - "text": "한다고" - }, - { - "pos": "VV", - "text": "말한" - }, - { - "pos": "NNC", - "text": "권고를" - }, - { - "pos": "VV", - "text": "받고" - }, - { - "pos": "NNU", - "text": "1923년" - }, - { - "pos": "NNU", - "text": "3월" - }, - { - "pos": "NPR", - "text": "중국" - }, - { - "pos": "NNC", - "text": "팔도구로부터" - }, - { - "pos": "NNC", - "text": "만경대까지배움의" - }, - { - "pos": "NPR", - "text": "천리길을" - }, - { - "pos": "VV", - "text": "걸어" - }, - { - "pos": "NNC", - "text": "통학하며" - }, - { - "pos": "NNX", - "text": "외" - }, - { - "pos": "NNC", - "text": "가집이" - }, - { - "pos": "VJ", - "text": "있는" - }, - { - "pos": "NNC", - "text": "칠골" - }, - { - "pos": "NNC", - "text": "창덕학교에서" - }, - { - "pos": "NNC", - "text": "공부하였다는" - }, - { - "pos": "NNX", - "text": "것이다" - }, - { - "pos": "SSY", - "text": "." - } - ], - "requestId": "b2fdf104-7ef4-44b4-8dc1-185a89118d73", - "timers": { - "rblJe": 589, - "rliJe": 2 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-morphology_complete.status b/api/src/test/mock-data/response/xxx-null-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-null-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-sentiment.json b/api/src/test/mock-data/response/xxx-null-sentiment.json deleted file mode 100644 index fee2baf530..0000000000 --- a/api/src/test/mock-data/response/xxx-null-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Korean is not supported by Rosette Sentiment Analyzer", - "requestId": "77a97067-d430-4db8-accc-31311d2c2641" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-null-sentiment.status b/api/src/test/mock-data/response/xxx-null-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/xxx-null-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-categories.json b/api/src/test/mock-data/response/xxx-sentence-categories.json deleted file mode 100644 index 8eaadb7f68..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Russian is not supported by Rosette Categorizer", - "requestId": "8832c51d-7619-416c-9b75-88f38b5d7d32" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-categories.status b/api/src/test/mock-data/response/xxx-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-entities.json b/api/src/test/mock-data/response/xxx-sentence-entities.json deleted file mode 100644 index 68150fe2b1..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-entities.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.01676309108734131, - "count": 1, - "indocChainId": 0, - "mention": "Таллинне", - "normalized": "Таллинне", - "type": "LOCATION" - }, - { - "confidence": 0.014180123805999756, - "count": 1, - "indocChainId": 1, - "mention": "Ванкувере", - "normalized": "Ванкувере", - "type": "LOCATION" - }, - { - "confidence": 0.020513594150543213, - "count": 1, - "indocChainId": 2, - "mention": "Олег Овсянников", - "normalized": "Олег Овсянников", - "type": "PERSON" - }, - { - "confidence": 0.0016747713088989258, - "count": 1, - "indocChainId": 3, - "mention": "Сборная России", - "normalized": "Сборная России", - "type": "ORGANIZATION" - }, - { - "confidence": 0.01137775182723999, - "count": 1, - "indocChainId": 4, - "mention": "Ванкувер", - "normalized": "Ванкувер", - "type": "LOCATION" - } - ], - "requestId": "3d554165-486c-4716-aea7-868c316fb883", - "timers": { - "rblJe": 1, - "rexJe": 29, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-entities.status b/api/src/test/mock-data/response/xxx-sentence-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-entities_linked.json b/api/src/test/mock-data/response/xxx-sentence-entities_linked.json deleted file mode 100644 index 4fb7d1054d..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-entities_linked.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.037528832925525175, - "entityId": "NEW-CLUSTER", - "indocChainId": 0, - "mention": "Таллинне" - }, - { - "confidence": 0.03045373436092313, - "entityId": "NEW-CLUSTER", - "indocChainId": 1, - "mention": "Ванкувере" - }, - { - "confidence": 0.5122193352131024, - "entityId": "NEW-CLUSTER", - "indocChainId": 2, - "mention": "Олег Овсянников" - }, - { - "confidence": 0.1287762785119855, - "entityId": "NEW-CLUSTER", - "indocChainId": 3, - "mention": "Сборная России" - }, - { - "confidence": 0.03045373436092313, - "entityId": "NEW-CLUSTER", - "indocChainId": 4, - "mention": "Ванкувер" - } - ], - "requestId": "67c83ddd-463b-481b-b37a-266b034dfffc", - "timers": { - "rblJe": 1, - "res": 501, - "rexJe": 5, - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-entities_linked.status b/api/src/test/mock-data/response/xxx-sentence-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-language.json b/api/src/test/mock-data/response/xxx-sentence-language.json deleted file mode 100644 index e8fbadf5d8..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-language.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 0.04609485438238292, - "language": "rus" - }, - { - "confidence": 0.016306702275895923, - "language": "ukr" - }, - { - "confidence": 0.013060697545012045, - "language": "bul" - }, - { - "confidence": 0.012652033408849128, - "language": "srp" - }, - { - "confidence": 0.009943176391118635, - "language": "mkd" - } - ], - "requestId": "7e7c95a1-0c0a-4558-b520-307e5691e9bd", - "timers": { - "rliJe": 4 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-language.status b/api/src/test/mock-data/response/xxx-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-morphology_complete.json b/api/src/test/mock-data/response/xxx-sentence-morphology_complete.json deleted file mode 100644 index 5562e7934e..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-morphology_complete.json +++ /dev/null @@ -1,421 +0,0 @@ -{ - "compounds": [], - "hanReadings": [], - "lemmas": [ - { - "lemma": "практически", - "text": "Практически" - }, - { - "lemma": "сразу", - "text": "сразу" - }, - { - "lemma": "после", - "text": "после" - }, - { - "lemma": "соревнование", - "text": "соревнований" - }, - { - "lemma": "в", - "text": "в" - }, - { - "lemma": "Таллинне", - "text": "Таллинне" - }, - { - "lemma": "стартовать", - "text": "стартуют" - }, - { - "lemma": "олимпийский", - "text": "Олимпийские" - }, - { - "lemma": "игра", - "text": "игры" - }, - { - "lemma": "в", - "text": "в" - }, - { - "lemma": "Ванкувер", - "text": "Ванкувере" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "однако", - "text": "Однако" - }, - { - "lemma": "Олег", - "text": "Олег" - }, - { - "lemma": "Овсянников", - "text": "Овсянников" - }, - { - "lemma": "уточнять", - "text": "уточнил" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "что", - "text": "что" - }, - { - "lemma": "время", - "text": "времени" - }, - { - "lemma": "и", - "text": "и" - }, - { - "lemma": "на", - "text": "на" - }, - { - "lemma": "отдых", - "text": "отдых" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "и", - "text": "и" - }, - { - "lemma": "на", - "text": "на" - }, - { - "lemma": "акклиматизация", - "text": "акклиматизацию" - }, - { - "lemma": "быть", - "text": "будет" - }, - { - "lemma": "предостаточно", - "text": "предостаточно" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": "сборная", - "text": "Сборная" - }, - { - "lemma": "Россия", - "text": "России" - }, - { - "lemma": "быть", - "text": "будет" - }, - { - "lemma": "вылетать", - "text": "вылетать" - }, - { - "lemma": "несколько", - "text": "несколькими" - }, - { - "lemma": "этап", - "text": "этапами" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "с", - "text": "С" - }, - { - "lemma": "31", - "text": "31" - }, - { - "lemma": "январь", - "text": "января" - }, - { - "lemma": "начинаться", - "text": "начнутся" - }, - { - "lemma": "первый", - "text": "первые" - }, - { - "lemma": "вылет", - "text": "вылеты" - }, - { - "lemma": "в", - "text": "в" - }, - { - "lemma": "Ванкувер", - "text": "Ванкувер" - }, - { - "lemma": "\"", - "text": "\"" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "сообщать", - "text": "сообщил" - }, - { - "lemma": "он", - "text": "он" - }, - { - "lemma": ".", - "text": "." - } - ], - "posTags": [ - { - "pos": "ADV", - "text": "Практически" - }, - { - "pos": "ADV", - "text": "сразу" - }, - { - "pos": "PREP", - "text": "после" - }, - { - "pos": "NOUN", - "text": "соревнований" - }, - { - "pos": "PREP", - "text": "в" - }, - { - "pos": "PROP", - "text": "Таллинне" - }, - { - "pos": "VFIN", - "text": "стартуют" - }, - { - "pos": "ADJ", - "text": "Олимпийские" - }, - { - "pos": "NOUN", - "text": "игры" - }, - { - "pos": "PREP", - "text": "в" - }, - { - "pos": "PROP", - "text": "Ванкувере" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "CONJ", - "text": "Однако" - }, - { - "pos": "PROP", - "text": "Олег" - }, - { - "pos": "PROP", - "text": "Овсянников" - }, - { - "pos": "VFIN", - "text": "уточнил" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONJ", - "text": "что" - }, - { - "pos": "NOUN", - "text": "времени" - }, - { - "pos": "CONJ", - "text": "и" - }, - { - "pos": "PREP", - "text": "на" - }, - { - "pos": "NOUN", - "text": "отдых" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "CONJ", - "text": "и" - }, - { - "pos": "PREP", - "text": "на" - }, - { - "pos": "NOUN", - "text": "акклиматизацию" - }, - { - "pos": "VAUX", - "text": "будет" - }, - { - "pos": "ADV", - "text": "предостаточно" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "NOUN", - "text": "Сборная" - }, - { - "pos": "PROP", - "text": "России" - }, - { - "pos": "VAUX", - "text": "будет" - }, - { - "pos": "VINF", - "text": "вылетать" - }, - { - "pos": "DET", - "text": "несколькими" - }, - { - "pos": "NOUN", - "text": "этапами" - }, - { - "pos": "SENT", - "text": "." - }, - { - "pos": "PREP", - "text": "С" - }, - { - "pos": "DIG", - "text": "31" - }, - { - "pos": "NOUN", - "text": "января" - }, - { - "pos": "VFIN", - "text": "начнутся" - }, - { - "pos": "ADJ", - "text": "первые" - }, - { - "pos": "NOUN", - "text": "вылеты" - }, - { - "pos": "PREP", - "text": "в" - }, - { - "pos": "PROP", - "text": "Ванкувер" - }, - { - "pos": "PUNCT", - "text": "\"" - }, - { - "pos": "CM", - "text": "," - }, - { - "pos": "PUNCT", - "text": "-" - }, - { - "pos": "VFIN", - "text": "сообщил" - }, - { - "pos": "PERS", - "text": "он" - }, - { - "pos": "SENT", - "text": "." - } - ], - "requestId": "3b2dcbb1-6eff-4e74-968b-653c4b9a6289", - "timers": { - "rblJe": 79, - "rliJe": 5 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-morphology_complete.status b/api/src/test/mock-data/response/xxx-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-sentiment.json b/api/src/test/mock-data/response/xxx-sentence-sentiment.json deleted file mode 100644 index 04cb6f1bc2..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Russian is not supported by Rosette Sentiment Analyzer", - "requestId": "4bf73901-20cc-4ff7-a361-8e4ecd2e37bd" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/xxx-sentence-sentiment.status b/api/src/test/mock-data/response/xxx-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/xxx-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-doc-categories.json b/api/src/test/mock-data/response/zho-doc-categories.json index 870ae3f187..113e65e04b 100644 --- a/api/src/test/mock-data/response/zho-doc-categories.json +++ b/api/src/test/mock-data/response/zho-doc-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Chinese is not supported by Rosette Categorizer", - "requestId": "be9e6d61-9b73-4c86-b0be-e94a76f28a8e" + "message": "CHINESE is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-doc-entities.json b/api/src/test/mock-data/response/zho-doc-entities.json index d66a989278..efb2817282 100644 --- a/api/src/test/mock-data/response/zho-doc-entities.json +++ b/api/src/test/mock-data/response/zho-doc-entities.json @@ -1,98 +1,39 @@ { "entities": [ { - "confidence": 0.029630446434020997, - "count": 5, - "indocChainId": 1, - "mention": "联合国", - "normalized": "联合国", - "type": "ORGANIZATION" - }, - { - "confidence": 0.016980469226837158, - "count": 5, - "indocChainId": 6, - "mention": "海地", - "normalized": "海地", - "type": "LOCATION" - }, - { - "confidence": 0.032270610332489014, "count": 2, - "indocChainId": 7, - "mention": "联大", - "normalized": "联大", - "type": "ORGANIZATION" + "indocChainId": 1, + "mention": "胡锦涛", + "normalized": "胡锦涛", + "type": "PERSON" }, { - "confidence": 0.011038780212402344, "count": 1, "indocChainId": 0, - "mention": "新华网", - "normalized": "新华网", - "type": "ORGANIZATION" + "mention": "莫斯科", + "normalized": "莫斯科", + "type": "LOCATION" }, { - "confidence": 0.022758543491363525, "count": 1, "indocChainId": 2, - "mention": "记者", - "normalized": "记者", - "type": "TITLE" - }, - { - "confidence": 0.00045305490493774414, - "count": 1, - "indocChainId": 3, - "mention": "白洁 王湘江", - "normalized": "白洁 王湘江", - "type": "PERSON" - }, - { - "confidence": 0.08852261304855347, - "count": 1, - "indocChainId": 8, - "mention": "纽约", - "normalized": "纽约", + "mention": "俄罗斯", + "normalized": "俄罗斯", "type": "LOCATION" }, { - "confidence": 0.005361199378967285, "count": 1, - "indocChainId": 12, - "mention": "主席", - "normalized": "主席", + "indocChainId": 3, + "mention": "总统", + "normalized": "总统", "type": "TITLE" }, { - "confidence": 0.015633702278137207, "count": 1, - "indocChainId": 13, - "mention": "哈萨克斯坦", - "normalized": "哈萨克斯坦", - "type": "LOCATION" - }, - { - "confidence": 0.010837018489837646, - "count": 1, - "indocChainId": 15, - "mention": "艾季莫娃", - "normalized": "艾季莫娃", + "indocChainId": 4, + "mention": "梅德韦杰夫", + "normalized": "梅德韦杰夫", "type": "PERSON" - }, - { - "confidence": 1.0, - "count": 1, - "indocChainId": 19, - "mention": "http://news.xinhuanet.com/world/2010-01/23/content_12860329.htm", - "normalized": "http://news.xinhuanet.com/world/2010-01/23/content_12860329.htm", - "type": "IDENTIFIER:URL" } - ], - "requestId": "96870360-8add-4767-a808-aaccea4fb39a", - "timers": { - "rblJe": 40, - "rexJe": 80, - "rliJe": 10 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/zho-doc-entities_linked.json b/api/src/test/mock-data/response/zho-doc-entities_linked.json index 0b27dea112..b87ae2e6b1 100644 --- a/api/src/test/mock-data/response/zho-doc-entities_linked.json +++ b/api/src/test/mock-data/response/zho-doc-entities_linked.json @@ -1,59 +1,28 @@ { "entities": [ { - "confidence": 0.4725379856202875, - "entityId": "Q11081577", + "confidence": 0.6620266821092224, + "entityId": "Q649", "indocChainId": 0, - "mention": "新华网" + "mention": "莫斯科" }, { - "confidence": 0.7702512174279228, - "entityId": "Q1065", + "confidence": 0.7797434415502373, + "entityId": "Q15029", "indocChainId": 1, - "mention": "联合国" + "mention": "胡锦涛" }, { - "confidence": 1.0, - "entityId": "NEW-CLUSTER", - "indocChainId": 3, - "mention": "白洁 王湘江" + "confidence": 0.530801632474906, + "entityId": "Q159", + "indocChainId": 2, + "mention": "俄罗斯" }, { - "confidence": 0.7228798023445596, - "entityId": "Q790", - "indocChainId": 6, - "mention": "海地" - }, - { - "confidence": 0.6385152954821051, - "entityId": "Q47423", - "indocChainId": 7, - "mention": "联大" - }, - { - "confidence": 0.8059447327040058, - "entityId": "Q60", - "indocChainId": 8, - "mention": "纽约" - }, - { - "confidence": 0.7124248045099933, - "entityId": "Q232", - "indocChainId": 13, - "mention": "哈萨克斯坦" - }, - { - "confidence": 0.5555564094259866, - "entityId": "Q4059015", - "indocChainId": 15, - "mention": "艾季莫娃" + "confidence": 0.694478090308637, + "entityId": "Q23530", + "indocChainId": 4, + "mention": "梅德韦杰夫" } - ], - "requestId": "5f2d0667-5e70-4378-881b-2a8f408e9a8c", - "timers": { - "rblJe": 18, - "res": 3278, - "rexJe": 11, - "rliJe": 10 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-doc-language.json b/api/src/test/mock-data/response/zho-doc-language.json index 3abc9642da..f6272f4197 100644 --- a/api/src/test/mock-data/response/zho-doc-language.json +++ b/api/src/test/mock-data/response/zho-doc-language.json @@ -1,28 +1,8 @@ { "languageDetections": [ { - "confidence": 0.04065858941640477, + "confidence": 1.0, "language": "zho" - }, - { - "confidence": 0.01644532195896431, - "language": "zho" - }, - { - "confidence": 0.004008360564392355, - "language": "jpn" - }, - { - "confidence": 0.00025639584075720645, - "language": "eng" - }, - { - "confidence": 0.00011789117134142213, - "language": "ita" } - ], - "requestId": "936affd3-4f51-47f1-a2ff-4b7b9b89847d", - "timers": { - "rliJe": 10 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-doc-morphology_complete.json b/api/src/test/mock-data/response/zho-doc-morphology_complete.json index 92a591165b..c33da77f49 100644 --- a/api/src/test/mock-data/response/zho-doc-morphology_complete.json +++ b/api/src/test/mock-data/response/zho-doc-morphology_complete.json @@ -1,2118 +1,452 @@ { - "compounds": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "hanReadings": [ - { - "hanReadings": [ - "wang3" - ], - "text": "网" - }, - { - "hanReadings": [ - "Lian2-he2-guo2" - ], - "text": "联合国" - }, - { - "hanReadings": [ - "yue4" - ], - "text": "月" - }, - { - "hanReadings": [ - "ji4-zhe3" - ], - "text": "记者" - }, - { - "hanReadings": [ - "bai2-jie2" - ], - "text": "白洁" - }, - { - "hanReadings": [ - "wang2" - ], - "text": "王" - }, - { - "hanReadings": [ - "Xiang1-Jiang1" - ], - "text": "湘江" - }, - { - "hanReadings": [ - "di4" - ], - "text": "第" - }, - { - "hanReadings": [ - "jie4" - ], - "text": "届" - }, - { - "hanReadings": [ - "Lian2-he2-guo2" - ], - "text": "联合国" - }, - { - "hanReadings": [ - "da4-hui4" - ], - "text": "大会" - }, - { - "hanReadings": [ - "ri4" - ], - "text": "日" - }, - { - "hanReadings": [ - "yi1-zhi4" - ], - "text": "一致" - }, - { - "hanReadings": [ - "tong1-guo4" - ], - "text": "通过" - }, - { - "hanReadings": [ - "jue2-yi4" - ], - "text": "决议" - }, - { - "hanReadings": [ - "hu1-yu4" - ], - "text": "呼吁" - }, - { - "hanReadings": [ - "ge0" - ], - "text": "个" - }, - { - "hanReadings": [ - "cheng2-yuan2-guo2" - ], - "text": "成员国" - }, - { - "hanReadings": [ - "jin3-kuai4" - ], - "text": "尽快" - }, - { - "hanReadings": [ - "xiang3-ying4" - ], - "text": "响应" - }, - { - "hanReadings": [ - "Lian2-he2-guo2" - ], - "text": "联合国" - }, - { - "hanReadings": [ - "fa1-qi3" - ], - "text": "发起" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "Hai3-di4" - ], - "text": "海地" - }, - { - "hanReadings": [ - "jiu4-yuan2" - ], - "text": "救援" - }, - { - "hanReadings": [ - "jin3-ji2" - ], - "text": "紧急" - }, - { - "hanReadings": [ - "mu4-juan1" - ], - "text": "募捐" - }, - { - "hanReadings": [ - "hu1-yu4" - ], - "text": "呼吁" - }, - { - "hanReadings": [ - "qiang2-diao4" - ], - "text": "强调" - }, - { - "hanReadings": [ - "ge4-guo2" - ], - "text": "各国" - }, - { - "hanReadings": [ - "zhu3-dao3" - ], - "text": "主导" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "jiu4-zai1" - ], - "text": "救灾" - }, - { - "hanReadings": [ - "gong1-zuo4" - ], - "text": "工作" - }, - { - "hanReadings": [ - "yu3-yi3" - ], - "text": "予以" - }, - { - "hanReadings": [ - "zhi1-chi2" - ], - "text": "支持" - }, - { - "hanReadings": [ - "Lian2-Da4" - ], - "text": "联大" - }, - { - "hanReadings": [ - "dang1-tian1" - ], - "text": "当天" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "Niu3-yue1" - ], - "text": "纽约" - }, - { - "hanReadings": [ - "Lian2-he2-guo2" - ], - "text": "联合国" - }, - { - "hanReadings": [ - "zong3-bu4" - ], - "text": "总部" - }, - { - "hanReadings": [ - "jiu4" - ], - "text": "就" - }, - { - "hanReadings": [ - "Hai3-di4" - ], - "text": "海地" - }, - { - "hanReadings": [ - "di4-zhen4" - ], - "text": "地震" - }, - { - "hanReadings": [ - "ju3-xing2" - ], - "text": "举行" - }, - { - "hanReadings": [ - "quan2-ti3" - ], - "text": "全体" - }, - { - "hanReadings": [ - "hui4-yi4" - ], - "text": "会议" - }, - { - "hanReadings": [ - "di4" - ], - "text": "第" - }, - { - "hanReadings": [ - "jie4" - ], - "text": "届" - }, - { - "hanReadings": [ - "Lian2-Da4" - ], - "text": "联大" - }, - { - "hanReadings": [ - "dai4-li3" - ], - "text": "代理" - }, - { - "hanReadings": [ - "zhu3-xi2" - ], - "text": "主席" - }, - { - "hanReadings": [ - "chang2-zhu4" - ], - "text": "常驻" - }, - { - "hanReadings": [ - "Lian2-he2-guo2" - ], - "text": "联合国" - }, - { - "hanReadings": [ - "dai4-biao3" - ], - "text": "代表" - }, - { - "hanReadings": [ - "ai4" - ], - "text": "艾" - }, - { - "hanReadings": [ - "ji4" - ], - "text": "季" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "zhi4-ci2" - ], - "text": "致辞" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "shui4" - ], - "text": "说" - }, - { - "hanReadings": [ - "Hai3-di4" - ], - "text": "海地" - }, - { - "hanReadings": [ - "zai1" - ], - "text": "灾" - }, - { - "hanReadings": [ - "hou4" - ], - "text": "后" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "chang2-qi1" - ], - "text": "长期" - }, - { - "hanReadings": [ - "chong2-jian4" - ], - "text": "重建" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "gong1-zuo4" - ], - "text": "工作" - }, - { - "hanReadings": [ - "xu1-yao4" - ], - "text": "需要" - }, - { - "hanReadings": [ - "guo2-ji4" - ], - "text": "国际" - }, - { - "hanReadings": [ - "she4-hui4" - ], - "text": "社会" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "wei4-lai2" - ], - "text": "未来" - }, - { - "hanReadings": [ - "ji1" - ], - "text": "几" - }, - { - "hanReadings": [ - "ge0" - ], - "text": "个" - }, - { - "hanReadings": [ - "yue4" - ], - "text": "月" - }, - { - "hanReadings": [ - "shen4-zhi4" - ], - "text": "甚至" - }, - { - "hanReadings": [ - "ji1" - ], - "text": "几" - }, - { - "hanReadings": [ - "nian2" - ], - "text": "年" - }, - { - "hanReadings": [ - "nei4" - ], - "text": "内" - }, - { - "hanReadings": [ - "chang2-qi1" - ], - "text": "长期" - }, - { - "hanReadings": [ - "guan1-zhu4" - ], - "text": "关注" - }, - { - "hanReadings": [ - "ta1" - ], - "text": "她" - }, - { - "hanReadings": [ - "shui4" - ], - "text": "说" - }, - { - "hanReadings": [ - "hai3-di3" - ], - "text": "海底" - }, - { - "hanReadings": [ - "di4-zhen4" - ], - "text": "地震" - }, - { - "hanReadings": [ - "hou4" - ], - "text": "后" - }, - { - "hanReadings": [ - "guo2-ji4" - ], - "text": "国际" - }, - { - "hanReadings": [ - "she4-hui4" - ], - "text": "社会" - }, - { - "hanReadings": [ - "li4-ji2" - ], - "text": "立即" - }, - { - "hanReadings": [ - "zuo4-chu1" - ], - "text": "做出" - }, - { - "hanReadings": [ - "fan3-ying4" - ], - "text": "反应" - }, - { - "hanReadings": [ - "dui4" - ], - "text": "对" - }, - { - "hanReadings": [ - "Hai3-di4" - ], - "text": "海地" - }, - { - "hanReadings": [ - "ren2-min2" - ], - "text": "人民" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "zheng4-fu3" - ], - "text": "政府" - }, - { - "hanReadings": [ - "yu3-yi3" - ], - "text": "予以" - }, - { - "hanReadings": [ - "sheng1-yuan2" - ], - "text": "声援" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "zhi1-chi2" - ], - "text": "支持" - }, - { - "hanReadings": [ - "yi3" - ], - "text": "已" - }, - { - "hanReadings": [ - "jiao1-fu4" - ], - "text": "交付" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "ren2-dao4-zhu3-yi4" - ], - "text": "人道主义" - }, - { - "hanReadings": [ - "yuan2-zhu4" - ], - "text": "援助" - }, - { - "hanReadings": [ - "wu4-zi1" - ], - "text": "物资" - }, - { - "hanReadings": [ - "man3-zu2" - ], - "text": "满足" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "Hai3-di4" - ], - "text": "海地" - }, - { - "hanReadings": [ - "ren2-min2" - ], - "text": "人民" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "yi1-xie1" - ], - "text": "一些" - }, - { - "hanReadings": [ - "po4-qie4" - ], - "text": "迫切" - }, - { - "hanReadings": [ - "xu1-qiu2" - ], - "text": "需求" - }, - { - "hanReadings": [ - "dan4" - ], - "text": "但" - }, - { - "hanReadings": [ - "hai2-you3" - ], - "text": "还有" - }, - { - "hanReadings": [ - "xu3-duo1" - ], - "text": "许多" - }, - { - "hanReadings": [ - "gong1-zuo4" - ], - "text": "工作" - }, - { - "hanReadings": [ - "yao1" - ], - "text": "要" - }, - { - "hanReadings": [ - "zuo4" - ], - "text": "做" - } + null, + [ + "yue4" + ], + [ + "de0" + ], + [ + "Mo4-si1-ke1" + ], + null, + [ + "cao3-mu4" + ], + [ + "cong1-long2" + ], + null, + [ + "jing1-qi2" + ], + [ + "piao1-yang2" + ], + null, + [ + "cheng2-xian4" + ], + [ + "chu1" + ], + [ + "nong2-yu4" + ], + [ + "de0" + ], + [ + "jie2-ri4" + ], + [ + "qi4-fen1" + ], + null, + [ + "cong1" + ], + [ + "dang1-di4" + ], + [ + "shi2-jian1" + ], + null, + [ + "kai1-shi3" + ], + null, + [ + "Hu2" + ], + null, + [ + "tong2" + ], + [ + "qi2-ta1" + ], + [ + "guo2-jia1" + ], + [ + "ling3-dao3-ren2" + ], + [ + "xiang1-ji4" + ], + [ + "lai2-dao4" + ], + [ + "Ke4-li3-mu3-lin2-Gong1" + ], + null, + [ + "tong2" + ], + [ + "zai4" + ], + null, + [ + "de0" + ], + [ + "E2-luo2-si1" + ], + [ + "zong3-tong3" + ], + [ + "mei2" + ], + [ + "de2" + ], + [ + "wei2" + ], + null, + [ + "qin1-qie4" + ], + [ + "wo4-shou3" + ], + null, + [ + "sui2-hou4" + ], + null, + [ + "Hu2" + ], + null, + [ + "tong2" + ], + [ + "chu1-xi2" + ], + [ + "qing4-dian3" + ], + [ + "de0" + ], + [ + "qi2-ta1" + ], + [ + "gui4-bin1" + ], + [ + "qian2-wang3" + ], + [ + "gong1" + ], + [ + "chang2" + ], + null, + [ + "zai4" + ], + [ + "gong1" + ], + null, + null, + [ + "jiu4" + ], + [ + "zuo4" + ], + null ], "lemmas": [ - { - "lemma": "新华", - "text": "新华" - }, - { - "lemma": "网", - "text": "网" - }, - { - "lemma": "联合国", - "text": "联合国" - }, - { - "lemma": "1", - "text": "1" - }, - { - "lemma": "月", - "text": "月" - }, - { - "lemma": "22", - "text": "22" - }, - { - "lemma": "日电", - "text": "日电" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "记者", - "text": "记者" - }, - { - "lemma": "白洁", - "text": "白洁" - }, - { - "lemma": "王", - "text": "王" - }, - { - "lemma": "湘江", - "text": "湘江" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "第", - "text": "第" - }, - { - "lemma": "64", - "text": "64" - }, - { - "lemma": "届", - "text": "届" - }, - { - "lemma": "联合国", - "text": "联合国" - }, - { - "lemma": "大会", - "text": "大会" - }, - { - "lemma": "22", - "text": "22" - }, - { - "lemma": "日", - "text": "日" - }, - { - "lemma": "一致", - "text": "一致" - }, - { - "lemma": "通过", - "text": "通过" - }, - { - "lemma": "决议", - "text": "决议" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "呼吁", - "text": "呼吁" - }, - { - "lemma": "192", - "text": "192" - }, - { - "lemma": "个", - "text": "个" - }, - { - "lemma": "成员国", - "text": "成员国" - }, - { - "lemma": "尽快", - "text": "尽快" - }, - { - "lemma": "响应", - "text": "响应" - }, - { - "lemma": "联合国", - "text": "联合国" - }, - { - "lemma": "发起", - "text": "发起" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "海地", - "text": "海地" - }, - { - "lemma": "救援", - "text": "救援" - }, - { - "lemma": "紧急", - "text": "紧急" - }, - { - "lemma": "募捐", - "text": "募捐" - }, - { - "lemma": "呼吁", - "text": "呼吁" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "强调", - "text": "强调" - }, - { - "lemma": "各国", - "text": "各国" - }, - { - "lemma": "应对联合国", - "text": "应对联合国" - }, - { - "lemma": "主导", - "text": "主导" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "救灾", - "text": "救灾" - }, - { - "lemma": "工作", - "text": "工作" - }, - { - "lemma": "予以", - "text": "予以" - }, - { - "lemma": "支持", - "text": "支持" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "联大", - "text": "联大" - }, - { - "lemma": "当天", - "text": "当天" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "纽约", - "text": "纽约" - }, - { - "lemma": "联合国", - "text": "联合国" - }, - { - "lemma": "总部", - "text": "总部" - }, - { - "lemma": "就", - "text": "就" - }, - { - "lemma": "海地", - "text": "海地" - }, - { - "lemma": "地震", - "text": "地震" - }, - { - "lemma": "举行", - "text": "举行" - }, - { - "lemma": "全体", - "text": "全体" - }, - { - "lemma": "会议", - "text": "会议" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "第", - "text": "第" - }, - { - "lemma": "64", - "text": "64" - }, - { - "lemma": "届", - "text": "届" - }, - { - "lemma": "联大", - "text": "联大" - }, - { - "lemma": "代理", - "text": "代理" - }, - { - "lemma": "主席", - "text": "主席" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "哈萨克斯坦", - "text": "哈萨克斯坦" - }, - { - "lemma": "常驻", - "text": "常驻" - }, - { - "lemma": "联合国", - "text": "联合国" - }, - { - "lemma": "代表", - "text": "代表" - }, - { - "lemma": "艾", - "text": "艾" - }, - { - "lemma": "季", - "text": "季" - }, - { - "lemma": "莫娃", - "text": "莫娃" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "致辞", - "text": "致辞" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "说", - "text": "说" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "海地", - "text": "海地" - }, - { - "lemma": "灾", - "text": "灾" - }, - { - "lemma": "后", - "text": "后" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "长期", - "text": "长期" - }, - { - "lemma": "重建", - "text": "重建" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": "工作", - "text": "工作" - }, - { - "lemma": "需要", - "text": "需要" - }, - { - "lemma": "国际", - "text": "国际" - }, - { - "lemma": "社会", - "text": "社会" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "未来", - "text": "未来" - }, - { - "lemma": "几", - "text": "几" - }, - { - "lemma": "个", - "text": "个" - }, - { - "lemma": "月", - "text": "月" - }, - { - "lemma": "甚至", - "text": "甚至" - }, - { - "lemma": "几", - "text": "几" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "内", - "text": "内" - }, - { - "lemma": "长期", - "text": "长期" - }, - { - "lemma": "关注", - "text": "关注" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "她", - "text": "她" - }, - { - "lemma": "说", - "text": "说" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "海底", - "text": "海底" - }, - { - "lemma": "地震", - "text": "地震" - }, - { - "lemma": "后", - "text": "后" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "国际", - "text": "国际" - }, - { - "lemma": "社会", - "text": "社会" - }, - { - "lemma": "立即", - "text": "立即" - }, - { - "lemma": "做出", - "text": "做出" - }, - { - "lemma": "反应", - "text": "反应" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "对", - "text": "对" - }, - { - "lemma": "海地", - "text": "海地" - }, - { - "lemma": "人民", - "text": "人民" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "政府", - "text": "政府" - }, - { - "lemma": "予以", - "text": "予以" - }, - { - "lemma": "声援", - "text": "声援" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "支持", - "text": "支持" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "已", - "text": "已" - }, - { - "lemma": "交付", - "text": "交付" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "人道主义", - "text": "人道主义" - }, - { - "lemma": "援助", - "text": "援助" - }, - { - "lemma": "物资", - "text": "物资" - }, - { - "lemma": "满足", - "text": "满足" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "海地", - "text": "海地" - }, - { - "lemma": "人民", - "text": "人民" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "一些", - "text": "一些" - }, - { - "lemma": "迫切", - "text": "迫切" - }, - { - "lemma": "需求", - "text": "需求" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "但", - "text": "但" - }, - { - "lemma": "还有", - "text": "还有" - }, - { - "lemma": "许多", - "text": "许多" - }, - { - "lemma": "工作", - "text": "工作" - }, - { - "lemma": "要", - "text": "要" - }, - { - "lemma": "做", - "text": "做" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "http", - "text": "http" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "news.xinhuanet.com", - "text": "news.xinhuanet.com" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "world", - "text": "world" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "2010", - "text": "2010" - }, - { - "lemma": "-", - "text": "-" - }, - { - "lemma": "01", - "text": "01" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "23", - "text": "23" - }, - { - "lemma": "/", - "text": "/" - }, - { - "lemma": "content", - "text": "content" - }, - { - "lemma": "_", - "text": "_" - }, - { - "lemma": "12860329", - "text": "12860329" - }, - { - "lemma": ".", - "text": "." - }, - { - "lemma": "htm", - "text": "htm" - }, - { - "lemma": "2010.01.24", - "text": "2010.01.24" - } + "5", + "月", + "的", + "莫斯科", + ",", + "草木", + "葱茏", + ",", + "旌旗", + "飘扬", + ",", + "呈现", + "出", + "浓郁", + "的", + "节日", + "气氛", + "。", + "从", + "当地", + "时间", + "9时", + "开始", + ",", + "胡", + "锦涛", + "同", + "其他", + "国家", + "领导人", + "相继", + "来到", + "克里姆林宫", + ",", + "同", + "在", + "那里迎候", + "的", + "俄罗斯", + "总统", + "梅", + "德", + "韦", + "杰夫", + "亲切", + "握手", + "。", + "随后", + ",", + "胡", + "锦涛", + "同", + "出席", + "庆典", + "的", + "其他", + "贵宾", + "前往", + "红", + "场", + ",", + "在", + "红", + "场观", + "礼台", + "就", + "座", + "。" ], "posTags": [ - { - "pos": "GUESS", - "text": "新华" - }, - { - "pos": "NC", - "text": "网" - }, - { - "pos": "NP", - "text": "联合国" - }, - { - "pos": "GUESS", - "text": "1" - }, - { - "pos": "NC", - "text": "月" - }, - { - "pos": "GUESS", - "text": "22" - }, - { - "pos": "GUESS", - "text": "日电" - }, - { - "pos": "GUESS", - "text": "(" - }, - { - "pos": "NC", - "text": "记者" - }, - { - "pos": "A", - "text": "白洁" - }, - { - "pos": "NC", - "text": "王" - }, - { - "pos": "NP", - "text": "湘江" - }, - { - "pos": "GUESS", - "text": ")" - }, - { - "pos": "W", - "text": "第" - }, - { - "pos": "GUESS", - "text": "64" - }, - { - "pos": "NM", - "text": "届" - }, - { - "pos": "NP", - "text": "联合国" - }, - { - "pos": "NC", - "text": "大会" - }, - { - "pos": "GUESS", - "text": "22" - }, - { - "pos": "NA", - "text": "日" - }, - { - "pos": "A", - "text": "一致" - }, - { - "pos": "PR", - "text": "通过" - }, - { - "pos": "NC", - "text": "决议" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "呼吁" - }, - { - "pos": "GUESS", - "text": "192" - }, - { - "pos": "NM", - "text": "个" - }, - { - "pos": "NC", - "text": "成员国" - }, - { - "pos": "U", - "text": "尽快" - }, - { - "pos": "V", - "text": "响应" - }, - { - "pos": "NP", - "text": "联合国" - }, - { - "pos": "V", - "text": "发起" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NP", - "text": "海地" - }, - { - "pos": "V", - "text": "救援" - }, - { - "pos": "A", - "text": "紧急" - }, - { - "pos": "NC", - "text": "募捐" - }, - { - "pos": "V", - "text": "呼吁" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "强调" - }, - { - "pos": "NC", - "text": "各国" - }, - { - "pos": "GUESS", - "text": "应对联合国" - }, - { - "pos": "A", - "text": "主导" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "V", - "text": "救灾" - }, - { - "pos": "NC", - "text": "工作" - }, - { - "pos": "V", - "text": "予以" - }, - { - "pos": "NC", - "text": "支持" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "联大" - }, - { - "pos": "NC", - "text": "当天" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "NP", - "text": "纽约" - }, - { - "pos": "NP", - "text": "联合国" - }, - { - "pos": "NP", - "text": "总部" - }, - { - "pos": "D", - "text": "就" - }, - { - "pos": "NP", - "text": "海地" - }, - { - "pos": "NC", - "text": "地震" - }, - { - "pos": "V", - "text": "举行" - }, - { - "pos": "A", - "text": "全体" - }, - { - "pos": "NC", - "text": "会议" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "W", - "text": "第" - }, - { - "pos": "GUESS", - "text": "64" - }, - { - "pos": "NM", - "text": "届" - }, - { - "pos": "NC", - "text": "联大" - }, - { - "pos": "A", - "text": "代理" - }, - { - "pos": "NC", - "text": "主席" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "GUESS", - "text": "哈萨克斯坦" - }, - { - "pos": "A", - "text": "常驻" - }, - { - "pos": "NP", - "text": "联合国" - }, - { - "pos": "NC", - "text": "代表" - }, - { - "pos": "NC", - "text": "艾" - }, - { - "pos": "NC", - "text": "季" - }, - { - "pos": "GUESS", - "text": "莫娃" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "V", - "text": "致辞" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "W", - "text": "说" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NP", - "text": "海地" - }, - { - "pos": "W", - "text": "灾" - }, - { - "pos": "NC", - "text": "后" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "长期" - }, - { - "pos": "V", - "text": "重建" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "NC", - "text": "工作" - }, - { - "pos": "NC", - "text": "需要" - }, - { - "pos": "A", - "text": "国际" - }, - { - "pos": "NC", - "text": "社会" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "NC", - "text": "未来" - }, - { - "pos": "D", - "text": "几" - }, - { - "pos": "NM", - "text": "个" - }, - { - "pos": "NC", - "text": "月" - }, - { - "pos": "J", - "text": "甚至" - }, - { - "pos": "D", - "text": "几" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "A", - "text": "内" - }, - { - "pos": "A", - "text": "长期" - }, - { - "pos": "V", - "text": "关注" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NR", - "text": "她" - }, - { - "pos": "W", - "text": "说" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "海底" - }, - { - "pos": "NC", - "text": "地震" - }, - { - "pos": "NC", - "text": "后" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "A", - "text": "国际" - }, - { - "pos": "NC", - "text": "社会" - }, - { - "pos": "D", - "text": "立即" - }, - { - "pos": "V", - "text": "做出" - }, - { - "pos": "NC", - "text": "反应" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "A", - "text": "对" - }, - { - "pos": "NP", - "text": "海地" - }, - { - "pos": "NC", - "text": "人民" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NP", - "text": "政府" - }, - { - "pos": "V", - "text": "予以" - }, - { - "pos": "V", - "text": "声援" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NC", - "text": "支持" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "D", - "text": "已" - }, - { - "pos": "V", - "text": "交付" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "人道主义" - }, - { - "pos": "NC", - "text": "援助" - }, - { - "pos": "NC", - "text": "物资" - }, - { - "pos": "A", - "text": "满足" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "NP", - "text": "海地" - }, - { - "pos": "NC", - "text": "人民" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "一些" - }, - { - "pos": "A", - "text": "迫切" - }, - { - "pos": "NC", - "text": "需求" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "但" - }, - { - "pos": "E", - "text": "还有" - }, - { - "pos": "A", - "text": "许多" - }, - { - "pos": "NC", - "text": "工作" - }, - { - "pos": "W", - "text": "要" - }, - { - "pos": "V", - "text": "做" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "GUESS", - "text": "http" - }, - { - "pos": "GUESS", - "text": ":" - }, - { - "pos": "GUESS", - "text": "/" - }, - { - "pos": "GUESS", - "text": "/" - }, - { - "pos": "GUESS", - "text": "news.xinhuanet.com" - }, - { - "pos": "GUESS", - "text": "/" - }, - { - "pos": "GUESS", - "text": "world" - }, - { - "pos": "GUESS", - "text": "/" - }, - { - "pos": "GUESS", - "text": "2010" - }, - { - "pos": "GUESS", - "text": "-" - }, - { - "pos": "GUESS", - "text": "01" - }, - { - "pos": "GUESS", - "text": "/" - }, - { - "pos": "GUESS", - "text": "23" - }, - { - "pos": "GUESS", - "text": "/" - }, - { - "pos": "GUESS", - "text": "content" - }, - { - "pos": "GUESS", - "text": "_" - }, - { - "pos": "GUESS", - "text": "12860329" - }, - { - "pos": "GUESS", - "text": "." - }, - { - "pos": "GUESS", - "text": "htm" - }, - { - "pos": "GUESS", - "text": "2010.01.24" - } + "GUESS", + "NC", + "OC", + "NP", + "GUESS", + "NC", + "E", + "GUESS", + "NC", + "V", + "GUESS", + "V", + "NM", + "A", + "OC", + "NC", + "NC", + "GUESS", + "W", + "A", + "NC", + "GUESS", + "NC", + "GUESS", + "NC", + "GUESS", + "PR", + "NR", + "NC", + "NC", + "D", + "V", + "NP", + "GUESS", + "PR", + "D", + "GUESS", + "OC", + "NP", + "NC", + "NC", + "W", + "NC", + "GUESS", + "A", + "V", + "GUESS", + "D", + "GUESS", + "NC", + "GUESS", + "PR", + "V", + "NC", + "OC", + "NR", + "NC", + "V", + "W", + "NM", + "GUESS", + "D", + "W", + "GUESS", + "GUESS", + "D", + "NC", + "GUESS" ], - "requestId": "27a6d1e3-e53f-46c7-83cc-53195208c15e", - "timers": { - "rblJe": 226, - "rliJe": 10 - } + "tokens": [ + "5", + "月", + "的", + "莫斯科", + ",", + "草木", + "葱茏", + ",", + "旌旗", + "飘扬", + ",", + "呈现", + "出", + "浓郁", + "的", + "节日", + "气氛", + "。", + "从", + "当地", + "时间", + "9时", + "开始", + ",", + "胡", + "锦涛", + "同", + "其他", + "国家", + "领导人", + "相继", + "来到", + "克里姆林宫", + ",", + "同", + "在", + "那里迎候", + "的", + "俄罗斯", + "总统", + "梅", + "德", + "韦", + "杰夫", + "亲切", + "握手", + "。", + "随后", + ",", + "胡", + "锦涛", + "同", + "出席", + "庆典", + "的", + "其他", + "贵宾", + "前往", + "红", + "场", + ",", + "在", + "红", + "场观", + "礼台", + "就", + "座", + "。" + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-doc-sentiment.json b/api/src/test/mock-data/response/zho-doc-sentiment.json index 7788b4f53c..f013e395af 100644 --- a/api/src/test/mock-data/response/zho-doc-sentiment.json +++ b/api/src/test/mock-data/response/zho-doc-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Chinese is not supported by Rosette Sentiment Analyzer", - "requestId": "11740a19-0684-46c9-90fb-a9039d74acef" + "message": "Unsupported language: Chinese" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-categories.json b/api/src/test/mock-data/response/zho-sentence-categories.json deleted file mode 100644 index 1977d48664..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-categories.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Chinese is not supported by Rosette Categorizer", - "requestId": "a0b2fd85-9542-4b66-a72f-b026b039bb0e" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-categories.status b/api/src/test/mock-data/response/zho-sentence-categories.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-categories.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-entities.json b/api/src/test/mock-data/response/zho-sentence-entities.json deleted file mode 100644 index 7e334ee1f6..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-entities.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.011167824268341064, - "count": 2, - "indocChainId": 1, - "mention": "胡锦涛", - "normalized": "胡锦涛", - "type": "PERSON" - }, - { - "confidence": 0.006879329681396484, - "count": 1, - "indocChainId": 0, - "mention": "莫斯科", - "normalized": "莫斯科", - "type": "LOCATION" - }, - { - "confidence": 0.017731547355651855, - "count": 1, - "indocChainId": 2, - "mention": "俄罗斯", - "normalized": "俄罗斯", - "type": "LOCATION" - }, - { - "confidence": 0.0106315016746521, - "count": 1, - "indocChainId": 3, - "mention": "总统", - "normalized": "总统", - "type": "TITLE" - }, - { - "confidence": 0.0061133503913879395, - "count": 1, - "indocChainId": 4, - "mention": "梅德韦", - "normalized": "梅德韦", - "type": "PERSON" - } - ], - "requestId": "f3a26bb9-ac45-4a30-8d90-f13fb2f1a736", - "timers": { - "rblJe": 5, - "rexJe": 4, - "rliJe": 11 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-entities.status b/api/src/test/mock-data/response/zho-sentence-entities.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-entities.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-entities_linked.json b/api/src/test/mock-data/response/zho-sentence-entities_linked.json deleted file mode 100644 index d81bac91b0..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-entities_linked.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "entities": [ - { - "confidence": 0.8299469495300511, - "entityId": "Q649", - "indocChainId": 0, - "mention": "莫斯科" - }, - { - "confidence": 0.8135346471109421, - "entityId": "Q15029", - "indocChainId": 1, - "mention": "胡锦涛" - }, - { - "confidence": 0.7906449835784752, - "entityId": "Q159", - "indocChainId": 2, - "mention": "俄罗斯" - }, - { - "confidence": 0.9342092498360748, - "entityId": "NEW-CLUSTER", - "indocChainId": 4, - "mention": "梅德韦" - } - ], - "requestId": "e02eebfa-e05e-49b9-b32d-f8284700e97d", - "timers": { - "rblJe": 4, - "res": 136, - "rexJe": 4, - "rliJe": 10 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-entities_linked.status b/api/src/test/mock-data/response/zho-sentence-entities_linked.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-entities_linked.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-language.json b/api/src/test/mock-data/response/zho-sentence-language.json deleted file mode 100644 index 5b5d254ca8..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-language.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "languageDetections": [ - { - "confidence": 1.0, - "language": "zho" - }, - { - "confidence": 6.824907560735675e-36, - "language": "jpn" - } - ], - "requestId": "fb91e2e8-2141-432d-8039-13f847b0f9a8", - "timers": { - "rliJe": 1372 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-language.status b/api/src/test/mock-data/response/zho-sentence-language.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-language.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-morphology_complete.json b/api/src/test/mock-data/response/zho-sentence-morphology_complete.json deleted file mode 100644 index af57134ced..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-morphology_complete.json +++ /dev/null @@ -1,858 +0,0 @@ -{ - "compounds": [], - "hanReadings": [ - { - "hanReadings": [ - "yue4" - ], - "text": "月" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "Mo4-si1-ke1" - ], - "text": "莫斯科" - }, - { - "hanReadings": [ - "cao3-mu4" - ], - "text": "草木" - }, - { - "hanReadings": [ - "cong1-long2" - ], - "text": "葱茏" - }, - { - "hanReadings": [ - "jing1-qi2" - ], - "text": "旌旗" - }, - { - "hanReadings": [ - "piao1-yang2" - ], - "text": "飘扬" - }, - { - "hanReadings": [ - "cheng2-xian4" - ], - "text": "呈现" - }, - { - "hanReadings": [ - "chu1" - ], - "text": "出" - }, - { - "hanReadings": [ - "nong2-yu4" - ], - "text": "浓郁" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "jie2-ri4" - ], - "text": "节日" - }, - { - "hanReadings": [ - "qi4-fen1" - ], - "text": "气氛" - }, - { - "hanReadings": [ - "cong1" - ], - "text": "从" - }, - { - "hanReadings": [ - "dang1-di4" - ], - "text": "当地" - }, - { - "hanReadings": [ - "shi2-jian1" - ], - "text": "时间" - }, - { - "hanReadings": [ - "kai1-shi3" - ], - "text": "开始" - }, - { - "hanReadings": [ - "Hu2" - ], - "text": "胡" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "qi2-ta1" - ], - "text": "其他" - }, - { - "hanReadings": [ - "guo2-jia1" - ], - "text": "国家" - }, - { - "hanReadings": [ - "ling3-dao3-ren2" - ], - "text": "领导人" - }, - { - "hanReadings": [ - "xiang1-ji4" - ], - "text": "相继" - }, - { - "hanReadings": [ - "lai2-dao4" - ], - "text": "来到" - }, - { - "hanReadings": [ - "Ke4-li3-mu3-lin2-Gong1" - ], - "text": "克里姆林宫" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "E2-luo2-si1" - ], - "text": "俄罗斯" - }, - { - "hanReadings": [ - "zong3-tong3" - ], - "text": "总统" - }, - { - "hanReadings": [ - "mei2" - ], - "text": "梅" - }, - { - "hanReadings": [ - "de2" - ], - "text": "德" - }, - { - "hanReadings": [ - "wei2" - ], - "text": "韦" - }, - { - "hanReadings": [ - "qin1-qie4" - ], - "text": "亲切" - }, - { - "hanReadings": [ - "wo4-shou3" - ], - "text": "握手" - }, - { - "hanReadings": [ - "sui2-hou4" - ], - "text": "随后" - }, - { - "hanReadings": [ - "Hu2" - ], - "text": "胡" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "chu1-xi2" - ], - "text": "出席" - }, - { - "hanReadings": [ - "qing4-dian3" - ], - "text": "庆典" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "qi2-ta1" - ], - "text": "其他" - }, - { - "hanReadings": [ - "gui4-bin1" - ], - "text": "贵宾" - }, - { - "hanReadings": [ - "qian2-wang3" - ], - "text": "前往" - }, - { - "hanReadings": [ - "gong1" - ], - "text": "红" - }, - { - "hanReadings": [ - "chang2" - ], - "text": "场" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "gong1" - ], - "text": "红" - }, - { - "hanReadings": [ - "jiu4" - ], - "text": "就" - }, - { - "hanReadings": [ - "zuo4" - ], - "text": "座" - } - ], - "lemmas": [ - { - "lemma": "5", - "text": "5" - }, - { - "lemma": "月", - "text": "月" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "莫斯科", - "text": "莫斯科" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "草木", - "text": "草木" - }, - { - "lemma": "葱茏", - "text": "葱茏" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "旌旗", - "text": "旌旗" - }, - { - "lemma": "飘扬", - "text": "飘扬" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "呈现", - "text": "呈现" - }, - { - "lemma": "出", - "text": "出" - }, - { - "lemma": "浓郁", - "text": "浓郁" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "节日", - "text": "节日" - }, - { - "lemma": "气氛", - "text": "气氛" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "从", - "text": "从" - }, - { - "lemma": "当地", - "text": "当地" - }, - { - "lemma": "时间", - "text": "时间" - }, - { - "lemma": "9时", - "text": "9时" - }, - { - "lemma": "开始", - "text": "开始" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "胡", - "text": "胡" - }, - { - "lemma": "锦涛", - "text": "锦涛" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "其他", - "text": "其他" - }, - { - "lemma": "国家", - "text": "国家" - }, - { - "lemma": "领导人", - "text": "领导人" - }, - { - "lemma": "相继", - "text": "相继" - }, - { - "lemma": "来到", - "text": "来到" - }, - { - "lemma": "克里姆林宫", - "text": "克里姆林宫" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "那里迎候", - "text": "那里迎候" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "俄罗斯", - "text": "俄罗斯" - }, - { - "lemma": "总统", - "text": "总统" - }, - { - "lemma": "梅", - "text": "梅" - }, - { - "lemma": "德", - "text": "德" - }, - { - "lemma": "韦", - "text": "韦" - }, - { - "lemma": "杰夫", - "text": "杰夫" - }, - { - "lemma": "亲切", - "text": "亲切" - }, - { - "lemma": "握手", - "text": "握手" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "随后", - "text": "随后" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "胡", - "text": "胡" - }, - { - "lemma": "锦涛", - "text": "锦涛" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "出席", - "text": "出席" - }, - { - "lemma": "庆典", - "text": "庆典" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "其他", - "text": "其他" - }, - { - "lemma": "贵宾", - "text": "贵宾" - }, - { - "lemma": "前往", - "text": "前往" - }, - { - "lemma": "红", - "text": "红" - }, - { - "lemma": "场", - "text": "场" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "红", - "text": "红" - }, - { - "lemma": "场观", - "text": "场观" - }, - { - "lemma": "礼台", - "text": "礼台" - }, - { - "lemma": "就", - "text": "就" - }, - { - "lemma": "座", - "text": "座" - }, - { - "lemma": "。", - "text": "。" - } - ], - "posTags": [ - { - "pos": "GUESS", - "text": "5" - }, - { - "pos": "NC", - "text": "月" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NP", - "text": "莫斯科" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "草木" - }, - { - "pos": "E", - "text": "葱茏" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "旌旗" - }, - { - "pos": "V", - "text": "飘扬" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "呈现" - }, - { - "pos": "NM", - "text": "出" - }, - { - "pos": "A", - "text": "浓郁" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "节日" - }, - { - "pos": "NC", - "text": "气氛" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "W", - "text": "从" - }, - { - "pos": "A", - "text": "当地" - }, - { - "pos": "NC", - "text": "时间" - }, - { - "pos": "GUESS", - "text": "9时" - }, - { - "pos": "NC", - "text": "开始" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "胡" - }, - { - "pos": "GUESS", - "text": "锦涛" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "NR", - "text": "其他" - }, - { - "pos": "NC", - "text": "国家" - }, - { - "pos": "NC", - "text": "领导人" - }, - { - "pos": "D", - "text": "相继" - }, - { - "pos": "V", - "text": "来到" - }, - { - "pos": "NP", - "text": "克里姆林宫" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "GUESS", - "text": "那里迎候" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NP", - "text": "俄罗斯" - }, - { - "pos": "NC", - "text": "总统" - }, - { - "pos": "NC", - "text": "梅" - }, - { - "pos": "W", - "text": "德" - }, - { - "pos": "NC", - "text": "韦" - }, - { - "pos": "GUESS", - "text": "杰夫" - }, - { - "pos": "A", - "text": "亲切" - }, - { - "pos": "V", - "text": "握手" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "D", - "text": "随后" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "胡" - }, - { - "pos": "GUESS", - "text": "锦涛" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "V", - "text": "出席" - }, - { - "pos": "NC", - "text": "庆典" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NR", - "text": "其他" - }, - { - "pos": "NC", - "text": "贵宾" - }, - { - "pos": "V", - "text": "前往" - }, - { - "pos": "W", - "text": "红" - }, - { - "pos": "NM", - "text": "场" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "W", - "text": "红" - }, - { - "pos": "GUESS", - "text": "场观" - }, - { - "pos": "GUESS", - "text": "礼台" - }, - { - "pos": "D", - "text": "就" - }, - { - "pos": "NC", - "text": "座" - }, - { - "pos": "GUESS", - "text": "。" - } - ], - "requestId": "c88158cf-a99d-47a1-bbc8-440de49fa3fe", - "timers": { - "rblJe": 6, - "rliJe": 11 - } -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-morphology_complete.status b/api/src/test/mock-data/response/zho-sentence-morphology_complete.status deleted file mode 100644 index ae4ee13c08..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-morphology_complete.status +++ /dev/null @@ -1 +0,0 @@ -200 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-sentiment.json b/api/src/test/mock-data/response/zho-sentence-sentiment.json deleted file mode 100644 index 76a01ca15e..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-sentiment.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "code": "unsupportedLanguage", - "message": "Chinese is not supported by Rosette Sentiment Analyzer", - "requestId": "72dede04-32da-4c23-bfb0-60a8c8d2f67c" -} \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-sentence-sentiment.status b/api/src/test/mock-data/response/zho-sentence-sentiment.status deleted file mode 100644 index be6652a2ab..0000000000 --- a/api/src/test/mock-data/response/zho-sentence-sentiment.status +++ /dev/null @@ -1 +0,0 @@ -415 \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-url-categories.json b/api/src/test/mock-data/response/zho-url-categories.json index 48e5c9e093..113e65e04b 100644 --- a/api/src/test/mock-data/response/zho-url-categories.json +++ b/api/src/test/mock-data/response/zho-url-categories.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Chinese is not supported by Rosette Categorizer", - "requestId": "884bfd8f-a753-4615-a0b4-aa952fce6d63" + "message": "CHINESE is not supported by Rosette Categorizer" } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-url-entities.json b/api/src/test/mock-data/response/zho-url-entities.json index 7567b18664..950012cda2 100644 --- a/api/src/test/mock-data/response/zho-url-entities.json +++ b/api/src/test/mock-data/response/zho-url-entities.json @@ -1,220 +1,193 @@ { "entities": [ { - "confidence": 0.01987546682357788, - "count": 10, - "indocChainId": 2, - "mention": "俄", - "normalized": "俄", - "type": "LOCATION" + "count": 5, + "indocChainId": 8, + "mention": "中央", + "normalized": "中央", + "type": "ORGANIZATION" }, { - "confidence": 0.013244820965660943, - "count": 9, - "indocChainId": 17, - "mention": "中", - "normalized": "中", - "type": "LOCATION" + "count": 3, + "indocChainId": 9, + "mention": "深化改革领导小组", + "normalized": "深化改革领导小组", + "type": "ORGANIZATION" }, { - "confidence": 0.03708694662366595, - "count": 7, + "count": 2, "indocChainId": 0, "mention": "习近平", "normalized": "习近平", "type": "PERSON" }, { - "confidence": 0.0640413999557495, - "count": 5, - "indocChainId": 11, - "mention": "普京", - "normalized": "普京", - "type": "PERSON" - }, - { - "confidence": 0.028446480631828308, - "count": 4, - "indocChainId": 9, - "mention": "俄罗斯", - "normalized": "俄罗斯", - "type": "LOCATION" + "count": 2, + "indocChainId": 30, + "mention": "同志", + "normalized": "同志", + "type": "TITLE" }, { - "confidence": 0.014063576857248941, - "count": 3, - "indocChainId": 21, - "mention": "欧亚经济联盟", - "normalized": "欧亚经济联盟", + "count": 1, + "indocChainId": 1, + "mention": "新华社", + "normalized": "新华社", "type": "ORGANIZATION" }, { - "confidence": 0.034951239824295044, - "count": 2, - "indocChainId": 4, - "mention": "莫斯科", - "normalized": "莫斯科", + "count": 1, + "indocChainId": 2, + "mention": "北京", + "normalized": "北京", "type": "LOCATION" }, { - "confidence": 0.03000470995903015, - "count": 2, - "indocChainId": 5, - "mention": "记者", - "normalized": "记者", - "type": "TITLE" + "count": 1, + "indocChainId": 3, + "mention": "中共中央", + "normalized": "中共中央", + "type": "ORGANIZATION" }, { - "confidence": 0.008697807788848877, "count": 1, - "indocChainId": 1, - "mention": "京", - "normalized": "京", - "type": "LOCATION" + "indocChainId": 4, + "mention": "总书记", + "normalized": "总书记", + "type": "TITLE" }, { - "confidence": 0.007232844829559326, "count": 1, - "indocChainId": 3, - "mention": "人民日报", - "normalized": "人民日报", - "type": "ORGANIZATION" + "indocChainId": 5, + "mention": "国家主席", + "normalized": "国家主席", + "type": "TITLE" }, { - "confidence": 0.02314591407775879, "count": 1, "indocChainId": 6, - "mention": "杜尚泽", - "normalized": "杜尚泽", - "type": "PERSON" + "mention": "中央军委", + "normalized": "中央军委", + "type": "ORGANIZATION" }, { - "confidence": 0.00882101058959961, "count": 1, "indocChainId": 7, - "mention": "国家主席", - "normalized": "国家主席", + "mention": "主席", + "normalized": "主席", "type": "TITLE" }, { - "confidence": 0.014860749244689941, "count": 1, "indocChainId": 10, - "mention": "总统", - "normalized": "总统", + "mention": "组长", + "normalized": "组长", "type": "TITLE" }, { - "confidence": 0.027349650859832764, "count": 1, - "indocChainId": 24, - "mention": "中国", - "normalized": "中国", - "type": "LOCATION" + "indocChainId": 13, + "mention": "中共中央政治局", + "normalized": "中共中央政治局", + "type": "ORGANIZATION" }, { - "confidence": 0.015836060047149658, "count": 1, - "indocChainId": 26, - "mention": "亚洲", - "normalized": "亚洲", - "type": "LOCATION" + "indocChainId": 14, + "mention": "常委", + "normalized": "常委", + "type": "TITLE" }, { - "confidence": 0.025710999965667725, "count": 1, - "indocChainId": 27, - "mention": "欧洲", - "normalized": "欧洲", - "type": "LOCATION" + "indocChainId": 17, + "mention": "副组长", + "normalized": "副组长", + "type": "TITLE" }, { - "confidence": 0.01170969009399414, "count": 1, - "indocChainId": 41, - "mention": "主席", - "normalized": "主席", - "type": "TITLE" + "indocChainId": 18, + "mention": "李克强", + "normalized": "李克强", + "type": "PERSON" }, { - "confidence": 0.005235791206359863, "count": 1, - "indocChainId": 47, - "mention": "欧", - "normalized": "欧", - "type": "LOCATION" + "indocChainId": 19, + "mention": "刘云山", + "normalized": "刘云山", + "type": "PERSON" }, { - "confidence": 0.002737879753112793, "count": 1, - "indocChainId": 48, - "mention": "亚", - "normalized": "亚", - "type": "LOCATION" + "indocChainId": 20, + "mention": "张高丽", + "normalized": "张高丽", + "type": "PERSON" }, { - "confidence": 0.0016486644744873047, "count": 1, - "indocChainId": 49, - "mention": "欧亚大陆", - "normalized": "欧亚大陆", - "type": "LOCATION" + "indocChainId": 21, + "mention": "全国人大常委会法工委", + "normalized": "全国人大常委会法工委", + "type": "ORGANIZATION" }, { - "confidence": 0.006211519241333008, "count": 1, - "indocChainId": 50, - "mention": "远东", - "normalized": "远东", - "type": "LOCATION" + "indocChainId": 22, + "mention": "科技部", + "normalized": "科技部", + "type": "ORGANIZATION" }, { - "confidence": 0.01225060224533081, "count": 1, - "indocChainId": 51, - "mention": "上海合作组织", - "normalized": "上海合作组织", + "indocChainId": 23, + "mention": "公安部", + "normalized": "公安部", "type": "ORGANIZATION" }, { - "confidence": 0.05038654804229736, "count": 1, - "indocChainId": 52, - "mention": "二十国集团", - "normalized": "二十国集团", - "type": "ORGANIZATION" + "indocChainId": 24, + "mention": "上海市", + "normalized": "上海市", + "type": "LOCATION" }, { - "confidence": 0.014413714408874512, "count": 1, - "indocChainId": 53, - "mention": "朝鲜半岛", - "normalized": "朝鲜半岛", + "indocChainId": 25, + "mention": "湖北省", + "normalized": "湖北省", "type": "LOCATION" }, { - "confidence": 0.007769942283630371, "count": 1, - "indocChainId": 58, - "mention": "深圳", - "normalized": "深圳", + "indocChainId": 26, + "mention": "福建省", + "normalized": "福建省", + "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 27, + "mention": "浙江省", + "normalized": "浙江省", "type": "LOCATION" }, { - "confidence": 0.005864083766937256, "count": 1, - "indocChainId": 59, - "mention": "广西", - "normalized": "广西", + "indocChainId": 28, + "mention": "开化县", + "normalized": "开化县", "type": "LOCATION" + }, + { + "count": 1, + "indocChainId": 29, + "mention": "根", + "normalized": "根", + "type": "PERSON" } - ], - "requestId": "e7dde9f7-cf2a-4eb7-9640-dbcb01876c84", - "timers": { - "rblJe": 9, - "rexJe": 376, - "rliJe": 3, - "textExtractor": 23, - "urlContentDownloader": 158 - } -} \ No newline at end of file + ] +} diff --git a/api/src/test/mock-data/response/zho-url-entities_linked.json b/api/src/test/mock-data/response/zho-url-entities_linked.json index 287fe90ffd..757b0bcc87 100644 --- a/api/src/test/mock-data/response/zho-url-entities_linked.json +++ b/api/src/test/mock-data/response/zho-url-entities_linked.json @@ -1,145 +1,118 @@ { "entities": [ { - "confidence": 0.899619272322934, + "confidence": 0.9481590604573252, "entityId": "Q15031", "indocChainId": 0, "mention": "习近平" }, { - "confidence": 0.3528267721146622, - "entityId": "Q956", + "confidence": 0.867433387972666, + "entityId": "Q204839", "indocChainId": 1, - "mention": "京" + "mention": "新华社" }, { - "confidence": 0.5816475326681386, - "entityId": "Q159", + "confidence": 0.5362934809035028, + "entityId": "Q956", "indocChainId": 2, - "mention": "俄" + "mention": "北京" }, { - "confidence": 0.9142187150598888, - "entityId": "Q54340", + "confidence": 0.7572309609213647, + "entityId": "Q50963", "indocChainId": 3, - "mention": "人民日报" + "mention": "中共中央" }, { - "confidence": 0.8608566483007024, - "entityId": "Q649", - "indocChainId": 4, - "mention": "莫斯科" - }, - { - "confidence": 0.5805713365753495, - "entityId": "NEW-CLUSTER", + "confidence": 0.4209969226225277, + "entityId": "Q1067152", "indocChainId": 6, - "mention": "杜尚泽" - }, - { - "confidence": 0.8702899453350353, - "entityId": "Q159", - "indocChainId": 9, - "mention": "俄罗斯" - }, - { - "confidence": 0.9856814786589845, - "entityId": "Q7747", - "indocChainId": 11, - "mention": "普京" + "mention": "中央军委" }, { - "confidence": 0.4443587367642076, - "entityId": "Q148", - "indocChainId": 17, - "mention": "中" + "confidence": 0.05699713624090169, + "entityId": "Q50963", + "indocChainId": 8, + "mention": "中央" }, { - "confidence": 0.8823411560859947, - "entityId": "Q474548", - "indocChainId": 21, - "mention": "欧亚经济联盟" + "confidence": 0.8117594315087231, + "entityId": "Q15647659", + "indocChainId": 9, + "mention": "深化改革领导小组" }, { - "confidence": 0.6130111295417227, - "entityId": "Q148", - "indocChainId": 24, - "mention": "中国" + "confidence": 0.13991458785924232, + "entityId": "Q10871791", + "indocChainId": 13, + "mention": "中共中央政治局" }, { - "confidence": 0.927725568096703, - "entityId": "Q48", - "indocChainId": 26, - "mention": "亚洲" + "confidence": 0.882479317627502, + "entityId": "Q18111", + "indocChainId": 18, + "mention": "李克强" }, { - "confidence": 0.897729266643381, - "entityId": "Q46", - "indocChainId": 27, - "mention": "欧洲" + "confidence": 0.7898768327128031, + "entityId": "Q553121", + "indocChainId": 19, + "mention": "刘云山" }, { - "confidence": 0.4847404303137973, - "entityId": "Q46", - "indocChainId": 47, - "mention": "欧" + "confidence": 0.7898768327128031, + "entityId": "Q197180", + "indocChainId": 20, + "mention": "张高丽" }, { - "confidence": 0.762793967436439, - "entityId": "Q48", - "indocChainId": 48, - "mention": "亚" + "confidence": 0.6630248867803537, + "entityId": "Q10891465", + "indocChainId": 21, + "mention": "全国人大常委会法工委" }, { - "confidence": 0.8781700324275331, - "entityId": "Q5401", - "indocChainId": 49, - "mention": "欧亚大陆" + "confidence": 0.30591029572797956, + "entityId": "Q11626123", + "indocChainId": 22, + "mention": "科技部" }, { - "confidence": 0.8423861643310755, - "entityId": "NEW-CLUSTER", - "indocChainId": 50, - "mention": "远东" + "confidence": 0.47692974523332166, + "entityId": "Q2346285", + "indocChainId": 23, + "mention": "公安部" }, { - "confidence": 0.8908354747502565, - "entityId": "Q485207", - "indocChainId": 51, - "mention": "上海合作组织" + "confidence": 0.523540939060267, + "entityId": "Q8686", + "indocChainId": 24, + "mention": "上海市" }, { - "confidence": 0.8122172945191241, - "entityId": "Q19771", - "indocChainId": 52, - "mention": "二十国集团" + "confidence": 0.5428863928188706, + "entityId": "Q46862", + "indocChainId": 25, + "mention": "湖北省" }, { - "confidence": 0.794880223153438, - "entityId": "Q483134", - "indocChainId": 53, - "mention": "朝鲜半岛" + "confidence": 0.5237812521103231, + "entityId": "Q41705", + "indocChainId": 26, + "mention": "福建省" }, { - "confidence": 0.4684058602808494, - "entityId": "Q15174", - "indocChainId": 58, - "mention": "深圳" + "confidence": 0.5380425137578061, + "entityId": "Q16967", + "indocChainId": 27, + "mention": "浙江省" }, { - "confidence": 0.5669229170882081, - "entityId": "Q15176", - "indocChainId": 59, - "mention": "广西" + "confidence": 0.693639268396586, + "entityId": "Q1371362", + "indocChainId": 28, + "mention": "开化县" } - ], - "requestId": "39c5cb0b-950a-4ae8-ba76-54f9983bcf68", - "timers": { - "rblJe": 9, - "res": 886, - "rexJe": 20, - "rliJe": 3, - "textExtractor": 21, - "urlContentDownloader": 93 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-url-language.json b/api/src/test/mock-data/response/zho-url-language.json index aed7cce5e2..9ad04d7288 100644 --- a/api/src/test/mock-data/response/zho-url-language.json +++ b/api/src/test/mock-data/response/zho-url-language.json @@ -1,15 +1,15 @@ { "languageDetections": [ { - "confidence": 0.056175227599422506, + "confidence": 0.038823116093686494, "language": "zho" }, { - "confidence": 0.02074931407380365, + "confidence": 0.01876063494375846, "language": "zho" }, { - "confidence": 0.004427018577772834, + "confidence": 0.003918631947319118, "language": "jpn" }, { @@ -20,11 +20,5 @@ "confidence": 0.0, "language": "ara" } - ], - "requestId": "fbbb8338-def4-4ad0-b685-78b2d08092d5", - "timers": { - "rliJe": 3, - "textExtractor": 200, - "urlContentDownloader": 711 - } + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-url-morphology_complete.json b/api/src/test/mock-data/response/zho-url-morphology_complete.json index 1927e158e5..98ab0b2afe 100644 --- a/api/src/test/mock-data/response/zho-url-morphology_complete.json +++ b/api/src/test/mock-data/response/zho-url-morphology_complete.json @@ -1,9102 +1,9265 @@ { - "compounds": [], + "compoundComponents": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], "hanReadings": [ - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "jing1" - ], - "text": "京" - }, - { - "hanReadings": [ - "hui4-tan2" - ], - "text": "会谈" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "qian1" - ], - "text": "签" - }, - { - "hanReadings": [ - "fen4" - ], - "text": "份" - }, - { - "hanReadings": [ - "lian2-he2" - ], - "text": "联合" - }, - { - "hanReadings": [ - "sheng1-ming2" - ], - "text": "声明" - }, - { - "hanReadings": [ - "Ren2-min2-Ri4-bao4" - ], - "text": "人民日报" - }, - { - "hanReadings": [ - "quan2" - ], - "text": "全" - }, - { - "hanReadings": [ - "mei2-ti3" - ], - "text": "媒体" - }, - { - "hanReadings": [ - "ping2-tai2" - ], - "text": "平台" - }, - { - "hanReadings": [ - "Mo4-si1-ke1" - ], - "text": "莫斯科" - }, - { - "hanReadings": [ - "dian4" - ], - "text": "电" - }, - { - "hanReadings": [ - "ji4-zhe3" - ], - "text": "记者" - }, - { - "hanReadings": [ - "du4" - ], - "text": "杜" - }, - { - "hanReadings": [ - "dang1-di4" - ], - "text": "当地" - }, - { - "hanReadings": [ - "shi2-jian1" - ], - "text": "时间" - }, - { - "hanReadings": [ - "guo2-jia1" - ], - "text": "国家" - }, - { - "hanReadings": [ - "zhu3-xi2" - ], - "text": "主席" - }, - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "E2-luo2-si1" - ], - "text": "俄罗斯" - }, - { - "hanReadings": [ - "zong3-tong3" - ], - "text": "总统" - }, - { - "hanReadings": [ - "Pu3-jing1" - ], - "text": "普京" - }, - { - "hanReadings": [ - "ju3-xing2" - ], - "text": "举行" - }, - { - "hanReadings": [ - "hui4-tan2" - ], - "text": "会谈" - }, - { - "hanReadings": [ - "Pu3-jing1" - ], - "text": "普京" - }, - { - "hanReadings": [ - "re4-lie4" - ], - "text": "热烈" - }, - { - "hanReadings": [ - "huan1-ying2" - ], - "text": "欢迎" - }, - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "ying4-yao1" - ], - "text": "应邀" - }, - { - "hanReadings": [ - "qian2-lai2" - ], - "text": "前来" - }, - { - "hanReadings": [ - "chu1-xi2" - ], - "text": "出席" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "zhan4-zheng1" - ], - "text": "战争" - }, - { - "hanReadings": [ - "sheng4-li4" - ], - "text": "胜利" - }, - { - "hanReadings": [ - "zhou1-nian2" - ], - "text": "周年" - }, - { - "hanReadings": [ - "qing4-dian3" - ], - "text": "庆典" - }, - { - "hanReadings": [ - "Bing1" - ], - "text": "并" - }, - { - "hanReadings": [ - "fang3-wen4" - ], - "text": "访问" - }, - { - "hanReadings": [ - "E2-luo2-si1" - ], - "text": "俄罗斯" - }, - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "gan3-xie4" - ], - "text": "感谢" - }, - { - "hanReadings": [ - "Pu3-jing1" - ], - "text": "普京" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "sheng4-qing2" - ], - "text": "盛情" - }, - { - "hanReadings": [ - "yao1-qing3" - ], - "text": "邀请" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "yuan2-shou3" - ], - "text": "元首" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "qin1-qie4" - ], - "text": "亲切" - }, - { - "hanReadings": [ - "you3-hao3" - ], - "text": "友好" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "qi4-fen1" - ], - "text": "气氛" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "jiu4" - ], - "text": "就" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "guan1-xi0" - ], - "text": "关系" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "bi3-ci3" - ], - "text": "彼此" - }, - { - "hanReadings": [ - "guan1-xin1" - ], - "text": "关心" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "zhong4-da4" - ], - "text": "重大" - }, - { - "hanReadings": [ - "guo2-ji4" - ], - "text": "国际" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "di4-qu1" - ], - "text": "地区" - }, - { - "hanReadings": [ - "wen4-ti2" - ], - "text": "问题" - }, - { - "hanReadings": [ - "chong1-fen4" - ], - "text": "充分" - }, - { - "hanReadings": [ - "jiao1-huan4" - ], - "text": "交换" - }, - { - "hanReadings": [ - "yi4-jian0" - ], - "text": "意见" - }, - { - "hanReadings": [ - "yi1-zhi4" - ], - "text": "一致" - }, - { - "hanReadings": [ - "tong2-yi4" - ], - "text": "同意" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "yao1" - ], - "text": "要" - }, - { - "hanReadings": [ - "gong4-tong2" - ], - "text": "共同" - }, - { - "hanReadings": [ - "wei2-hu4" - ], - "text": "维护" - }, - { - "hanReadings": [ - "di4-er4" - ], - "text": "第二" - }, - { - "hanReadings": [ - "ci4" - ], - "text": "次" - }, - { - "hanReadings": [ - "shi4-jie4-da4-zhan4" - ], - "text": "世界大战" - }, - { - "hanReadings": [ - "sheng4-li4" - ], - "text": "胜利" - }, - { - "hanReadings": [ - "cheng2-guo3" - ], - "text": "成果" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "guo2-ji4" - ], - "text": "国际" - }, - { - "hanReadings": [ - "gong1-ping2" - ], - "text": "公平" - }, - { - "hanReadings": [ - "zheng4-yi4" - ], - "text": "正义" - }, - { - "hanReadings": [ - "tui1-jin4" - ], - "text": "推进" - }, - { - "hanReadings": [ - "Si1-chou2-zhi1-lu4" - ], - "text": "丝绸之路" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "dai4" - ], - "text": "带" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "Ou1-Ya4" - ], - "text": "欧亚" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "lian2-meng2" - ], - "text": "联盟" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "dui4-jie1" - ], - "text": "对接" - }, - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "zhi3-chu1" - ], - "text": "指出" - }, - { - "hanReadings": [ - "hen3" - ], - "text": "很" - }, - { - "hanReadings": [ - "gao1-xing4" - ], - "text": "高兴" - }, - { - "hanReadings": [ - "lai2" - ], - "text": "来" - }, - { - "hanReadings": [ - "Mo4-si1-ke1" - ], - "text": "莫斯科" - }, - { - "hanReadings": [ - "chu1-xi2" - ], - "text": "出席" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "zhan4-zheng1" - ], - "text": "战争" - }, - { - "hanReadings": [ - "sheng4-li4" - ], - "text": "胜利" - }, - { - "hanReadings": [ - "zhou1-nian2" - ], - "text": "周年" - }, - { - "hanReadings": [ - "qing4-dian3" - ], - "text": "庆典" - }, - { - "hanReadings": [ - "Zhong1-guo2" - ], - "text": "中国" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "E2-luo2-si1" - ], - "text": "俄罗斯" - }, - { - "hanReadings": [ - "fen1-bie2" - ], - "text": "分别" - }, - { - "hanReadings": [ - "shi4" - ], - "text": "是" - }, - { - "hanReadings": [ - "di4-er4" - ], - "text": "第二" - }, - { - "hanReadings": [ - "ci4" - ], - "text": "次" - }, - { - "hanReadings": [ - "shi4-jie4-da4-zhan4" - ], - "text": "世界大战" - }, - { - "hanReadings": [ - "Ya4-zhou1" - ], - "text": "亚洲" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "Ou1-zhou1" - ], - "text": "欧洲" - }, - { - "hanReadings": [ - "zhu3-zhan4-chang3" - ], - "text": "主战场" - }, - { - "hanReadings": [ - "dou1" - ], - "text": "都" - }, - { - "hanReadings": [ - "wei2" - ], - "text": "为" - }, - { - "hanReadings": [ - "qu3-de2" - ], - "text": "取得" - }, - { - "hanReadings": [ - "di4-er4" - ], - "text": "第二" - }, - { - "hanReadings": [ - "ci4" - ], - "text": "次" - }, - { - "hanReadings": [ - "shi4-jie4-da4-zhan4" - ], - "text": "世界大战" - }, - { - "hanReadings": [ - "zui4-zhong1" - ], - "text": "最终" - }, - { - "hanReadings": [ - "sheng4-li4" - ], - "text": "胜利" - }, - { - "hanReadings": [ - "fu4-chu1" - ], - "text": "付出" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "ju4-da4" - ], - "text": "巨大" - }, - { - "hanReadings": [ - "xi1-sheng1" - ], - "text": "牺牲" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "zhong4-da4" - ], - "text": "重大" - }, - { - "hanReadings": [ - "gong4-xian4" - ], - "text": "贡献" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "ren2-min2" - ], - "text": "人民" - }, - { - "hanReadings": [ - "ye3" - ], - "text": "也" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "bing4-jian1" - ], - "text": "并肩" - }, - { - "hanReadings": [ - "zhan4-dou4" - ], - "text": "战斗" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "jie1" - ], - "text": "结" - }, - { - "hanReadings": [ - "xia4" - ], - "text": "下" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "shen1-hou4" - ], - "text": "深厚" - }, - { - "hanReadings": [ - "you3-yi4" - ], - "text": "友谊" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "jin1-nian2" - ], - "text": "今年" - }, - { - "hanReadings": [ - "fen1-bie2" - ], - "text": "分别" - }, - { - "hanReadings": [ - "ju3-ban4" - ], - "text": "举办" - }, - { - "hanReadings": [ - "di4-er4" - ], - "text": "第二" - }, - { - "hanReadings": [ - "ci4" - ], - "text": "次" - }, - { - "hanReadings": [ - "shi4-jie4-da4-zhan4" - ], - "text": "世界大战" - }, - { - "hanReadings": [ - "sheng4-li4" - ], - "text": "胜利" - }, - { - "hanReadings": [ - "zhou1-nian2" - ], - "text": "周年" - }, - { - "hanReadings": [ - "xi4-lie4" - ], - "text": "系列" - }, - { - "hanReadings": [ - "qing4-zhu4" - ], - "text": "庆祝" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "ji4-nian4" - ], - "text": "纪念" - }, - { - "hanReadings": [ - "huo2-dong4" - ], - "text": "活动" - }, - { - "hanReadings": [ - "mu4-di0" - ], - "text": "目的" - }, - { - "hanReadings": [ - "shi4" - ], - "text": "是" - }, - { - "hanReadings": [ - "ming2-ji4" - ], - "text": "铭记" - }, - { - "hanReadings": [ - "li4-shi3" - ], - "text": "历史" - }, - { - "hanReadings": [ - "mian3-huai2" - ], - "text": "缅怀" - }, - { - "hanReadings": [ - "xian1-lie4" - ], - "text": "先烈" - }, - { - "hanReadings": [ - "yao1" - ], - "text": "要" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "ge4-guo2" - ], - "text": "各国" - }, - { - "hanReadings": [ - "ren2-min2" - ], - "text": "人民" - }, - { - "hanReadings": [ - "yi1-dao4" - ], - "text": "一道" - }, - { - "hanReadings": [ - "zhen1-ai4" - ], - "text": "珍爱" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "wei2-hu4" - ], - "text": "维护" - }, - { - "hanReadings": [ - "lai2-zhi1-bu4-yi4" - ], - "text": "来之不易" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "he2-ping2" - ], - "text": "和平" - }, - { - "hanReadings": [ - "gong4" - ], - "text": "共" - }, - { - "hanReadings": [ - "chuang1" - ], - "text": "创" - }, - { - "hanReadings": [ - "quan2" - ], - "text": "全" - }, - { - "hanReadings": [ - "ren2-lei4" - ], - "text": "人类" - }, - { - "hanReadings": [ - "he2-ping2" - ], - "text": "和平" - }, - { - "hanReadings": [ - "yu2" - ], - "text": "与" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "mei3-hao3" - ], - "text": "美好" - }, - { - "hanReadings": [ - "wei4-lai2" - ], - "text": "未来" - }, - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "qiang2-diao4" - ], - "text": "强调" - }, - { - "hanReadings": [ - "wo3-men0" - ], - "text": "我们" - }, - { - "hanReadings": [ - "yuan4" - ], - "text": "愿" - }, - { - "hanReadings": [ - "shen1-hua4" - ], - "text": "深化" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "E2-luo2-si1" - ], - "text": "俄罗斯" - }, - { - "hanReadings": [ - "ren2-min2" - ], - "text": "人民" - }, - { - "hanReadings": [ - "chuan2-tong3" - ], - "text": "传统" - }, - { - "hanReadings": [ - "you3-yi4" - ], - "text": "友谊" - }, - { - "hanReadings": [ - "tui1-jin4" - ], - "text": "推进" - }, - { - "hanReadings": [ - "shuang1-fang1" - ], - "text": "双方" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "zhan4-lve4" - ], - "text": "战略" - }, - { - "hanReadings": [ - "dui4-jie1" - ], - "text": "对接" - }, - { - "hanReadings": [ - "gui1-hua4" - ], - "text": "规划" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "you3-hao3" - ], - "text": "友好" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "xin1" - ], - "text": "新" - }, - { - "hanReadings": [ - "wei4-lai2" - ], - "text": "未来" - }, - { - "hanReadings": [ - "tui1-dong4" - ], - "text": "推动" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "quan2-mian4" - ], - "text": "全面" - }, - { - "hanReadings": [ - "zhan4-lve4" - ], - "text": "战略" - }, - { - "hanReadings": [ - "xie2-zuo4" - ], - "text": "协作" - }, - { - "hanReadings": [ - "huo3-ban4" - ], - "text": "伙伴" - }, - { - "hanReadings": [ - "guan1-xi0" - ], - "text": "关系" - }, - { - "hanReadings": [ - "ji4-xu4" - ], - "text": "继续" - }, - { - "hanReadings": [ - "bao3-chi2" - ], - "text": "保持" - }, - { - "hanReadings": [ - "gao1" - ], - "text": "高" - }, - { - "hanReadings": [ - "shui3-ping2" - ], - "text": "水平" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "cu4-jin4" - ], - "text": "促进" - }, - { - "hanReadings": [ - "guo2-ji4" - ], - "text": "国际" - }, - { - "hanReadings": [ - "zhi4-xu4" - ], - "text": "秩序" - }, - { - "hanReadings": [ - "chao2-zhe0" - ], - "text": "朝着" - }, - { - "hanReadings": [ - "geng4-jia1" - ], - "text": "更加" - }, - { - "hanReadings": [ - "gong1-zheng4" - ], - "text": "公正" - }, - { - "hanReadings": [ - "he2-li3" - ], - "text": "合理" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "fang1-xiang4" - ], - "text": "方向" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "wei2-hu4" - ], - "text": "维护" - }, - { - "hanReadings": [ - "di4-qu1" - ], - "text": "地区" - }, - { - "hanReadings": [ - "ji2" - ], - "text": "及" - }, - { - "hanReadings": [ - "shi4-jie4" - ], - "text": "世界" - }, - { - "hanReadings": [ - "he2-ping2" - ], - "text": "和平" - }, - { - "hanReadings": [ - "an1-quan2" - ], - "text": "安全" - }, - { - "hanReadings": [ - "wen3-ding4" - ], - "text": "稳定" - }, - { - "hanReadings": [ - "Pu3-jing1" - ], - "text": "普京" - }, - { - "hanReadings": [ - "gao1-du4" - ], - "text": "高度" - }, - { - "hanReadings": [ - "ping2-jia4" - ], - "text": "评价" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "guan1-xi0" - ], - "text": "关系" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "shui3-ping2" - ], - "text": "水平" - }, - { - "hanReadings": [ - "zhi3-chu1" - ], - "text": "指出" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "shi4" - ], - "text": "是" - }, - { - "hanReadings": [ - "zhen1-zheng4" - ], - "text": "真正" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "quan2-mian4" - ], - "text": "全面" - }, - { - "hanReadings": [ - "zhan4-lve4" - ], - "text": "战略" - }, - { - "hanReadings": [ - "xie2-zuo4" - ], - "text": "协作" - }, - { - "hanReadings": [ - "huo3-ban4" - ], - "text": "伙伴" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "ge3" - ], - "text": "各" - }, - { - "hanReadings": [ - "ling3-yu4" - ], - "text": "领域" - }, - { - "hanReadings": [ - "ge3" - ], - "text": "各" - }, - { - "hanReadings": [ - "ceng2-mian4" - ], - "text": "层面" - }, - { - "hanReadings": [ - "dou1" - ], - "text": "都" - }, - { - "hanReadings": [ - "kai1-zhan3" - ], - "text": "开展" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "zhuo2-you3-cheng2-xiao4" - ], - "text": "卓有成效" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "jiao1-liu2" - ], - "text": "交流" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "Pu3-jing1" - ], - "text": "普京" - }, - { - "hanReadings": [ - "biao3-shi4" - ], - "text": "表示" - }, - { - "hanReadings": [ - "wo3" - ], - "text": "我" - }, - { - "hanReadings": [ - "wan2-quan2" - ], - "text": "完全" - }, - { - "hanReadings": [ - "zan4-tong2" - ], - "text": "赞同" - }, - { - "hanReadings": [ - "xi2" - ], - "text": "习" - }, - { - "hanReadings": [ - "zhu3-xi2" - ], - "text": "主席" - }, - { - "hanReadings": [ - "dui4" - ], - "text": "对" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "di4-er4" - ], - "text": "第二" - }, - { - "hanReadings": [ - "ci4" - ], - "text": "次" - }, - { - "hanReadings": [ - "shi4-jie4-da4-zhan4" - ], - "text": "世界大战" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "li4-shi3" - ], - "text": "历史" - }, - { - "hanReadings": [ - "gong4-xian4" - ], - "text": "贡献" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "ping2-jia4" - ], - "text": "评价" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "jin1-nian2" - ], - "text": "今年" - }, - { - "hanReadings": [ - "jiang1" - ], - "text": "将" - }, - { - "hanReadings": [ - "ju3-ban4" - ], - "text": "举办" - }, - { - "hanReadings": [ - "qing4-zhu4" - ], - "text": "庆祝" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "ji4-nian4" - ], - "text": "纪念" - }, - { - "hanReadings": [ - "huo2-dong4" - ], - "text": "活动" - }, - { - "hanReadings": [ - "fan3-dui4" - ], - "text": "反对" - }, - { - "hanReadings": [ - "ren4-he2" - ], - "text": "任何" - }, - { - "hanReadings": [ - "qi3-tu2" - ], - "text": "企图" - }, - { - "hanReadings": [ - "fou3-ren4" - ], - "text": "否认" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "wai1-qu1" - ], - "text": "歪曲" - }, - { - "hanReadings": [ - "li4-shi3" - ], - "text": "历史" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "tu2-mou2" - ], - "text": "图谋" - }, - { - "hanReadings": [ - "fan3-dui4" - ], - "text": "反对" - }, - { - "hanReadings": [ - "ren4-he2" - ], - "text": "任何" - }, - { - "hanReadings": [ - "mei3-hua4" - ], - "text": "美化" - }, - { - "hanReadings": [ - "fa3-xi1-si1" - ], - "text": "法西斯" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "zhu3-yi4" - ], - "text": "主义" - }, - { - "hanReadings": [ - "fen1-zi3" - ], - "text": "分子" - }, - { - "hanReadings": [ - "mo3-hei1" - ], - "text": "抹黑" - }, - { - "hanReadings": [ - "jie3-fang4-zhe3" - ], - "text": "解放者" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "xing2-wei2" - ], - "text": "行为" - }, - { - "hanReadings": [ - "guan1-yu2" - ], - "text": "关于" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "wu4-shi2" - ], - "text": "务实" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "yuan2-shou3" - ], - "text": "元首" - }, - { - "hanReadings": [ - "shang1-ding4" - ], - "text": "商定" - }, - { - "hanReadings": [ - "jiang1" - ], - "text": "将" - }, - { - "hanReadings": [ - "Zhong1-fang1" - ], - "text": "中方" - }, - { - "hanReadings": [ - "Si1-chou2-zhi1-lu4" - ], - "text": "丝绸之路" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "dai4" - ], - "text": "带" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "tong2" - ], - "text": "同" - }, - { - "hanReadings": [ - "Ou1-Ya4" - ], - "text": "欧亚" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "lian2-meng2" - ], - "text": "联盟" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "dui4-jie1" - ], - "text": "对接" - }, - { - "hanReadings": [ - "cong1" - ], - "text": "从" - }, - { - "hanReadings": [ - "zhan4-lve4" - ], - "text": "战略" - }, - { - "hanReadings": [ - "gao1-du4" - ], - "text": "高度" - }, - { - "hanReadings": [ - "yi3" - ], - "text": "以" - }, - { - "hanReadings": [ - "geng1" - ], - "text": "更" - }, - { - "hanReadings": [ - "guang3" - ], - "text": "广" - }, - { - "hanReadings": [ - "shi4-ye3" - ], - "text": "视野" - }, - { - "hanReadings": [ - "quan2-mian4" - ], - "text": "全面" - }, - { - "hanReadings": [ - "kuo4-da4" - ], - "text": "扩大" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "shen1-hua4" - ], - "text": "深化" - }, - { - "hanReadings": [ - "shuang1-fang1" - ], - "text": "双方" - }, - { - "hanReadings": [ - "wu4-shi2" - ], - "text": "务实" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "kuo4-da4" - ], - "text": "扩大" - }, - { - "hanReadings": [ - "xiang1-hu4" - ], - "text": "相互" - }, - { - "hanReadings": [ - "kai1-fang4" - ], - "text": "开放" - }, - { - "hanReadings": [ - "shen1-hua4" - ], - "text": "深化" - }, - { - "hanReadings": [ - "li4-yi4" - ], - "text": "利益" - }, - { - "hanReadings": [ - "jiao1-rong2" - ], - "text": "交融" - }, - { - "hanReadings": [ - "geng1" - ], - "text": "更" - }, - { - "hanReadings": [ - "hao1" - ], - "text": "好" - }, - { - "hanReadings": [ - "cu4-jin4" - ], - "text": "促进" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "zhen4-xing1" - ], - "text": "振兴" - }, - { - "hanReadings": [ - "tuo4-zhan3" - ], - "text": "拓展" - }, - { - "hanReadings": [ - "Ou1" - ], - "text": "欧" - }, - { - "hanReadings": [ - "ya4" - ], - "text": "亚" - }, - { - "hanReadings": [ - "gong4-tong2" - ], - "text": "共同" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "kong1-jian1" - ], - "text": "空间" - }, - { - "hanReadings": [ - "dai4-dong4" - ], - "text": "带动" - }, - { - "hanReadings": [ - "zheng3-ge4" - ], - "text": "整个" - }, - { - "hanReadings": [ - "Ou1" - ], - "text": "欧" - }, - { - "hanReadings": [ - "ya4" - ], - "text": "亚" - }, - { - "hanReadings": [ - "da4-lu4" - ], - "text": "大陆" - }, - { - "hanReadings": [ - "fa1-zhan3" - ], - "text": "发展" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "wen3-ding4" - ], - "text": "稳定" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "yuan2-shou3" - ], - "text": "元首" - }, - { - "hanReadings": [ - "tong2-yi4" - ], - "text": "同意" - }, - { - "hanReadings": [ - "wa1-jue2" - ], - "text": "挖掘" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "qian2-li4" - ], - "text": "潜力" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "you1-shi4" - ], - "text": "优势" - }, - { - "hanReadings": [ - "kuo4-da4" - ], - "text": "扩大" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "neng2-yuan2" - ], - "text": "能源" - }, - { - "hanReadings": [ - "nong2-ye4" - ], - "text": "农业" - }, - { - "hanReadings": [ - "hang2-kong1" - ], - "text": "航空" - }, - { - "hanReadings": [ - "hang2-tian1" - ], - "text": "航天" - }, - { - "hanReadings": [ - "jin1-rong2" - ], - "text": "金融" - }, - { - "hanReadings": [ - "tou2-zi1" - ], - "text": "投资" - }, - { - "hanReadings": [ - "ling3-yu4" - ], - "text": "领域" - }, - { - "hanReadings": [ - "ji1-chu3" - ], - "text": "基础" - }, - { - "hanReadings": [ - "she4-shi1" - ], - "text": "设施" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "Yuan3-dong1" - ], - "text": "远东" - }, - { - "hanReadings": [ - "kai1-fa0" - ], - "text": "开发" - }, - { - "hanReadings": [ - "deng3" - ], - "text": "等" - }, - { - "hanReadings": [ - "fang1-mian4" - ], - "text": "方面" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "kuo4-da4" - ], - "text": "扩大" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "jiao4-yu4" - ], - "text": "教育" - }, - { - "hanReadings": [ - "wen2-hua4" - ], - "text": "文化" - }, - { - "hanReadings": [ - "wei4-sheng1" - ], - "text": "卫生" - }, - { - "hanReadings": [ - "lv3-you2" - ], - "text": "旅游" - }, - { - "hanReadings": [ - "deng3" - ], - "text": "等" - }, - { - "hanReadings": [ - "ren2-wen2" - ], - "text": "人文" - }, - { - "hanReadings": [ - "ling3-yu4" - ], - "text": "领域" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "ji4-xu4" - ], - "text": "继续" - }, - { - "hanReadings": [ - "ban4" - ], - "text": "办" - }, - { - "hanReadings": [ - "hao1" - ], - "text": "好" - }, - { - "hanReadings": [ - "qing1-nian2" - ], - "text": "青年" - }, - { - "hanReadings": [ - "you3-hao3" - ], - "text": "友好" - }, - { - "hanReadings": [ - "jiao1-liu2" - ], - "text": "交流" - }, - { - "hanReadings": [ - "nian2" - ], - "text": "年" - }, - { - "hanReadings": [ - "mei2-ti3" - ], - "text": "媒体" - }, - { - "hanReadings": [ - "jiao1-liu2" - ], - "text": "交流" - }, - { - "hanReadings": [ - "nian2" - ], - "text": "年" - }, - { - "hanReadings": [ - "huo2-dong4" - ], - "text": "活动" - }, - { - "hanReadings": [ - "ji1-ji2" - ], - "text": "积极" - }, - { - "hanReadings": [ - "jia1-qiang2" - ], - "text": "加强" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "jun1" - ], - "text": "军" - }, - { - "hanReadings": [ - "jiao1-liu2" - ], - "text": "交流" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "yuan2-shou3" - ], - "text": "元首" - }, - { - "hanReadings": [ - "tong2-yi4" - ], - "text": "同意" - }, - { - "hanReadings": [ - "jia1-qiang2" - ], - "text": "加强" - }, - { - "hanReadings": [ - "zai4" - ], - "text": "在" - }, - { - "hanReadings": [ - "Shang4-hai3" - ], - "text": "上海" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "zu3-zhi1" - ], - "text": "组织" - }, - { - "hanReadings": [ - "jin1-zhuan1" - ], - "text": "金砖" - }, - { - "hanReadings": [ - "guo2-jia1" - ], - "text": "国家" - }, - { - "hanReadings": [ - "er4-shi2" - ], - "text": "二十" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "ji2-tuan2" - ], - "text": "集团" - }, - { - "hanReadings": [ - "kuang4-jia4" - ], - "text": "框架" - }, - { - "hanReadings": [ - "nei4" - ], - "text": "内" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "shuang1-fang1" - ], - "text": "双方" - }, - { - "hanReadings": [ - "hai2" - ], - "text": "还" - }, - { - "hanReadings": [ - "jiu4" - ], - "text": "就" - }, - { - "hanReadings": [ - "Chao2-xian3" - ], - "text": "朝鲜" - }, - { - "hanReadings": [ - "ban4-dao3" - ], - "text": "半岛" - }, - { - "hanReadings": [ - "ju2-shi4" - ], - "text": "局势" - }, - { - "hanReadings": [ - "wen4-ti2" - ], - "text": "问题" - }, - { - "hanReadings": [ - "deng3" - ], - "text": "等" - }, - { - "hanReadings": [ - "gong4-tong2" - ], - "text": "共同" - }, - { - "hanReadings": [ - "guan1-xin1" - ], - "text": "关心" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "guo2-ji4" - ], - "text": "国际" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "di4-qu1" - ], - "text": "地区" - }, - { - "hanReadings": [ - "wen4-ti2" - ], - "text": "问题" - }, - { - "hanReadings": [ - "jiao1-huan4" - ], - "text": "交换" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "yi4-jian0" - ], - "text": "意见" - }, - { - "hanReadings": [ - "yi1-zhi4" - ], - "text": "一致" - }, - { - "hanReadings": [ - "tong2-yi4" - ], - "text": "同意" - }, - { - "hanReadings": [ - "ji4-xu4" - ], - "text": "继续" - }, - { - "hanReadings": [ - "jiu4" - ], - "text": "就" - }, - { - "hanReadings": [ - "you3-guan1" - ], - "text": "有关" - }, - { - "hanReadings": [ - "wen4-ti2" - ], - "text": "问题" - }, - { - "hanReadings": [ - "bao3-chi2" - ], - "text": "保持" - }, - { - "hanReadings": [ - "mi4-qie4" - ], - "text": "密切" - }, - { - "hanReadings": [ - "gou1-tong1" - ], - "text": "沟通" - }, - { - "hanReadings": [ - "he1" - ], - "text": "和" - }, - { - "hanReadings": [ - "xie2-tiao2" - ], - "text": "协调" - }, - { - "hanReadings": [ - "hui4-tan2" - ], - "text": "会谈" - }, - { - "hanReadings": [ - "hou4" - ], - "text": "后" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "yuan2-shou3" - ], - "text": "元首" - }, - { - "hanReadings": [ - "gong4-tong2" - ], - "text": "共同" - }, - { - "hanReadings": [ - "qian1-shu3" - ], - "text": "签署" - }, - { - "hanReadings": [ - "Bing1" - ], - "text": "并" - }, - { - "hanReadings": [ - "fa1-biao3" - ], - "text": "发表" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "zhong1" - ], - "text": "中" - }, - { - "hanReadings": [ - "e2" - ], - "text": "俄" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "guan1-yu2" - ], - "text": "关于" - }, - { - "hanReadings": [ - "shen1-hua4" - ], - "text": "深化" - }, - { - "hanReadings": [ - "quan2-mian4" - ], - "text": "全面" - }, - { - "hanReadings": [ - "zhan4-lve4" - ], - "text": "战略" - }, - { - "hanReadings": [ - "xie2-zuo4" - ], - "text": "协作" - }, - { - "hanReadings": [ - "huo3-ban4" - ], - "text": "伙伴" - }, - { - "hanReadings": [ - "guan1-xi0" - ], - "text": "关系" - }, - { - "hanReadings": [ - "chang4-dao3" - ], - "text": "倡导" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "gong4" - ], - "text": "共" - }, - { - "hanReadings": [ - "ying2" - ], - "text": "赢" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "lian2-he2" - ], - "text": "联合" - }, - { - "hanReadings": [ - "sheng1-ming2" - ], - "text": "声明" - }, - { - "hanReadings": [ - "guan1-yu2" - ], - "text": "关于" - }, - { - "hanReadings": [ - "Si1-chou2-zhi1-lu4" - ], - "text": "丝绸之路" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "dai4" - ], - "text": "带" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "yu2" - ], - "text": "与" - }, - { - "hanReadings": [ - "Ou1-Ya4" - ], - "text": "欧亚" - }, - { - "hanReadings": [ - "jing1-ji4" - ], - "text": "经济" - }, - { - "hanReadings": [ - "lian2-meng2" - ], - "text": "联盟" - }, - { - "hanReadings": [ - "jian4-she4" - ], - "text": "建设" - }, - { - "hanReadings": [ - "dui4-jie1" - ], - "text": "对接" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "lian2-he2" - ], - "text": "联合" - }, - { - "hanReadings": [ - "sheng1-ming2" - ], - "text": "声明" - }, - { - "hanReadings": [ - "Bing1" - ], - "text": "并" - }, - { - "hanReadings": [ - "jian4-zheng4" - ], - "text": "见证" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "neng2-yuan2" - ], - "text": "能源" - }, - { - "hanReadings": [ - "jiao1-tong1" - ], - "text": "交通" - }, - { - "hanReadings": [ - "hang2-tian1" - ], - "text": "航天" - }, - { - "hanReadings": [ - "jin1-rong2" - ], - "text": "金融" - }, - { - "hanReadings": [ - "xin1-wen2" - ], - "text": "新闻" - }, - { - "hanReadings": [ - "mei2-ti3" - ], - "text": "媒体" - }, - { - "hanReadings": [ - "deng3" - ], - "text": "等" - }, - { - "hanReadings": [ - "ling3-yu4" - ], - "text": "领域" - }, - { - "hanReadings": [ - "duo1" - ], - "text": "多" - }, - { - "hanReadings": [ - "xiang4" - ], - "text": "项" - }, - { - "hanReadings": [ - "he2-zuo4" - ], - "text": "合作" - }, - { - "hanReadings": [ - "wen2-jian4" - ], - "text": "文件" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "qian1-shu3" - ], - "text": "签署" - }, - { - "hanReadings": [ - "qian1-zi4" - ], - "text": "签字" - }, - { - "hanReadings": [ - "yi2-shi4" - ], - "text": "仪式" - }, - { - "hanReadings": [ - "hou4" - ], - "text": "后" - }, - { - "hanReadings": [ - "liang3" - ], - "text": "两" - }, - { - "hanReadings": [ - "guo2" - ], - "text": "国" - }, - { - "hanReadings": [ - "yuan2-shou3" - ], - "text": "元首" - }, - { - "hanReadings": [ - "gong4-tong2" - ], - "text": "共同" - }, - { - "hanReadings": [ - "hui4-jian4" - ], - "text": "会见" - }, - { - "hanReadings": [ - "le0" - ], - "text": "了" - }, - { - "hanReadings": [ - "ji4-zhe3" - ], - "text": "记者" - }, - { - "hanReadings": [ - "Shen1-zhen4" - ], - "text": "深圳" - }, - { - "hanReadings": [ - "wai4-wei2" - ], - "text": "外围" - }, - { - "hanReadings": [ - "nv3" - ], - "text": "女" - }, - { - "hanReadings": [ - "jia3-ban4" - ], - "text": "假扮" - }, - { - "hanReadings": [ - "jiao4" - ], - "text": "叫" - }, - { - "hanReadings": [ - "gao1" - ], - "text": "高" - }, - { - "hanReadings": [ - "Guang3-xi1" - ], - "text": "广西" - }, - { - "hanReadings": [ - "yi1" - ], - "text": "一" - }, - { - "hanReadings": [ - "ci4" - ], - "text": "次" - }, - { - "hanReadings": [ - "de0" - ], - "text": "的" - }, - { - "hanReadings": [ - "quan2" - ], - "text": "全" - }, - { - "hanReadings": [ - "guo4-cheng2" - ], - "text": "过程" - } + [ + "xi2" + ], + null, + [ + "zhu3-chi2" + ], + [ + "shen1" + ], + [ + "gai3-zu3" + ], + [ + "hui4-yi4" + ], + [ + "ting1-qu3" + ], + null, + [ + "xiang4" + ], + [ + "hui4-bao4" + ], + [ + "hui4-yi4" + ], + [ + "zhi3-chu1" + ], + null, + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + null, + [ + "shang4-lai0" + ], + [ + "jiu4" + ], + [ + "bi4-xu1" + ], + [ + "you3" + ], + [ + "qi4-shi4" + ], + null, + [ + "xian1" + ], + [ + "ji2-zhong1" + ], + [ + "li4-liang0" + ], + [ + "ba3" + ], + [ + "zhu3-yao4" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "tui1-chu1" + ], + [ + "lai2" + ], + null, + [ + "ran2-hou4" + ], + [ + "ji2-zhong1" + ], + [ + "li4-liang0" + ], + [ + "yi1" + ], + [ + "xiang4" + ], + [ + "yi1" + ], + [ + "xiang4" + ], + [ + "zhua1-hao3" + ], + [ + "luo4-shi2" + ], + null, + null, + null, + [ + "gai3-ge2" + ], + [ + "gui1-lv4" + ], + [ + "he1" + ], + [ + "te4-dian3" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + null, + [ + "yao1" + ], + [ + "zun1-xun2" + ], + [ + "gai3-ge2" + ], + [ + "gui1-lv4" + ], + [ + "he1" + ], + [ + "te4-dian3" + ], + null, + [ + "jian4-li4" + ], + [ + "quan2" + ], + [ + "guo4-cheng2" + ], + null, + [ + "gao1" + ], + [ + "xiao4-lv4" + ], + null, + [ + "ke3" + ], + [ + "he2-shi2" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "ji1-zhi4" + ], + null, + [ + "tui1-dong4" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "zao3" + ], + [ + "lao4-di4" + ], + null, + [ + "jian4" + ], + [ + "shi2-xiao4" + ], + null, + [ + "Bing1" + ], + [ + "ti2-chu1" + ], + null, + [ + "ge0" + ], + [ + "ju3-cuo4" + ], + null, + [ + "qi2-zhong1" + ], + null, + [ + "jiu4" + ], + null, + [ + "zhua1" + ], + [ + "du1-ban4" + ], + [ + "xie2-tiao2" + ], + null, + null, + [ + "hui4-yi4" + ], + [ + "zhi3-chu1" + ], + null, + [ + "yao1" + ], + [ + "ba3" + ], + [ + "bu4-men2" + ], + [ + "xie2-tiao2" + ], + [ + "nan2-du4" + ], + [ + "da4" + ], + null, + [ + "zheng4-ce4" + ], + null, + [ + "gao1" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "zuo4-wei2" + ], + [ + "zhong4-dian3" + ], + null, + [ + "mou2-hua4" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "chu1-tai2" + ], + [ + "shi2-ji1" + ], + [ + "he1" + ], + [ + "jie2-zou4" + ], + null, + [ + "xie2-tiao2" + ], + [ + "jie3-jue2" + ], + [ + "gai3-ge2" + ], + [ + "tui1-jin4" + ], + [ + "zhong1" + ], + [ + "de0" + ], + [ + "mao2-dun4" + ], + [ + "he1" + ], + [ + "wen4-ti2" + ], + null, + [ + "dui4" + ], + [ + "fu1-yan0-se4-ze2" + ], + null, + [ + "tuo1-yan2" + ], + [ + "che3-pi2" + ], + null, + [ + "lv3" + ], + [ + "tui1" + ], + [ + "bu0" + ], + [ + "dong4" + ], + [ + "de0" + ], + null, + [ + "dui4" + ], + [ + "zhong4-shi4" + ], + [ + "bu4-gou4" + ], + null, + [ + "yan2-jiu1" + ], + [ + "shen4" + ], + [ + "shao3" + ], + null, + [ + "guan4-che4" + ], + [ + "fa2-li4" + ], + [ + "de0" + ], + null, + [ + "yao1" + ], + [ + "jin4-xing2" + ], + null, + null, + [ + "mei2" + ], + [ + "cuo4" + ], + null, + [ + "yao1" + ], + [ + "dui4" + ], + [ + "yi3-xia4" + ], + null, + [ + "zhong3" + ], + [ + "qing2-kuang4" + ], + null, + [ + "jin4-xing2" + ], + null, + null, + [ + "hui4-yi4" + ], + [ + "hai2" + ], + [ + "qiang2-diao4" + ], + [ + "yao1" + ], + [ + "zuo4" + ], + [ + "cu4-jin4-pai4" + ], + null, + [ + "shi2-gan4" + ], + [ + "jia0" + ], + null, + [ + "Bing1" + ], + [ + "yao1" + ], + [ + "tui1-dong4" + ], + [ + "quan2" + ], + [ + "she4-hui4" + ], + [ + "xing2-cheng2" + ], + [ + "xiang3" + ], + [ + "gai3-ge2" + ], + null, + [ + "gan3" + ], + [ + "gai3-ge2" + ], + null, + [ + "shan4" + ], + [ + "gai3-ge2" + ], + [ + "de0" + ], + [ + "liang2-hao3" + ], + [ + "feng1-shang4" + ], + null, + [ + "geng1" + ], + [ + "duo1" + ], + [ + "nei4-rong2" + ], + null, + [ + "qing3" + ], + [ + "kan1" + ], + [ + "tong1-gao3" + ], + null, + [ + "Xin1-hua2-she4" + ], + [ + "Bei3-jing1" + ], + null, + null, + [ + "dian4" + ], + [ + "Zhong1-Gong4-Zhong1-yang1" + ], + [ + "zong3-shu1-ji0" + ], + null, + [ + "guo2-jia1" + ], + [ + "zhu3-xi2" + ], + null, + null, + [ + "zhu3-xi2" + ], + null, + [ + "zhong1-yang1" + ], + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "ling3-dao3" + ], + [ + "xiao3-zu3" + ], + [ + "zu3-zhang3" + ], + [ + "xi2" + ], + null, + null, + null, + [ + "xia4-wu3" + ], + [ + "zhu3-chi2" + ], + [ + "zhao4-kai1" + ], + [ + "zhong1-yang1" + ], + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "ling3-dao3" + ], + [ + "xiao3-zu3" + ], + null, + [ + "ci4" + ], + [ + "hui4-yi4" + ], + [ + "Bing1" + ], + [ + "fa1-biao3" + ], + [ + "zhong4-yao4" + ], + [ + "jiang3-hua4" + ], + null, + [ + "quan2-ju2" + ], + [ + "yi4-shi0" + ], + null, + null, + [ + "ta1" + ], + [ + "qiang2-diao4" + ], + null, + [ + "ge3" + ], + [ + "di4-qu1" + ], + [ + "ge3" + ], + [ + "bu4-men2" + ], + [ + "yao1" + ], + [ + "lao2-gu4" + ], + [ + "shu4-li4" + ], + [ + "quan2-ju2" + ], + [ + "yi4-shi0" + ], + null, + [ + "ze2-ren4" + ], + [ + "yi4-shi0" + ], + null, + [ + "ba3" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "zuo4-wei2" + ], + [ + "yi1" + ], + [ + "xiang4" + ], + [ + "zhong4-da4" + ], + [ + "zheng4-zhi4" + ], + [ + "ze2-ren4" + ], + null, + [ + "jian1-ding4" + ], + [ + "gai3-ge2" + ], + [ + "jue2-xin1" + ], + [ + "he1" + ], + [ + "xin4-xin1" + ], + null, + [ + "zeng1-qiang2" + ], + [ + "tui1-jin4" + ], + [ + "gai3-ge2" + ], + [ + "de0" + ], + [ + "si1-xiang3" + ], + [ + "zi4-jue2" + ], + [ + "he1" + ], + [ + "xing2-dong4" + ], + [ + "zi4-jue2" + ], + null, + [ + "ji4" + ], + [ + "dang1" + ], + [ + "gai3-ge2" + ], + [ + "cu4-jin4-pai4" + ], + null, + [ + "you4" + ], + [ + "dang1" + ], + [ + "gai3-ge2" + ], + [ + "shi2-gan4" + ], + [ + "jia0" + ], + null, + [ + "yi3" + ], + [ + "ding1" + ], + [ + "ding1-zi0" + ], + [ + "jing1-shen0" + ], + [ + "zhua1-hao3" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + null, + [ + "niu1" + ], + [ + "zhu4" + ], + [ + "guan1-jian4" + ], + null, + [ + "jing1" + ], + null, + [ + "li4" + ], + null, + [ + "gan3-yu2" + ], + [ + "ken3" + ], + [ + "ying4-gu3-tou0" + ], + null, + [ + "ding1" + ], + [ + "zhao1" + ], + [ + "zhua1" + ], + null, + [ + "fan3-fu4" + ], + [ + "zhua1" + ], + null, + [ + "zhi2-dao4" + ], + [ + "zhua1" + ], + [ + "chu1" + ], + [ + "cheng2-xiao4" + ], + null, + [ + "Zhong1-Gong4-Zhong1-yang1" + ], + [ + "zheng4-zhi4-ju2" + ], + [ + "chang2-wei3" + ], + null, + [ + "zhong1-yang1" + ], + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "ling3-dao3" + ], + [ + "xiao3-zu3" + ], + [ + "fu4" + ], + [ + "zu3-zhang3" + ], + [ + "li3" + ], + [ + "ke4-qiang2" + ], + null, + [ + "Liu2" + ], + null, + null, + [ + "zhang1" + ], + [ + "Gao1-li2" + ], + [ + "chu1-xi2" + ], + [ + "hui4-yi4" + ], + null, + [ + "hui4-yi4" + ], + [ + "ting1-qu3" + ], + [ + "le0" + ], + [ + "jing1-ji4" + ], + [ + "ti3-zhi4" + ], + [ + "he1" + ], + [ + "sheng1-tai4" + ], + [ + "wen2-ming2" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "zhuan1-xiang4" + ], + [ + "xiao3-zu3" + ], + [ + "guan1-yu2" + ], + [ + "sheng1-tai4" + ], + [ + "wen2-ming2" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "zong3-ti3" + ], + [ + "fang1-an4" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "she4-hui4" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "zhuan1-xiang4" + ], + [ + "xiao3-zu3" + ], + [ + "guan1-yu2" + ], + [ + "si1-fa3" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "dang3" + ], + [ + "de0" + ], + [ + "ji4-lv4" + ], + [ + "jian3-cha2" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "zhuan1-xiang4" + ], + [ + "xiao3-zu3" + ], + [ + "guan1-yu2" + ], + [ + "dang3" + ], + [ + "de0" + ], + [ + "ji4-lv4" + ], + [ + "jian3-cha2" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "quan2-guo2" + ], + [ + "Ren2-Da4" + ], + [ + "chang2-wei3-hui4" + ], + [ + "fa3" + ], + [ + "gong1-wei3" + ], + [ + "guan1-yu2" + ], + [ + "li4-fa3" + ], + [ + "zhu3-dong4" + ], + [ + "shi4-ying4" + ], + [ + "gai3-ge2" + ], + [ + "xu1-yao4" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "ke1-ji4" + ], + [ + "bu4" + ], + [ + "guan1-yu2" + ], + [ + "shen1-hua4" + ], + [ + "ke1-ji4" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "Gong1-an1-bu4" + ], + [ + "guan1-yu2" + ], + [ + "shen1-hua4" + ], + [ + "gong1-an1" + ], + [ + "gai3-ge2" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "Shang4-hai3" + ], + [ + "shi4" + ], + [ + "guan1-yu2" + ], + [ + "tui1-jin4" + ], + [ + "luo4-shi2" + ], + [ + "zhong1-yang1" + ], + [ + "bu4-shu3" + ], + [ + "gai3-ge2" + ], + [ + "shi4-dian3" + ], + [ + "ren4-wu0" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + null, + [ + "guan1-yu2" + ], + [ + "jian4-li4" + ], + [ + "he1" + ], + [ + "shi2-shi1" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "du1-cha2" + ], + [ + "ji1-zhi4" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + null, + [ + "san1" + ], + null, + [ + "guan1-yu2" + ], + [ + "shen1-hua4" + ], + [ + "yi1-yao4" + ], + [ + "wei4-sheng1" + ], + [ + "ti3-zhi4" + ], + [ + "gai3-ge2" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + null, + [ + "kai1-hua0" + ], + [ + "xian4" + ], + [ + "guan1-yu2" + ], + null, + null, + [ + "ge3" + ], + [ + "yi1" + ], + null, + [ + "shi4-dian3" + ], + [ + "qing2-kuang4" + ], + [ + "hui4-bao4" + ], + null, + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "bi4-xu1" + ], + [ + "you3" + ], + [ + "qi4-shi4" + ], + [ + "hui4-yi4" + ], + [ + "qiang2-diao4" + ], + null, + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "shi4" + ], + [ + "xi4-tong3-gong1-cheng2" + ], + null, + [ + "tou2-xu4" + ], + [ + "duo1" + ], + null, + [ + "ren4-wu0" + ], + [ + "chong2" + ], + null, + [ + "shang4-lai0" + ], + [ + "jiu4" + ], + [ + "bi4-xu1" + ], + [ + "you3" + ], + [ + "qi4-shi4" + ], + null, + [ + "xian1" + ], + [ + "ji2-zhong1" + ], + [ + "li4-liang0" + ], + [ + "ba3" + ], + [ + "zhu3-yao4" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "tui1-chu1" + ], + [ + "lai2" + ], + null, + [ + "ran2-hou4" + ], + [ + "ji2-zhong1" + ], + [ + "li4-liang0" + ], + [ + "yi1" + ], + [ + "xiang4" + ], + [ + "yi1" + ], + [ + "xiang4" + ], + [ + "zhua1-hao3" + ], + [ + "luo4-shi2" + ], + null, + [ + "dang3" + ], + [ + "de0" + ], + [ + "shi2-ba1" + ], + [ + "jie4" + ], + null, + [ + "yi3-lai2" + ], + null, + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "chu1-tai2" + ], + [ + "de0" + ], + [ + "shu4-liang4" + ], + [ + "zhi1" + ], + [ + "duo1" + ], + null, + [ + "li4-du0" + ], + [ + "zhi1" + ], + [ + "da4" + ], + [ + "qian2-suo3-wei4-you3" + ], + null, + [ + "zhua1" + ], + [ + "luo4-shi2" + ], + [ + "de0" + ], + [ + "ren4-wu0" + ], + null, + null, + [ + "ya1-li4" + ], + [ + "zhi1" + ], + [ + "da4" + ], + [ + "ye3" + ], + [ + "qian2-suo3-wei4-you3" + ], + null, + null, + null, + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "shi4" + ], + [ + "hao1" + ], + [ + "de0" + ], + null, + [ + "yi3-jing0" + ], + [ + "chu1-tai2" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "da4-duo1" + ], + [ + "yi3" + ], + [ + "jin4-ru4" + ], + [ + "luo4-shi2" + ], + [ + "jie1-duan4" + ], + null, + [ + "you3-xie1" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "yi3" + ], + null, + [ + "le0" + ], + [ + "de0" + ], + null, + [ + "za1" + ], + [ + "le0" + ], + [ + "gen1" + ], + null, + [ + "kai1" + ], + [ + "le0" + ], + [ + "hua1" + ], + null, + [ + "you3-xie1" + ], + [ + "zai4" + ], + [ + "di4-fang0" + ], + [ + "he1" + ], + [ + "bu4-men2" + ], + [ + "xing2-cheng2" + ], + [ + "le0" + ], + null, + null, + [ + "de0" + ], + [ + "zhi4-du4" + ], + [ + "an1-pai2" + ], + null, + [ + "you3" + ], + [ + "xie1" + ], + [ + "tong1-guo4" + ], + [ + "shi4-dian3" + ], + [ + "tan4-suo3" + ], + [ + "zong3-jie2" + ], + [ + "chu1" + ], + [ + "le0" + ], + [ + "ke3" + ], + [ + "fu4-zhi4" + ], + [ + "ke3" + ], + [ + "tui1-guang3" + ], + [ + "de0" + ], + [ + "jing1-yan4" + ], + null, + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "zong3-ti3" + ], + [ + "shi4" + ], + [ + "hao1" + ], + [ + "de0" + ], + [ + "hui4-yi4" + ], + [ + "zhi3-chu1" + ], + null, + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + null, + [ + "yao1" + ], + [ + "zun1-xun2" + ], + [ + "gai3-ge2" + ], + [ + "gui1-lv4" + ], + [ + "he1" + ], + [ + "te4-dian3" + ], + null, + [ + "jian4-li4" + ], + [ + "quan2" + ], + [ + "guo4-cheng2" + ], + null, + [ + "gao1" + ], + [ + "xiao4-lv4" + ], + null, + [ + "ke3" + ], + [ + "he2-shi2" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "ji1-zhi4" + ], + null, + [ + "tui1-dong4" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "zao3" + ], + [ + "lao4-di4" + ], + null, + [ + "jian4" + ], + [ + "shi2-xiao4" + ], + null, + [ + "yi1" + ], + [ + "yao1" + ], + null, + [ + "ze2-ren4" + ], + null, + [ + "fan2-shi4" + ], + [ + "cheng2-dan1" + ], + [ + "gai3-ge2" + ], + [ + "ren4-wu0" + ], + [ + "de0" + ], + [ + "di4-fang0" + ], + [ + "he1" + ], + [ + "bu4-men2" + ], + null, + [ + "dou1" + ], + [ + "yao1" + ], + null, + null, + null, + null, + [ + "jin4-ze2" + ], + null, + [ + "ge3" + ], + [ + "jiu4" + ], + [ + "ge4-wei4" + ], + null, + null, + null, + [ + "qian1-tou2" + ], + [ + "bu4-men2" + ], + [ + "dui4" + ], + [ + "jing1-ban4" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "yao1" + ], + [ + "quan2-cheng2" + ], + [ + "guo4-wen4" + ], + null, + [ + "quan2-cheng2" + ], + [ + "fu4-ze2" + ], + null, + null, + [ + "dao4-di3" + ], + null, + [ + "di4-fang0" + ], + [ + "dang3-wei3" + ], + [ + "yao1" + ], + [ + "tong3-chou2" + ], + [ + "hao1" + ], + [ + "zhong1-yang1" + ], + [ + "he1" + ], + [ + "di4-fang0" + ], + [ + "liang3" + ], + [ + "ge0" + ], + [ + "ceng2-mian4" + ], + [ + "de0" + ], + [ + "yao1-qiu2" + ], + null, + [ + "zhua1-hao3" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "luo4-shi2" + ], + null, + [ + "er4" + ], + [ + "yao1" + ], + [ + "zhua1" + ], + [ + "du1-ban4" + ], + [ + "xie2-tiao2" + ], + null, + [ + "ba3" + ], + [ + "bu4-men2" + ], + [ + "xie2-tiao2" + ], + [ + "nan2-du4" + ], + [ + "da4" + ], + null, + [ + "zheng4-ce4" + ], + null, + [ + "gao1" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "zuo4-wei2" + ], + [ + "zhong4-dian3" + ], + null, + [ + "mou2-hua4" + ], + [ + "gai3-ge2" + ], + [ + "ju3-cuo4" + ], + [ + "chu1-tai2" + ], + [ + "shi2-ji1" + ], + [ + "he1" + ], + [ + "jie2-zou4" + ], + null, + [ + "xie2-tiao2" + ], + [ + "jie3-jue2" + ], + [ + "gai3-ge2" + ], + [ + "tui1-jin4" + ], + [ + "zhong1" + ], + [ + "de0" + ], + [ + "mao2-dun4" + ], + [ + "he1" + ], + [ + "wen4-ti2" + ], + null, + [ + "dui4" + ], + [ + "fu1-yan0-se4-ze2" + ], + null, + [ + "tuo1-yan2" + ], + [ + "che3-pi2" + ], + null, + [ + "lv3" + ], + [ + "tui1" + ], + [ + "bu0" + ], + [ + "dong4" + ], + [ + "de0" + ], + null, + [ + "dui4" + ], + [ + "zhong4-shi4" + ], + [ + "bu4-gou4" + ], + null, + [ + "yan2-jiu1" + ], + [ + "shen4" + ], + [ + "shao3" + ], + null, + [ + "guan4-che4" + ], + [ + "fa2-li4" + ], + [ + "de0" + ], + null, + [ + "yao1" + ], + [ + "jin4-xing2" + ], + null, + null, + [ + "san1" + ], + [ + "yao1" + ], + [ + "zhua1" + ], + [ + "du1-cha2" + ], + [ + "luo4-shi2" + ], + null, + [ + "qiang2-hua4" + ], + [ + "du1" + ], + null, + [ + "neng2" + ], + null, + [ + "jian4-quan2" + ], + [ + "du1-cha2" + ], + [ + "ji1-zhi4" + ], + null, + [ + "zhua1-jin3" + ], + null, + [ + "shang4-xia4" + ], + [ + "guan4-tong1" + ], + null, + [ + "heng2-xiang4" + ], + null, + [ + "de0" + ], + [ + "du1-cha2" + ], + [ + "gong1-zuo4" + ], + [ + "ge2-ju2" + ], + null, + [ + "yao1" + ], + [ + "zhong4-shi4" + ], + [ + "du1-cha2" + ], + [ + "jie1-guo3" + ], + [ + "de0" + ], + [ + "yun4-yong4" + ], + null, + [ + "fa1-xian4" + ], + [ + "wen4-ti2" + ], + [ + "de0" + ], + [ + "yao1" + ], + [ + "lie4-chu1" + ], + [ + "qing1-dan1" + ], + null, + [ + "ming2-que4" + ], + [ + "ze2-ren4" + ], + null, + [ + "xian4-ding4" + ], + [ + "shi2-jian1" + ], + null, + null, + [ + "zheng3-gai3" + ], + null, + [ + "ge3" + ], + [ + "di4-qu1" + ], + [ + "ge3" + ], + [ + "bu4-men2" + ], + [ + "yao1" + ], + [ + "que4-ding4" + ], + [ + "yi1" + ], + [ + "pi1" + ], + [ + "zhong4-dian3" + ], + [ + "gai3-ge2" + ], + [ + "du1-cha2" + ], + [ + "xiang4-mu4" + ], + null, + [ + "da4-li4" + ], + [ + "zhua1" + ], + [ + "du1-cha2" + ], + [ + "luo4-shi2" + ], + null, + [ + "xing2-cheng2" + ], + [ + "quan2-dang3" + ], + [ + "shang4-xia4" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "de0" + ], + [ + "ju2-mian4" + ], + null, + [ + "si4" + ], + [ + "yao1" + ], + [ + "zhua1" + ], + [ + "wan2-shan4" + ], + [ + "ji1-zhi4" + ], + null, + [ + "zhua1-jin3" + ], + [ + "wan2-shan4" + ], + [ + "du1-ban4" + ], + [ + "xie2-tiao2" + ], + null, + [ + "du1-cha2" + ], + [ + "luo4-shi2" + ], + null, + [ + "kao3-ping2" + ], + [ + "ji1-li4" + ], + null, + [ + "ze2-ren4" + ], + [ + "zhui1-jiu1" + ], + [ + "deng3" + ], + [ + "gong1-zuo4" + ], + [ + "ji1-zhi4" + ], + null, + [ + "wu3" + ], + [ + "yao1" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "cheng2-xiao4" + ], + null, + [ + "ba3" + ], + [ + "shi4-fou3" + ], + [ + "cu4-jin4" + ], + [ + "jing1-ji4" + ], + [ + "she4-hui4" + ], + [ + "fa1-zhan3" + ], + null, + [ + "shi4-fou3" + ], + [ + "gei3" + ], + [ + "ren2-min2" + ], + [ + "qun2-zhong4" + ], + [ + "dai4-lai2" + ], + [ + "shi2-shi2-zai4-zai4" + ], + [ + "de0" + ], + [ + "huo4-de2" + ], + [ + "gan3" + ], + null, + [ + "zuo4-wei2" + ], + [ + "gai3-ge2" + ], + [ + "cheng2-xiao4" + ], + [ + "de0" + ], + [ + "ping2-jia4" + ], + [ + "biao1-zhun3" + ], + null, + [ + "zhu4-yi4" + ], + [ + "ba3" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "luo4-shi2" + ], + [ + "tong2" + ], + [ + "luo4-shi2" + ], + null, + [ + "si4" + ], + [ + "ge0" + ], + [ + "quan2-mian4" + ], + null, + [ + "zhan4-lve4" + ], + [ + "bu4-ju2" + ], + null, + [ + "luo4-shi2" + ], + [ + "xin1" + ], + [ + "fa1-zhan3" + ], + [ + "li3-nian4" + ], + [ + "jie2-he2" + ], + [ + "qi3-lai0" + ], + null, + [ + "tong2" + ], + [ + "zhua1" + ], + [ + "jing1-ji4" + ], + [ + "fa1-zhan3" + ], + null, + [ + "she4-hui4" + ], + [ + "wen3-ding4" + ], + null, + [ + "min2-sheng1" + ], + [ + "gai3-shan4" + ], + null, + [ + "dang3" + ], + [ + "de0" + ], + [ + "jian4-she4" + ], + [ + "deng3" + ], + [ + "gong1-zuo4" + ], + [ + "jie2-he2" + ], + [ + "qi3-lai0" + ], + null, + [ + "ji4" + ], + [ + "yao1" + ], + [ + "tong1-guo4" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + [ + "lai2" + ], + [ + "cu4" + ], + [ + "fa1-zhan3" + ], + null, + [ + "you4" + ], + [ + "yao1" + ], + [ + "wei2-rao4" + ], + [ + "mou2" + ], + [ + "fa1-zhan3" + ], + [ + "lai2" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + null, + [ + "liu4" + ], + [ + "yao1" + ], + [ + "zhua1" + ], + [ + "cheng2-guo3" + ], + [ + "gong3-gu4" + ], + null, + [ + "ji2-shi2" + ], + [ + "zong3-jie2" + ], + [ + "tui1-guang3" + ], + [ + "gai3-ge2" + ], + [ + "jing1-yan4" + ], + null, + [ + "ba3" + ], + [ + "ge4-xiang4" + ], + [ + "cheng2-guo3" + ], + [ + "zong3-jie2" + ], + [ + "hao1" + ], + null, + [ + "gong3-gu4" + ], + [ + "hao1" + ], + null, + [ + "fa1-zhan3" + ], + [ + "hao1" + ], + null, + [ + "nu3-li4" + ], + [ + "shi3" + ], + [ + "shi2-jian4" + ], + [ + "cheng2-guo3" + ], + [ + "shang0" + ], + null, + [ + "zhi4-du4" + ], + [ + "cheng2-guo3" + ], + null, + [ + "bu4-shu3" + ], + [ + "gai3-ge2" + ], + [ + "shi4-dian3" + ], + [ + "yao1" + ], + [ + "mu4-di0" + ], + [ + "ming2-que4" + ], + null, + [ + "zuo4-dao4" + ], + [ + "ke3" + ], + [ + "fu4-zhi4" + ], + [ + "ke3" + ], + [ + "tui1-guang3" + ], + null, + [ + "bu4-yao4" + ], + [ + "yin3-dao3" + ], + [ + "dao4" + ], + [ + "fa1" + ], + [ + "mao4-zi0" + ], + null, + [ + "zheng1" + ], + [ + "zheng4-ce4" + ], + null, + [ + "yao1" + ], + [ + "zi1-jin1" + ], + null, + [ + "gao3" + ], + [ + "xiang4-mu4" + ], + [ + "de0" + ], + [ + "fang1-xiang4" + ], + [ + "shang0" + ], + null, + [ + "cu4-jin4" + ], + [ + "pa1" + ], + [ + "shi2-gan4" + ], + [ + "jia0" + ], + [ + "hui4-yi4" + ], + [ + "qiang2-diao4" + ], + null, + [ + "yong1-hu4" + ], + [ + "gai3-ge2" + ], + null, + [ + "zhi1-chi2" + ], + [ + "gai3-ge2" + ], + null, + [ + "gan3-yu2" + ], + [ + "dan1-dang1" + ], + [ + "de0" + ], + [ + "jiu4" + ], + [ + "shi4" + ], + [ + "cu4-jin4" + ], + [ + "pa1" + ], + null, + [ + "ba3" + ], + [ + "gai3-ge2" + ], + [ + "zhua1" + ], + [ + "zai4" + ], + [ + "shou3-shang0" + ], + null, + null, + null, + [ + "gan1" + ], + [ + "chu1" + ], + [ + "cheng2-xiao4" + ], + [ + "de0" + ], + [ + "jiu4" + ], + [ + "shi4" + ], + [ + "shi2-gan4" + ], + [ + "jia0" + ], + null, + [ + "ge3" + ], + [ + "di4-qu1" + ], + [ + "ge3" + ], + [ + "bu4-men2" + ], + [ + "de0" + ], + [ + "zhu3-yao4" + ], + [ + "fu4-ze2" + ], + [ + "tong2-zhi4" + ], + null, + [ + "dui4" + ], + [ + "zhua1" + ], + [ + "gai3-ge2" + ], + null, + [ + "zhua1" + ], + [ + "luo4-shi2" + ], + [ + "fu4-you3" + ], + [ + "zhi2-jie1" + ], + [ + "ze2-ren4" + ], + null, + [ + "yao1" + ], + [ + "qin1-zi4" + ], + [ + "zhua1" + ], + [ + "mou2-hua4" + ], + null, + [ + "zhua1" + ], + [ + "bu4-shu3" + ], + null, + [ + "zhua1" + ], + [ + "du1-cha2" + ], + null, + [ + "zhua1" + ], + [ + "luo4-shi2" + ], + null, + [ + "dui4" + ], + [ + "zhong1-yang1" + ], + [ + "bu4-shu3" + ], + [ + "de0" + ], + [ + "gai3-ge2" + ], + [ + "ren4-wu0" + ], + null, + [ + "yao1" + ], + [ + "gao1-du4" + ], + [ + "zhong4-shi4" + ], + null, + null, + [ + "wei2" + ], + null, + [ + "zhong1-yang1" + ], + [ + "you3" + ], + [ + "ju4-ti3" + ], + [ + "yao1-qiu2" + ], + [ + "de0" + ], + null, + [ + "yao1" + ], + [ + "yi1" + ], + [ + "gan1-zi0" + ], + [ + "cha1" + ], + [ + "dao4-di3" + ], + null, + [ + "bu4-zhe2-bu4-kou4" + ], + [ + "luo4-shi2" + ], + [ + "xia4-qu0" + ], + null, + [ + "zhong1-yang1" + ], + [ + "ti2-chu1" + ], + [ + "yuan2-ze2" + ], + [ + "yao1-qiu2" + ], + [ + "de0" + ], + null, + [ + "yao1" + ], + [ + "jie2-he2" + ], + [ + "shi2-ji4" + ], + [ + "jin4-xing2" + ], + null, + null, + null, + [ + "li4-zu2" + ], + [ + "quan2-ju2" + ], + [ + "zong3-jie2" + ], + [ + "jing1-yan4" + ], + [ + "diao4-cha2" + ], + [ + "yan2-jiu1" + ], + [ + "dui4" + ], + [ + "ben3" + ], + [ + "di4-qu1" + ], + [ + "ben3" + ], + [ + "bu4-men2" + ], + [ + "gai3-ge2" + ], + [ + "ren4-wu0" + ], + null, + [ + "ji4" + ], + [ + "yao1" + ], + [ + "zhua1-jin3" + ], + [ + "tui1-jin4" + ], + null, + [ + "gan3-yu2" + ], + [ + "tu1-po4" + ], + null, + [ + "you4" + ], + [ + "yao1" + ], + [ + "li4-zu2" + ], + [ + "quan2-ju2" + ], + null, + [ + "tong1-pan2" + ], + [ + "kao3-lv4" + ], + null, + [ + "shi4" + ], + [ + "xian4" + ], + [ + "yi1-ji2" + ], + [ + "yao1" + ], + [ + "zhu4-yi4" + ], + null, + null, + [ + "chuang4-xin1" + ], + [ + "gong1-zuo4" + ], + [ + "fang1-fa3" + ], + null, + [ + "ba3" + ], + [ + "jing1-li4" + ], + [ + "ji2-zhong1" + ], + [ + "zai4" + ], + [ + "da3-tong1" + ], + null, + [ + "zui4-hou4" + ], + [ + "yi1" + ], + [ + "gong1-li3" + ], + null, + [ + "shang0" + ], + null, + [ + "yao1" + ], + [ + "zong3-jie2" + ], + [ + "ge4-di4" + ], + [ + "chuang4-zao4" + ], + [ + "de0" + ], + [ + "xin1-xian1" + ], + [ + "jing1-yan4" + ], + null, + [ + "fa1-hui1" + ], + [ + "hao1" + ], + [ + "xian1-jin4" + ], + [ + "dian3-xing2" + ], + [ + "de0" + ], + [ + "shi4-fan4" + ], + [ + "yin3" + ], + [ + "ling3" + ], + [ + "zuo4-yong4" + ], + null, + [ + "yao1" + ], + [ + "zhong4-shi4" + ], + [ + "diao4-cha2" + ], + [ + "yan2-jiu1" + ], + null, + [ + "jian1-chi2" + ], + [ + "yan3-jing0" + ], + [ + "xiang4" + ], + [ + "xia4" + ], + null, + [ + "jiao3-bu4" + ], + [ + "xiang4" + ], + [ + "xia4" + ], + null, + [ + "liao3-jie3" + ], + [ + "ji1-ceng2" + ], + [ + "qun2-zhong4" + ], + [ + "suo3" + ], + [ + "sai1" + ], + null, + [ + "suo3" + ], + [ + "xiang3" + ], + null, + [ + "suo3" + ], + [ + "pan4" + ], + null, + [ + "shi3" + ], + [ + "gai3-ge2" + ], + [ + "geng1" + ], + [ + "jie1-di4" + ], + [ + "qi4" + ], + null, + [ + "xing2-cheng2" + ], + [ + "liang2-hao3" + ], + [ + "feng1-shang4" + ], + [ + "hui4-yi4" + ], + [ + "zhi3-chu1" + ], + null, + [ + "ge4-ji2" + ], + [ + "dang3-wei3" + ], + [ + "yao1" + ], + [ + "zhuo2-li4" + ], + [ + "ti2-gao1" + ], + [ + "ling3-dao3" + ], + [ + "gan4-bu4" + ], + [ + "mou2-hua4" + ], + null, + [ + "tui1-dong4" + ], + null, + [ + "luo4-shi2" + ], + [ + "gai3-ge2" + ], + [ + "de0" + ], + [ + "neng2-li4" + ], + null, + [ + "yin3-dao3" + ], + [ + "gan4-bu4" + ], + [ + "shu4-li4" + ], + [ + "yu2" + ], + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "xiang1" + ], + [ + "shi4-ying4" + ], + [ + "de0" + ], + [ + "si1-xiang3" + ], + [ + "zuo4-feng1" + ], + [ + "he1" + ], + [ + "dan1-dang1" + ], + [ + "jing1-shen0" + ], + null, + [ + "ji4" + ], + [ + "gu3-li4" + ], + [ + "chuang4-xin1" + ], + null, + [ + "biao3-yang2" + ], + [ + "xian1-jin4" + ], + null, + [ + "ye3" + ], + [ + "yun3-xu3" + ], + null, + null, + [ + "kuan1-rong2" + ], + [ + "shi1-bai4" + ], + null, + [ + "zui4" + ], + [ + "da4" + ], + [ + "xian4-du4" + ], + [ + "diao4-dong4" + ], + [ + "guang3-da4" + ], + [ + "gan4-bu4" + ], + [ + "de0" + ], + [ + "ji1-ji2-xing4" + ], + null, + [ + "zhu3-dong4-xing4" + ], + null, + [ + "chuang4-zao4-xing4" + ], + null, + [ + "tui1-dong4" + ], + [ + "quan2" + ], + [ + "she4-hui4" + ], + [ + "xing2-cheng2" + ], + [ + "xiang3" + ], + [ + "gai3-ge2" + ], + null, + [ + "gan3" + ], + [ + "gai3-ge2" + ], + null, + [ + "shan4" + ], + [ + "gai3-ge2" + ], + [ + "de0" + ], + [ + "liang2-hao3" + ], + [ + "feng1-shang4" + ], + null, + [ + "zhong1-yang1" + ], + [ + "quan2-mian4" + ], + [ + "shen1-hua4" + ], + [ + "gai3-ge2" + ], + [ + "ling3-dao3" + ], + [ + "xiao3-zu3" + ], + [ + "cheng2-yuan2" + ], + [ + "chu1-xi2" + ], + null, + [ + "zhong1-yang1" + ], + [ + "he1" + ], + [ + "guo2-jia1" + ], + [ + "you3-guan1" + ], + [ + "bu4-men2" + ], + [ + "yi3-ji2" + ], + [ + "you3-guan1" + ], + [ + "di4-fang0" + ], + [ + "fu4-ze2" + ], + [ + "tong2-zhi4" + ], + [ + "lie4-xi2" + ], + [ + "hui4-yi4" + ], + null ], "lemmas": [ - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "同普", - "text": "同普" - }, - { - "lemma": "京", - "text": "京" - }, - { - "lemma": "会谈", - "text": "会谈" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "签", - "text": "签" - }, - { - "lemma": "2", - "text": "2" - }, - { - "lemma": "份", - "text": "份" - }, - { - "lemma": "联合", - "text": "联合" - }, - { - "lemma": "声明", - "text": "声明" - }, - { - "lemma": "人民日报", - "text": "人民日报" - }, - { - "lemma": "全", - "text": "全" - }, - { - "lemma": "媒体", - "text": "媒体" - }, - { - "lemma": "平台", - "text": "平台" - }, - { - "lemma": "莫斯科", - "text": "莫斯科" - }, - { - "lemma": "5月", - "text": "5月" - }, - { - "lemma": "8日", - "text": "8日" - }, - { - "lemma": "电", - "text": "电" - }, - { - "lemma": "(", - "text": "(" - }, - { - "lemma": "记者", - "text": "记者" - }, - { - "lemma": "杜", - "text": "杜" - }, - { - "lemma": "尚泽", - "text": "尚泽" - }, - { - "lemma": ")", - "text": ")" - }, - { - "lemma": "当地", - "text": "当地" - }, - { - "lemma": "时间", - "text": "时间" - }, - { - "lemma": "5月", - "text": "5月" - }, - { - "lemma": "8日", - "text": "8日" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "国家", - "text": "国家" - }, - { - "lemma": "主席", - "text": "主席" - }, - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "莫斯科克里姆林宫", - "text": "莫斯科克里姆林宫" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "俄罗斯", - "text": "俄罗斯" - }, - { - "lemma": "总统", - "text": "总统" - }, - { - "lemma": "普京", - "text": "普京" - }, - { - "lemma": "举行", - "text": "举行" - }, - { - "lemma": "会谈", - "text": "会谈" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "普京", - "text": "普京" - }, - { - "lemma": "热烈", - "text": "热烈" - }, - { - "lemma": "欢迎", - "text": "欢迎" - }, - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "应邀", - "text": "应邀" - }, - { - "lemma": "前来", - "text": "前来" - }, - { - "lemma": "出席", - "text": "出席" - }, - { - "lemma": "纪念卫", - "text": "纪念卫" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "战争", - "text": "战争" - }, - { - "lemma": "胜利", - "text": "胜利" - }, - { - "lemma": "70", - "text": "70" - }, - { - "lemma": "周年", - "text": "周年" - }, - { - "lemma": "庆典", - "text": "庆典" - }, - { - "lemma": "并", - "text": "并" - }, - { - "lemma": "访问", - "text": "访问" - }, - { - "lemma": "俄罗斯", - "text": "俄罗斯" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "感谢", - "text": "感谢" - }, - { - "lemma": "普京", - "text": "普京" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "盛情", - "text": "盛情" - }, - { - "lemma": "邀请", - "text": "邀请" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "元首", - "text": "元首" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "亲切", - "text": "亲切" - }, - { - "lemma": "友好", - "text": "友好" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "气氛", - "text": "气氛" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "就", - "text": "就" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "关系", - "text": "关系" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "彼此", - "text": "彼此" - }, - { - "lemma": "关心", - "text": "关心" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "重大", - "text": "重大" - }, - { - "lemma": "国际", - "text": "国际" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "地区", - "text": "地区" - }, - { - "lemma": "问题", - "text": "问题" - }, - { - "lemma": "充分", - "text": "充分" - }, - { - "lemma": "交换", - "text": "交换" - }, - { - "lemma": "意见", - "text": "意见" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "一致", - "text": "一致" - }, - { - "lemma": "同意", - "text": "同意" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "要", - "text": "要" - }, - { - "lemma": "共同", - "text": "共同" - }, - { - "lemma": "维护", - "text": "维护" - }, - { - "lemma": "第二", - "text": "第二" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "世界大战", - "text": "世界大战" - }, - { - "lemma": "胜利", - "text": "胜利" - }, - { - "lemma": "成果", - "text": "成果" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "国际", - "text": "国际" - }, - { - "lemma": "公平", - "text": "公平" - }, - { - "lemma": "正义", - "text": "正义" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "推进", - "text": "推进" - }, - { - "lemma": "丝绸之路", - "text": "丝绸之路" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "带", - "text": "带" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "欧亚", - "text": "欧亚" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "联盟", - "text": "联盟" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "对接", - "text": "对接" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "指出", - "text": "指出" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "很", - "text": "很" - }, - { - "lemma": "高兴", - "text": "高兴" - }, - { - "lemma": "来", - "text": "来" - }, - { - "lemma": "莫斯科", - "text": "莫斯科" - }, - { - "lemma": "出席", - "text": "出席" - }, - { - "lemma": "纪念卫", - "text": "纪念卫" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "战争", - "text": "战争" - }, - { - "lemma": "胜利", - "text": "胜利" - }, - { - "lemma": "70", - "text": "70" - }, - { - "lemma": "周年", - "text": "周年" - }, - { - "lemma": "庆典", - "text": "庆典" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "中国", - "text": "中国" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "俄罗斯", - "text": "俄罗斯" - }, - { - "lemma": "分别", - "text": "分别" - }, - { - "lemma": "是", - "text": "是" - }, - { - "lemma": "第二", - "text": "第二" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "世界大战", - "text": "世界大战" - }, - { - "lemma": "亚洲", - "text": "亚洲" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "欧洲", - "text": "欧洲" - }, - { - "lemma": "主战场", - "text": "主战场" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "都", - "text": "都" - }, - { - "lemma": "为", - "text": "为" - }, - { - "lemma": "取得", - "text": "取得" - }, - { - "lemma": "第二", - "text": "第二" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "世界大战", - "text": "世界大战" - }, - { - "lemma": "最终", - "text": "最终" - }, - { - "lemma": "胜利", - "text": "胜利" - }, - { - "lemma": "付出", - "text": "付出" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "巨大", - "text": "巨大" - }, - { - "lemma": "牺牲", - "text": "牺牲" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "作出", - "text": "作出" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "重大", - "text": "重大" - }, - { - "lemma": "贡献", - "text": "贡献" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "人民", - "text": "人民" - }, - { - "lemma": "也", - "text": "也" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "并肩", - "text": "并肩" - }, - { - "lemma": "战斗", - "text": "战斗" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "结", - "text": "结" - }, - { - "lemma": "下", - "text": "下" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "深厚", - "text": "深厚" - }, - { - "lemma": "友谊", - "text": "友谊" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "今年", - "text": "今年" - }, - { - "lemma": "分别", - "text": "分别" - }, - { - "lemma": "举办", - "text": "举办" - }, - { - "lemma": "第二", - "text": "第二" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "世界大战", - "text": "世界大战" - }, - { - "lemma": "胜利", - "text": "胜利" - }, - { - "lemma": "70", - "text": "70" - }, - { - "lemma": "周年", - "text": "周年" - }, - { - "lemma": "系列", - "text": "系列" - }, - { - "lemma": "庆祝", - "text": "庆祝" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "纪念", - "text": "纪念" - }, - { - "lemma": "活动", - "text": "活动" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "目的", - "text": "目的" - }, - { - "lemma": "是", - "text": "是" - }, - { - "lemma": "铭记", - "text": "铭记" - }, - { - "lemma": "历史", - "text": "历史" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "缅怀", - "text": "缅怀" - }, - { - "lemma": "先烈", - "text": "先烈" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "更是", - "text": "更是" - }, - { - "lemma": "要", - "text": "要" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "各国", - "text": "各国" - }, - { - "lemma": "人民", - "text": "人民" - }, - { - "lemma": "一道", - "text": "一道" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "珍爱", - "text": "珍爱" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "维护", - "text": "维护" - }, - { - "lemma": "来之不易", - "text": "来之不易" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "和平", - "text": "和平" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "共", - "text": "共" - }, - { - "lemma": "创", - "text": "创" - }, - { - "lemma": "全", - "text": "全" - }, - { - "lemma": "人类", - "text": "人类" - }, - { - "lemma": "和平", - "text": "和平" - }, - { - "lemma": "与", - "text": "与" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "美好", - "text": "美好" - }, - { - "lemma": "未来", - "text": "未来" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "强调", - "text": "强调" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "我们", - "text": "我们" - }, - { - "lemma": "愿", - "text": "愿" - }, - { - "lemma": "深化", - "text": "深化" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "俄罗斯", - "text": "俄罗斯" - }, - { - "lemma": "人民", - "text": "人民" - }, - { - "lemma": "传统", - "text": "传统" - }, - { - "lemma": "友谊", - "text": "友谊" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "推进", - "text": "推进" - }, - { - "lemma": "双方", - "text": "双方" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": "战略", - "text": "战略" - }, - { - "lemma": "对接", - "text": "对接" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "规划", - "text": "规划" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "友好", - "text": "友好" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "新", - "text": "新" - }, - { - "lemma": "未来", - "text": "未来" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "推动", - "text": "推动" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "全面", - "text": "全面" - }, - { - "lemma": "战略", - "text": "战略" - }, - { - "lemma": "协作", - "text": "协作" - }, - { - "lemma": "伙伴", - "text": "伙伴" - }, - { - "lemma": "关系", - "text": "关系" - }, - { - "lemma": "继续", - "text": "继续" - }, - { - "lemma": "保持", - "text": "保持" - }, - { - "lemma": "高", - "text": "高" - }, - { - "lemma": "水平", - "text": "水平" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "促进", - "text": "促进" - }, - { - "lemma": "国际", - "text": "国际" - }, - { - "lemma": "秩序", - "text": "秩序" - }, - { - "lemma": "朝着", - "text": "朝着" - }, - { - "lemma": "更加", - "text": "更加" - }, - { - "lemma": "公正", - "text": "公正" - }, - { - "lemma": "合理", - "text": "合理" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "方向", - "text": "方向" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "维护", - "text": "维护" - }, - { - "lemma": "地区", - "text": "地区" - }, - { - "lemma": "及", - "text": "及" - }, - { - "lemma": "世界", - "text": "世界" - }, - { - "lemma": "和平", - "text": "和平" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "安全", - "text": "安全" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "稳定", - "text": "稳定" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "普京", - "text": "普京" - }, - { - "lemma": "高度", - "text": "高度" - }, - { - "lemma": "评价", - "text": "评价" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "关系", - "text": "关系" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": "水平", - "text": "水平" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "指出", - "text": "指出" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "是", - "text": "是" - }, - { - "lemma": "真正", - "text": "真正" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "全面", - "text": "全面" - }, - { - "lemma": "战略", - "text": "战略" - }, - { - "lemma": "协作", - "text": "协作" - }, - { - "lemma": "伙伴", - "text": "伙伴" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "各", - "text": "各" - }, - { - "lemma": "领域", - "text": "领域" - }, - { - "lemma": "各", - "text": "各" - }, - { - "lemma": "层面", - "text": "层面" - }, - { - "lemma": "都", - "text": "都" - }, - { - "lemma": "开展", - "text": "开展" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "卓有成效", - "text": "卓有成效" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "交流", - "text": "交流" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "普京", - "text": "普京" - }, - { - "lemma": "表示", - "text": "表示" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "我", - "text": "我" - }, - { - "lemma": "完全", - "text": "完全" - }, - { - "lemma": "赞同", - "text": "赞同" - }, - { - "lemma": "习", - "text": "习" - }, - { - "lemma": "近平", - "text": "近平" - }, - { - "lemma": "主席", - "text": "主席" - }, - { - "lemma": "对", - "text": "对" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "第二", - "text": "第二" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "世界大战", - "text": "世界大战" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "历史", - "text": "历史" - }, - { - "lemma": "贡献", - "text": "贡献" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "评价", - "text": "评价" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "今年", - "text": "今年" - }, - { - "lemma": "将", - "text": "将" - }, - { - "lemma": "举办", - "text": "举办" - }, - { - "lemma": "庆祝", - "text": "庆祝" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "纪念", - "text": "纪念" - }, - { - "lemma": "活动", - "text": "活动" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "反对", - "text": "反对" - }, - { - "lemma": "任何", - "text": "任何" - }, - { - "lemma": "企图", - "text": "企图" - }, - { - "lemma": "否认", - "text": "否认" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "歪曲", - "text": "歪曲" - }, - { - "lemma": "历史", - "text": "历史" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "图谋", - "text": "图谋" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "反对", - "text": "反对" - }, - { - "lemma": "任何", - "text": "任何" - }, - { - "lemma": "美化", - "text": "美化" - }, - { - "lemma": "法西斯", - "text": "法西斯" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "军国", - "text": "军国" - }, - { - "lemma": "主义", - "text": "主义" - }, - { - "lemma": "分子", - "text": "分子" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "抹黑", - "text": "抹黑" - }, - { - "lemma": "解放者", - "text": "解放者" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "行为", - "text": "行为" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "关于", - "text": "关于" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "务实", - "text": "务实" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "元首", - "text": "元首" - }, - { - "lemma": "商定", - "text": "商定" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "将", - "text": "将" - }, - { - "lemma": "中方", - "text": "中方" - }, - { - "lemma": "丝绸之路", - "text": "丝绸之路" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "带", - "text": "带" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "同", - "text": "同" - }, - { - "lemma": "俄方", - "text": "俄方" - }, - { - "lemma": "欧亚", - "text": "欧亚" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "联盟", - "text": "联盟" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "对接", - "text": "对接" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "从", - "text": "从" - }, - { - "lemma": "战略", - "text": "战略" - }, - { - "lemma": "高度", - "text": "高度" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "以", - "text": "以" - }, - { - "lemma": "更", - "text": "更" - }, - { - "lemma": "广", - "text": "广" - }, - { - "lemma": "视野", - "text": "视野" - }, - { - "lemma": "全面", - "text": "全面" - }, - { - "lemma": "扩大", - "text": "扩大" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "深化", - "text": "深化" - }, - { - "lemma": "双方", - "text": "双方" - }, - { - "lemma": "务实", - "text": "务实" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "扩大", - "text": "扩大" - }, - { - "lemma": "相互", - "text": "相互" - }, - { - "lemma": "开放", - "text": "开放" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "深化", - "text": "深化" - }, - { - "lemma": "利益", - "text": "利益" - }, - { - "lemma": "交融", - "text": "交融" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "更", - "text": "更" - }, - { - "lemma": "好", - "text": "好" - }, - { - "lemma": "促进", - "text": "促进" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": "振兴", - "text": "振兴" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "拓展", - "text": "拓展" - }, - { - "lemma": "欧", - "text": "欧" - }, - { - "lemma": "亚", - "text": "亚" - }, - { - "lemma": "共同", - "text": "共同" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "空间", - "text": "空间" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "带动", - "text": "带动" - }, - { - "lemma": "整个", - "text": "整个" - }, - { - "lemma": "欧", - "text": "欧" - }, - { - "lemma": "亚", - "text": "亚" - }, - { - "lemma": "大陆", - "text": "大陆" - }, - { - "lemma": "发展", - "text": "发展" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "稳定", - "text": "稳定" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "元首", - "text": "元首" - }, - { - "lemma": "同意", - "text": "同意" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "挖掘", - "text": "挖掘" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "潜力", - "text": "潜力" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "优势", - "text": "优势" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "扩大", - "text": "扩大" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "能源", - "text": "能源" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "农业", - "text": "农业" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "高铁", - "text": "高铁" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "航空", - "text": "航空" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "航天", - "text": "航天" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "金融", - "text": "金融" - }, - { - "lemma": "投资", - "text": "投资" - }, - { - "lemma": "领域", - "text": "领域" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "基础", - "text": "基础" - }, - { - "lemma": "设施", - "text": "设施" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "远东", - "text": "远东" - }, - { - "lemma": "开发", - "text": "开发" - }, - { - "lemma": "等", - "text": "等" - }, - { - "lemma": "方面", - "text": "方面" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "扩大", - "text": "扩大" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "教育", - "text": "教育" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "文化", - "text": "文化" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "卫生", - "text": "卫生" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "旅游", - "text": "旅游" - }, - { - "lemma": "等", - "text": "等" - }, - { - "lemma": "人文", - "text": "人文" - }, - { - "lemma": "领域", - "text": "领域" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "继续", - "text": "继续" - }, - { - "lemma": "办", - "text": "办" - }, - { - "lemma": "好", - "text": "好" - }, - { - "lemma": "青年", - "text": "青年" - }, - { - "lemma": "友好", - "text": "友好" - }, - { - "lemma": "交流", - "text": "交流" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "媒体", - "text": "媒体" - }, - { - "lemma": "交流", - "text": "交流" - }, - { - "lemma": "年", - "text": "年" - }, - { - "lemma": "活动", - "text": "活动" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "积极", - "text": "积极" - }, - { - "lemma": "加强", - "text": "加强" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "军", - "text": "军" - }, - { - "lemma": "交流", - "text": "交流" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "元首", - "text": "元首" - }, - { - "lemma": "同意", - "text": "同意" - }, - { - "lemma": "加强", - "text": "加强" - }, - { - "lemma": "在", - "text": "在" - }, - { - "lemma": "上海", - "text": "上海" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "组织", - "text": "组织" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "金砖", - "text": "金砖" - }, - { - "lemma": "国家", - "text": "国家" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "20", - "text": "二十" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "集团", - "text": "集团" - }, - { - "lemma": "框架", - "text": "框架" - }, - { - "lemma": "内", - "text": "内" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "双方", - "text": "双方" - }, - { - "lemma": "还", - "text": "还" - }, - { - "lemma": "就", - "text": "就" - }, - { - "lemma": "朝鲜", - "text": "朝鲜" - }, - { - "lemma": "半岛", - "text": "半岛" - }, - { - "lemma": "局势", - "text": "局势" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "伊朗核", - "text": "伊朗核" - }, - { - "lemma": "问题", - "text": "问题" - }, - { - "lemma": "等", - "text": "等" - }, - { - "lemma": "共同", - "text": "共同" - }, - { - "lemma": "关心", - "text": "关心" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "国际", - "text": "国际" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "地区", - "text": "地区" - }, - { - "lemma": "问题", - "text": "问题" - }, - { - "lemma": "交换", - "text": "交换" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "意见", - "text": "意见" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "一致", - "text": "一致" - }, - { - "lemma": "同意", - "text": "同意" - }, - { - "lemma": "继续", - "text": "继续" - }, - { - "lemma": "就", - "text": "就" - }, - { - "lemma": "有关", - "text": "有关" - }, - { - "lemma": "问题", - "text": "问题" - }, - { - "lemma": "保持", - "text": "保持" - }, - { - "lemma": "密切", - "text": "密切" - }, - { - "lemma": "沟通", - "text": "沟通" - }, - { - "lemma": "和", - "text": "和" - }, - { - "lemma": "协调", - "text": "协调" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "会谈", - "text": "会谈" - }, - { - "lemma": "后", - "text": "后" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "元首", - "text": "元首" - }, - { - "lemma": "共同", - "text": "共同" - }, - { - "lemma": "签署", - "text": "签署" - }, - { - "lemma": "并", - "text": "并" - }, - { - "lemma": "发表", - "text": "发表" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "《", - "text": "《" - }, - { - "lemma": "中", - "text": "中" - }, - { - "lemma": "俄", - "text": "俄" - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "关于", - "text": "关于" - }, - { - "lemma": "深化", - "text": "深化" - }, - { - "lemma": "全面", - "text": "全面" - }, - { - "lemma": "战略", - "text": "战略" - }, - { - "lemma": "协作", - "text": "协作" - }, - { - "lemma": "伙伴", - "text": "伙伴" - }, - { - "lemma": "关系", - "text": "关系" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "倡导", - "text": "倡导" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "共", - "text": "共" - }, - { - "lemma": "赢", - "text": "赢" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "联合", - "text": "联合" - }, - { - "lemma": "声明", - "text": "声明" - }, - { - "lemma": "》", - "text": "》" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "《", - "text": "《" - }, - { - "lemma": "关于", - "text": "关于" - }, - { - "lemma": "丝绸之路", - "text": "丝绸之路" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "带", - "text": "带" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "与", - "text": "与" - }, - { - "lemma": "欧亚", - "text": "欧亚" - }, - { - "lemma": "经济", - "text": "经济" - }, - { - "lemma": "联盟", - "text": "联盟" - }, - { - "lemma": "建设", - "text": "建设" - }, - { - "lemma": "对接", - "text": "对接" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "联合", - "text": "联合" - }, - { - "lemma": "声明", - "text": "声明" - }, - { - "lemma": "》", - "text": "》" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "并", - "text": "并" - }, - { - "lemma": "见证", - "text": "见证" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "能源", - "text": "能源" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "交通", - "text": "交通" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "航天", - "text": "航天" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "金融", - "text": "金融" - }, - { - "lemma": "、", - "text": "、" - }, - { - "lemma": "新闻", - "text": "新闻" - }, - { - "lemma": "媒体", - "text": "媒体" - }, - { - "lemma": "等", - "text": "等" - }, - { - "lemma": "领域", - "text": "领域" - }, - { - "lemma": "多", - "text": "多" - }, - { - "lemma": "项", - "text": "项" - }, - { - "lemma": "合作", - "text": "合作" - }, - { - "lemma": "文件", - "text": "文件" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "签署", - "text": "签署" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "签字", - "text": "签字" - }, - { - "lemma": "仪式", - "text": "仪式" - }, - { - "lemma": "后", - "text": "后" - }, - { - "lemma": ",", - "text": "," - }, - { - "lemma": "2", - "text": "两" - }, - { - "lemma": "国", - "text": "国" - }, - { - "lemma": "元首", - "text": "元首" - }, - { - "lemma": "共同", - "text": "共同" - }, - { - "lemma": "会见", - "text": "会见" - }, - { - "lemma": "了", - "text": "了" - }, - { - "lemma": "记者", - "text": "记者" - }, - { - "lemma": "。", - "text": "。" - }, - { - "lemma": "3", - "text": "3" - }, - { - "lemma": "深圳", - "text": "深圳" - }, - { - "lemma": "“", - "text": "“" - }, - { - "lemma": "外围", - "text": "外围" - }, - { - "lemma": "女", - "text": "女" - }, - { - "lemma": "”", - "text": "”" - }, - { - "lemma": "假扮", - "text": "假扮" - }, - { - "lemma": "成明星", - "text": "成明星" - }, - { - "lemma": "叫", - "text": "叫" - }, - { - "lemma": "高", - "text": "高" - }, - { - "lemma": "价性", - "text": "价性" - }, - { - "lemma": "3667311", - "text": "3667311" - }, - { - "lemma": "7", - "text": "7" - }, - { - "lemma": "广西", - "text": "广西" - }, - { - "lemma": ":", - "text": ":" - }, - { - "lemma": "1", - "text": "一" - }, - { - "lemma": "次", - "text": "次" - }, - { - "lemma": "“", - "text": "“" - }, - { - "lemma": "碰瓷", - "text": "碰瓷" - }, - { - "lemma": "”", - "text": "”" - }, - { - "lemma": "的", - "text": "的" - }, - { - "lemma": "全", - "text": "全" - }, - { - "lemma": "过程", - "text": "过程" - }, - { - "lemma": "2717442", - "text": "2717442" - } + "习", + "近平", + "主持", + "深", + "改组", + "会议", + "听取", + "10", + "项", + "汇报", + "会议", + "指出", + ",", + "全面", + "深化", + "改革", + ",", + "上来", + "就", + "必须", + "有", + "气势", + ",", + "先", + "集中", + "力量", + "把", + "主要", + "改革", + "举措", + "推出", + "来", + ",", + "然后", + "集中", + "力量", + "1", + "项", + "1", + "项", + "抓好", + "落实", + "。", + "4", + ",", + "改革", + "规律", + "和", + "特点", + "抓", + "改革", + "落实", + ",", + "要", + "遵循", + "改革", + "规律", + "和", + "特点", + ",", + "建立", + "全", + "过程", + "、", + "高", + "效率", + "、", + "可", + "核实", + "的", + "改革", + "落实", + "机制", + ",", + "推动", + "改革", + "举措", + "早", + "落地", + "、", + "见", + "实效", + "。", + "并", + "提出", + "6", + "个", + "举措", + ":", + "其中", + ",", + "就", + "“", + "抓", + "督办", + "协调", + "”", + ",", + "会议", + "指出", + ",", + "要", + "把", + "部门", + "协调", + "难度", + "大", + "、", + "政策", + "关联度", + "高", + "的", + "改革", + "举措", + "作为", + "重点", + ",", + "谋划", + "改革", + "举措", + "出台", + "时机", + "和", + "节奏", + ",", + "协调", + "解决", + "改革", + "推进", + "中", + "的", + "矛盾", + "和", + "问题", + "。", + "对", + "敷衍塞责", + "、", + "拖延", + "扯皮", + "、", + "屡", + "推", + "不", + "动", + "的", + ",", + "对", + "重视", + "不够", + "、", + "研究", + "甚", + "少", + "、", + "贯彻", + "乏力", + "的", + ",", + "要", + "进行", + "问责", + "。", + "没", + "错", + ",", + "要", + "对", + "以下", + "6", + "种", + "情况", + ",", + "进行", + "问责", + ":", + "会议", + "还", + "强调", + "要", + "做", + "促进派", + "、", + "实干", + "家", + ",", + "并", + "要", + "推动", + "全", + "社会", + "形成", + "想", + "改革", + "、", + "敢", + "改革", + "、", + "善", + "改革", + "的", + "良好", + "风尚", + "。", + "更", + "多", + "内容", + ",", + "请", + "看", + "通稿", + ":", + "新华社", + "北京", + "2月", + "23日", + "电", + "中共中央", + "总书记", + "、", + "国家", + "主席", + "、", + "中央军委", + "主席", + "、", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "组长", + "习", + "近平", + "2月", + "23日", + "下午", + "主持", + "召开", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "第二十一", + "次", + "会议", + "并", + "发表", + "重要", + "讲话", + "。", + "全局", + "意识", + "、", + "责任意识", + "他", + "强调", + ",", + "各", + "地区", + "各", + "部门", + "要", + "牢固", + "树立", + "全局", + "意识", + "、", + "责任", + "意识", + ",", + "把", + "抓", + "改革", + "作为", + "1", + "项", + "重大", + "政治", + "责任", + ",", + "坚定", + "改革", + "决心", + "和", + "信心", + ",", + "增强", + "推进", + "改革", + "的", + "思想", + "自觉", + "和", + "行动", + "自觉", + ",", + "既", + "当", + "改革", + "促进派", + "、", + "又", + "当", + "改革", + "实干", + "家", + ",", + "以", + "钉", + "钉子", + "精神", + "抓好", + "改革", + "落实", + ",", + "扭", + "住", + "关键", + "、", + "精", + "准发", + "力", + ",", + "敢于", + "啃", + "硬骨头", + ",", + "盯", + "着", + "抓", + "、", + "反复", + "抓", + ",", + "直到", + "抓", + "出", + "成效", + "。", + "中共中央", + "政治局", + "常委", + "、", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "副", + "组长", + "李", + "克强", + "、", + "刘", + "云山", + "、", + "张", + "高丽", + "出席", + "会议", + "。", + "会议", + "听取", + "了", + "经济", + "体制", + "和", + "生态", + "文明", + "体制", + "改革", + "专项", + "小组", + "关于", + "生态", + "文明", + "体制", + "改革", + "总体", + "方案", + "推进", + "落实", + "情况", + "汇报", + "、", + "社会", + "体制", + "改革", + "专项", + "小组", + "关于", + "司法", + "体制", + "改革", + "推进", + "落实", + "情况", + "汇报", + "、", + "党", + "的", + "纪律", + "检查", + "体制", + "改革", + "专项", + "小组", + "关于", + "党", + "的", + "纪律", + "检查", + "体制", + "改革", + "推进", + "落实", + "情况", + "汇报", + ",", + "全国", + "人大", + "常委会", + "法", + "工委", + "关于", + "立法", + "主动", + "适应", + "改革", + "需要", + "推进", + "落实", + "情况", + "汇报", + "、", + "科技", + "部", + "关于", + "深化", + "科技", + "体制", + "改革", + "推进", + "落实", + "情况", + "汇报", + "、", + "公安部", + "关于", + "深化", + "公安", + "改革", + "推进", + "落实", + "情况", + "汇报", + ",", + "上海", + "市", + "关于", + "推进", + "落实", + "中央", + "部署", + "改革", + "试点", + "任务", + "情况", + "汇报", + "、", + "湖北省", + "关于", + "建立", + "和", + "实施", + "改革", + "落实", + "督察", + "机制", + "情况", + "汇报", + "、", + "福建省", + "3", + "明市", + "关于", + "深化", + "医药", + "卫生", + "体制", + "改革", + "情况", + "汇报", + "、", + "浙江省", + "开化", + "县", + "关于", + "“", + "多规", + "合", + "1", + "”", + "试点", + "情况", + "汇报", + "。", + "全面", + "深化", + "改革", + "必须", + "有", + "气势", + "会议", + "强调", + ",", + "全面", + "深化", + "改革", + "是", + "系统工程", + ",", + "头绪", + "多", + ",", + "任务", + "重", + ",", + "上来", + "就", + "必须", + "有", + "气势", + ",", + "先", + "集中", + "力量", + "把", + "主要", + "改革", + "举措", + "推出", + "来", + ",", + "然后", + "集中", + "力量", + "1", + "项", + "1", + "项", + "抓好", + "落实", + "。", + "党", + "的", + "十八", + "届", + "三中全会", + "以来", + ",", + "改革", + "举措", + "出台", + "的", + "数量", + "之", + "多", + "、", + "力度", + "之", + "大", + "前所未有", + ",", + "抓", + "落实", + "的", + "任务", + "之重", + "、", + "压力", + "之", + "大", + "也", + "前所未有", + "。", + "总的看", + ",", + "改革", + "落实", + "是", + "好", + "的", + ",", + "已经", + "出台", + "的", + "改革", + "举措", + "大多", + "已", + "进入", + "落实", + "阶段", + ",", + "有些", + "改革", + "举措", + "已", + "经落", + "了", + "地", + "、", + "扎", + "了", + "根", + "、", + "开", + "了", + "花", + ",", + "有些", + "在", + "地方", + "和", + "部门", + "形成", + "了", + "细化", + "实化", + "的", + "制度", + "安排", + ",", + "有", + "些", + "通过", + "试点", + "探索", + "总结", + "出", + "了", + "可", + "复制", + "可", + "推广", + "的", + "经验", + "。", + "改革", + "落实", + "总体", + "是", + "好", + "的", + "会议", + "指出", + ",", + "抓", + "改革", + "落实", + ",", + "要", + "遵循", + "改革", + "规律", + "和", + "特点", + ",", + "建立", + "全", + "过程", + "、", + "高", + "效率", + "、", + "可", + "核实", + "的", + "改革", + "落实", + "机制", + ",", + "推动", + "改革", + "举措", + "早", + "落地", + "、", + "见", + "实效", + "。", + "1", + "要", + "抓主体", + "责任", + ",", + "凡是", + "承担", + "改革", + "任务", + "的", + "地方", + "和", + "部门", + ",", + "都", + "要", + "知责", + "明责", + "、", + "守责", + "尽责", + ",", + "各", + "就", + "各位", + "、", + "各负其责", + "。", + "牵头", + "部门", + "对", + "经办", + "的", + "改革", + "举措", + "要", + "全程", + "过问", + "、", + "全程", + "负责", + "、", + "一抓", + "到底", + "。", + "地方", + "党委", + "要", + "统筹", + "好", + "中央", + "和", + "地方", + "2", + "个", + "层面", + "的", + "要求", + ",", + "抓好", + "改革", + "举措", + "落实", + "。", + "2", + "要", + "抓", + "督办", + "协调", + ",", + "把", + "部门", + "协调", + "难度", + "大", + "、", + "政策", + "关联度", + "高", + "的", + "改革", + "举措", + "作为", + "重点", + ",", + "谋划", + "改革", + "举措", + "出台", + "时机", + "和", + "节奏", + ",", + "协调", + "解决", + "改革", + "推进", + "中", + "的", + "矛盾", + "和", + "问题", + "。", + "对", + "敷衍塞责", + "、", + "拖延", + "扯皮", + "、", + "屡", + "推", + "不", + "动", + "的", + ",", + "对", + "重视", + "不够", + "、", + "研究", + "甚", + "少", + "、", + "贯彻", + "乏力", + "的", + ",", + "要", + "进行", + "问责", + "。", + "3", + "要", + "抓", + "督察", + "落实", + ",", + "强化", + "督", + "察职", + "能", + ",", + "健全", + "督察", + "机制", + ",", + "抓紧", + "构建", + "上下", + "贯通", + "、", + "横向", + "联动", + "的", + "督察", + "工作", + "格局", + "。", + "要", + "重视", + "督察", + "结果", + "的", + "运用", + ",", + "发现", + "问题", + "的", + "要", + "列出", + "清单", + "、", + "明确", + "责任", + "、", + "限定", + "时间", + "、", + "挂账", + "整改", + "。", + "各", + "地区", + "各", + "部门", + "要", + "确定", + "1", + "批", + "重点", + "改革", + "督察", + "项目", + ",", + "大力", + "抓", + "督察", + "落实", + ",", + "形成", + "全党", + "上下", + "抓", + "改革", + "落实", + "的", + "局面", + "。", + "4", + "要", + "抓", + "完善", + "机制", + ",", + "抓紧", + "完善", + "督办", + "协调", + "、", + "督察", + "落实", + "、", + "考评", + "激励", + "、", + "责任", + "追究", + "等", + "工作", + "机制", + "。", + "5", + "要", + "抓", + "改革", + "成效", + ",", + "把", + "是否", + "促进", + "经济", + "社会", + "发展", + "、", + "是否", + "给", + "人民", + "群众", + "带来", + "实实在在", + "的", + "获得", + "感", + ",", + "作为", + "改革", + "成效", + "的", + "评价", + "标准", + "。", + "注意", + "把", + "抓", + "改革", + "落实", + "同", + "落实", + "“", + "4", + "个", + "全面", + "”", + "战略", + "布局", + "、", + "落实", + "新", + "发展", + "理念", + "结合", + "起来", + ",", + "同", + "抓", + "经济", + "发展", + "、", + "社会", + "稳定", + "、", + "民生", + "改善", + "、", + "党", + "的", + "建设", + "等", + "工作", + "结合", + "起来", + ",", + "既", + "要", + "通过", + "抓", + "改革", + "来", + "促", + "发展", + ",", + "又", + "要", + "围绕", + "谋", + "发展", + "来", + "抓", + "改革", + "。", + "6", + "要", + "抓", + "成果", + "巩固", + ",", + "及时", + "总结", + "推广", + "改革", + "经验", + ",", + "把", + "各项", + "成果", + "总结", + "好", + "、", + "巩固", + "好", + "、", + "发展", + "好", + ",", + "努力", + "使", + "实践", + "成果", + "上", + "升为", + "制度", + "成果", + "。", + "部署", + "改革", + "试点", + "要", + "目的", + "明确", + ",", + "做到", + "可", + "复制", + "可", + "推广", + ",", + "不要", + "引导", + "到", + "发", + "帽子", + "、", + "争", + "政策", + "、", + "要", + "资金", + "、", + "搞", + "项目", + "的", + "方向", + "上", + "。", + "促进", + "派", + "实干", + "家", + "会议", + "强调", + ",", + "拥护", + "改革", + "、", + "支持", + "改革", + "、", + "敢于", + "担当", + "的", + "就", + "是", + "促进", + "派", + ",", + "把", + "改革", + "抓", + "在", + "手上", + "、", + "落到实处", + "、", + "干", + "出", + "成效", + "的", + "就", + "是", + "实干", + "家", + "。", + "各", + "地区", + "各", + "部门", + "的", + "主要", + "负责", + "同志", + ",", + "对", + "抓", + "改革", + "、", + "抓", + "落实", + "负有", + "直接", + "责任", + ",", + "要", + "亲自", + "抓", + "谋划", + "、", + "抓", + "部署", + "、", + "抓", + "督察", + "、", + "抓", + "落实", + "。", + "对", + "中央", + "部署", + "的", + "改革", + "任务", + ",", + "要", + "高度", + "重视", + "、", + "亲力亲", + "为", + ",", + "中央", + "有", + "具体", + "要求", + "的", + ",", + "要", + "1", + "竿子", + "插", + "到底", + ",", + "不折不扣", + "落实", + "下去", + ";", + "中央", + "提出", + "原则", + "要求", + "的", + ",", + "要", + "结合", + "实际", + "进行", + "细化", + "实化", + "。", + "立足", + "全局", + "总结", + "经验", + "调查", + "研究", + "对", + "本", + "地区", + "本", + "部门", + "改革", + "任务", + ",", + "既", + "要", + "抓紧", + "推进", + "、", + "敢于", + "突破", + ",", + "又", + "要", + "立足", + "全局", + "、", + "通盘", + "考虑", + "。", + "市", + "县", + "一级", + "要", + "注意", + "配足力量", + ",", + "创新", + "工作", + "方法", + ",", + "把", + "精力", + "集中", + "在", + "打通", + "“", + "最后", + "1", + "公里", + "”", + "上", + "。", + "要", + "总结", + "各地", + "创造", + "的", + "新鲜", + "经验", + ",", + "发挥", + "好", + "先进", + "典型", + "的", + "示范", + "引", + "领", + "作用", + "。", + "要", + "重视", + "调查", + "研究", + ",", + "坚持", + "眼睛", + "向", + "下", + "、", + "脚步", + "向", + "下", + ",", + "了解", + "基层", + "群众", + "所", + "思", + "、", + "所", + "想", + "、", + "所", + "盼", + ",", + "使", + "改革", + "更", + "接地", + "气", + "。", + "形成", + "良好", + "风尚", + "会议", + "指出", + ",", + "各级", + "党委", + "要", + "着力", + "提高", + "领导", + "干部", + "谋划", + "、", + "推动", + "、", + "落实", + "改革", + "的", + "能力", + ",", + "引导", + "干部", + "树立", + "与", + "全面", + "深化", + "改革", + "相", + "适应", + "的", + "思想", + "作风", + "和", + "担当", + "精神", + ",", + "既", + "鼓励", + "创新", + "、", + "表扬", + "先进", + ",", + "也", + "允许", + "试错", + "、", + "宽容", + "失败", + ",", + "最", + "大", + "限度", + "调动", + "广大", + "干部", + "的", + "积极性", + "、", + "主动性", + "、", + "创造性", + ",", + "推动", + "全", + "社会", + "形成", + "想", + "改革", + "、", + "敢", + "改革", + "、", + "善", + "改革", + "的", + "良好", + "风尚", + "。", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "成员", + "出席", + ",", + "中央", + "和", + "国家", + "有关", + "部门", + "以及", + "有关", + "地方", + "负责", + "同志", + "列席", + "会议", + "。" ], "posTags": [ - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "GUESS", - "text": "同普" - }, - { - "pos": "NC", - "text": "京" - }, - { - "pos": "NC", - "text": "会谈" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "NC", - "text": "签" - }, - { - "pos": "GUESS", - "text": "2" - }, - { - "pos": "NC", - "text": "份" - }, - { - "pos": "A", - "text": "联合" - }, - { - "pos": "NC", - "text": "声明" - }, - { - "pos": "NC", - "text": "人民日报" - }, - { - "pos": "A", - "text": "全" - }, - { - "pos": "NC", - "text": "媒体" - }, - { - "pos": "NC", - "text": "平台" - }, - { - "pos": "NP", - "text": "莫斯科" - }, - { - "pos": "GUESS", - "text": "5月" - }, - { - "pos": "GUESS", - "text": "8日" - }, - { - "pos": "NC", - "text": "电" - }, - { - "pos": "GUESS", - "text": "(" - }, - { - "pos": "NC", - "text": "记者" - }, - { - "pos": "NC", - "text": "杜" - }, - { - "pos": "GUESS", - "text": "尚泽" - }, - { - "pos": "GUESS", - "text": ")" - }, - { - "pos": "A", - "text": "当地" - }, - { - "pos": "NC", - "text": "时间" - }, - { - "pos": "GUESS", - "text": "5月" - }, - { - "pos": "GUESS", - "text": "8日" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "国家" - }, - { - "pos": "NC", - "text": "主席" - }, - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "GUESS", - "text": "莫斯科克里姆林宫" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "NP", - "text": "俄罗斯" - }, - { - "pos": "NC", - "text": "总统" - }, - { - "pos": "NC", - "text": "普京" - }, - { - "pos": "V", - "text": "举行" - }, - { - "pos": "NC", - "text": "会谈" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "普京" - }, - { - "pos": "A", - "text": "热烈" - }, - { - "pos": "V", - "text": "欢迎" - }, - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "V", - "text": "应邀" - }, - { - "pos": "V", - "text": "前来" - }, - { - "pos": "V", - "text": "出席" - }, - { - "pos": "GUESS", - "text": "纪念卫" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "战争" - }, - { - "pos": "D", - "text": "胜利" - }, - { - "pos": "GUESS", - "text": "70" - }, - { - "pos": "NC", - "text": "周年" - }, - { - "pos": "NC", - "text": "庆典" - }, - { - "pos": "NC", - "text": "并" - }, - { - "pos": "V", - "text": "访问" - }, - { - "pos": "NP", - "text": "俄罗斯" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "NC", - "text": "感谢" - }, - { - "pos": "NC", - "text": "普京" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "盛情" - }, - { - "pos": "NC", - "text": "邀请" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "元首" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "A", - "text": "亲切" - }, - { - "pos": "A", - "text": "友好" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "气氛" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "就" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "NC", - "text": "关系" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "D", - "text": "彼此" - }, - { - "pos": "NC", - "text": "关心" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "E", - "text": "重大" - }, - { - "pos": "A", - "text": "国际" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NP", - "text": "地区" - }, - { - "pos": "NC", - "text": "问题" - }, - { - "pos": "A", - "text": "充分" - }, - { - "pos": "V", - "text": "交换" - }, - { - "pos": "NC", - "text": "意见" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "A", - "text": "一致" - }, - { - "pos": "V", - "text": "同意" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "W", - "text": "要" - }, - { - "pos": "A", - "text": "共同" - }, - { - "pos": "V", - "text": "维护" - }, - { - "pos": "NN", - "text": "第二" - }, - { - "pos": "A", - "text": "次" - }, - { - "pos": "NC", - "text": "世界大战" - }, - { - "pos": "D", - "text": "胜利" - }, - { - "pos": "NC", - "text": "成果" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "A", - "text": "国际" - }, - { - "pos": "A", - "text": "公平" - }, - { - "pos": "A", - "text": "正义" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "推进" - }, - { - "pos": "NP", - "text": "丝绸之路" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "带" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "NC", - "text": "欧亚" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "联盟" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "NC", - "text": "对接" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "V", - "text": "指出" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "很" - }, - { - "pos": "A", - "text": "高兴" - }, - { - "pos": "D", - "text": "来" - }, - { - "pos": "NP", - "text": "莫斯科" - }, - { - "pos": "V", - "text": "出席" - }, - { - "pos": "GUESS", - "text": "纪念卫" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "战争" - }, - { - "pos": "D", - "text": "胜利" - }, - { - "pos": "GUESS", - "text": "70" - }, - { - "pos": "NC", - "text": "周年" - }, - { - "pos": "NC", - "text": "庆典" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NP", - "text": "中国" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NP", - "text": "俄罗斯" - }, - { - "pos": "D", - "text": "分别" - }, - { - "pos": "A", - "text": "是" - }, - { - "pos": "NN", - "text": "第二" - }, - { - "pos": "A", - "text": "次" - }, - { - "pos": "NC", - "text": "世界大战" - }, - { - "pos": "NP", - "text": "亚洲" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NP", - "text": "欧洲" - }, - { - "pos": "NP", - "text": "主战场" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "都" - }, - { - "pos": "OC", - "text": "为" - }, - { - "pos": "V", - "text": "取得" - }, - { - "pos": "NN", - "text": "第二" - }, - { - "pos": "A", - "text": "次" - }, - { - "pos": "NC", - "text": "世界大战" - }, - { - "pos": "A", - "text": "最终" - }, - { - "pos": "D", - "text": "胜利" - }, - { - "pos": "V", - "text": "付出" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "A", - "text": "巨大" - }, - { - "pos": "NC", - "text": "牺牲" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "GUESS", - "text": "作出" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "E", - "text": "重大" - }, - { - "pos": "NC", - "text": "贡献" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "人民" - }, - { - "pos": "D", - "text": "也" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "D", - "text": "并肩" - }, - { - "pos": "A", - "text": "战斗" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "V", - "text": "结" - }, - { - "pos": "D", - "text": "下" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "A", - "text": "深厚" - }, - { - "pos": "NC", - "text": "友谊" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "今年" - }, - { - "pos": "D", - "text": "分别" - }, - { - "pos": "V", - "text": "举办" - }, - { - "pos": "NN", - "text": "第二" - }, - { - "pos": "A", - "text": "次" - }, - { - "pos": "NC", - "text": "世界大战" - }, - { - "pos": "D", - "text": "胜利" - }, - { - "pos": "GUESS", - "text": "70" - }, - { - "pos": "NC", - "text": "周年" - }, - { - "pos": "NC", - "text": "系列" - }, - { - "pos": "V", - "text": "庆祝" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NC", - "text": "纪念" - }, - { - "pos": "A", - "text": "活动" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "U", - "text": "目的" - }, - { - "pos": "A", - "text": "是" - }, - { - "pos": "V", - "text": "铭记" - }, - { - "pos": "NC", - "text": "历史" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "V", - "text": "缅怀" - }, - { - "pos": "NC", - "text": "先烈" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "GUESS", - "text": "更是" - }, - { - "pos": "W", - "text": "要" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "NC", - "text": "各国" - }, - { - "pos": "NC", - "text": "人民" - }, - { - "pos": "D", - "text": "一道" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "珍爱" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "V", - "text": "维护" - }, - { - "pos": "E", - "text": "来之不易" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "E", - "text": "和平" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "共" - }, - { - "pos": "W", - "text": "创" - }, - { - "pos": "A", - "text": "全" - }, - { - "pos": "NC", - "text": "人类" - }, - { - "pos": "E", - "text": "和平" - }, - { - "pos": "W", - "text": "与" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "美好" - }, - { - "pos": "NC", - "text": "未来" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "NC", - "text": "强调" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NR", - "text": "我们" - }, - { - "pos": "V", - "text": "愿" - }, - { - "pos": "V", - "text": "深化" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "NP", - "text": "俄罗斯" - }, - { - "pos": "NC", - "text": "人民" - }, - { - "pos": "NC", - "text": "传统" - }, - { - "pos": "NC", - "text": "友谊" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "推进" - }, - { - "pos": "NC", - "text": "双方" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "NC", - "text": "战略" - }, - { - "pos": "NC", - "text": "对接" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "规划" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "A", - "text": "友好" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "A", - "text": "新" - }, - { - "pos": "NC", - "text": "未来" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "推动" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "A", - "text": "全面" - }, - { - "pos": "NC", - "text": "战略" - }, - { - "pos": "NC", - "text": "协作" - }, - { - "pos": "NC", - "text": "伙伴" - }, - { - "pos": "NC", - "text": "关系" - }, - { - "pos": "D", - "text": "继续" - }, - { - "pos": "V", - "text": "保持" - }, - { - "pos": "A", - "text": "高" - }, - { - "pos": "A", - "text": "水平" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "促进" - }, - { - "pos": "A", - "text": "国际" - }, - { - "pos": "NC", - "text": "秩序" - }, - { - "pos": "PR", - "text": "朝着" - }, - { - "pos": "D", - "text": "更加" - }, - { - "pos": "A", - "text": "公正" - }, - { - "pos": "A", - "text": "合理" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "方向" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "维护" - }, - { - "pos": "NP", - "text": "地区" - }, - { - "pos": "E", - "text": "及" - }, - { - "pos": "NP", - "text": "世界" - }, - { - "pos": "E", - "text": "和平" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "A", - "text": "安全" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "A", - "text": "稳定" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "普京" - }, - { - "pos": "NC", - "text": "高度" - }, - { - "pos": "NC", - "text": "评价" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "关系" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "A", - "text": "水平" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "指出" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "A", - "text": "是" - }, - { - "pos": "A", - "text": "真正" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "全面" - }, - { - "pos": "NC", - "text": "战略" - }, - { - "pos": "NC", - "text": "协作" - }, - { - "pos": "NC", - "text": "伙伴" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "W", - "text": "各" - }, - { - "pos": "NC", - "text": "领域" - }, - { - "pos": "W", - "text": "各" - }, - { - "pos": "NC", - "text": "层面" - }, - { - "pos": "D", - "text": "都" - }, - { - "pos": "A", - "text": "开展" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "E", - "text": "卓有成效" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "交流" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "普京" - }, - { - "pos": "V", - "text": "表示" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NR", - "text": "我" - }, - { - "pos": "D", - "text": "完全" - }, - { - "pos": "V", - "text": "赞同" - }, - { - "pos": "NC", - "text": "习" - }, - { - "pos": "GUESS", - "text": "近平" - }, - { - "pos": "NC", - "text": "主席" - }, - { - "pos": "A", - "text": "对" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "NN", - "text": "第二" - }, - { - "pos": "A", - "text": "次" - }, - { - "pos": "NC", - "text": "世界大战" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NC", - "text": "历史" - }, - { - "pos": "NC", - "text": "贡献" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "评价" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "今年" - }, - { - "pos": "D", - "text": "将" - }, - { - "pos": "V", - "text": "举办" - }, - { - "pos": "V", - "text": "庆祝" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NC", - "text": "纪念" - }, - { - "pos": "A", - "text": "活动" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "反对" - }, - { - "pos": "A", - "text": "任何" - }, - { - "pos": "NC", - "text": "企图" - }, - { - "pos": "V", - "text": "否认" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "V", - "text": "歪曲" - }, - { - "pos": "NC", - "text": "历史" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "图谋" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "反对" - }, - { - "pos": "A", - "text": "任何" - }, - { - "pos": "V", - "text": "美化" - }, - { - "pos": "NC", - "text": "法西斯" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "GUESS", - "text": "军国" - }, - { - "pos": "NC", - "text": "主义" - }, - { - "pos": "NC", - "text": "分子" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "V", - "text": "抹黑" - }, - { - "pos": "NC", - "text": "解放者" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "行为" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "PR", - "text": "关于" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "NC", - "text": "务实" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "元首" - }, - { - "pos": "V", - "text": "商定" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "将" - }, - { - "pos": "NP", - "text": "中方" - }, - { - "pos": "NP", - "text": "丝绸之路" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "带" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "PR", - "text": "同" - }, - { - "pos": "GUESS", - "text": "俄方" - }, - { - "pos": "NC", - "text": "欧亚" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "联盟" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "NC", - "text": "对接" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "W", - "text": "从" - }, - { - "pos": "NC", - "text": "战略" - }, - { - "pos": "NC", - "text": "高度" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "OC", - "text": "以" - }, - { - "pos": "NC", - "text": "更" - }, - { - "pos": "A", - "text": "广" - }, - { - "pos": "NC", - "text": "视野" - }, - { - "pos": "A", - "text": "全面" - }, - { - "pos": "V", - "text": "扩大" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "V", - "text": "深化" - }, - { - "pos": "NC", - "text": "双方" - }, - { - "pos": "NC", - "text": "务实" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "扩大" - }, - { - "pos": "D", - "text": "相互" - }, - { - "pos": "V", - "text": "开放" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "深化" - }, - { - "pos": "NC", - "text": "利益" - }, - { - "pos": "V", - "text": "交融" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "更" - }, - { - "pos": "W", - "text": "好" - }, - { - "pos": "V", - "text": "促进" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "V", - "text": "振兴" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "拓展" - }, - { - "pos": "NC", - "text": "欧" - }, - { - "pos": "NA", - "text": "亚" - }, - { - "pos": "A", - "text": "共同" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "空间" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "带动" - }, - { - "pos": "A", - "text": "整个" - }, - { - "pos": "NC", - "text": "欧" - }, - { - "pos": "NA", - "text": "亚" - }, - { - "pos": "NP", - "text": "大陆" - }, - { - "pos": "V", - "text": "发展" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "A", - "text": "稳定" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "元首" - }, - { - "pos": "V", - "text": "同意" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "挖掘" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "NC", - "text": "潜力" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NC", - "text": "优势" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "扩大" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "能源" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "农业" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "GUESS", - "text": "高铁" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "航空" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "航天" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "金融" - }, - { - "pos": "NC", - "text": "投资" - }, - { - "pos": "NC", - "text": "领域" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "A", - "text": "基础" - }, - { - "pos": "NC", - "text": "设施" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "远东" - }, - { - "pos": "V", - "text": "开发" - }, - { - "pos": "V", - "text": "等" - }, - { - "pos": "NC", - "text": "方面" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "V", - "text": "扩大" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "教育" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "文化" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "A", - "text": "卫生" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "旅游" - }, - { - "pos": "V", - "text": "等" - }, - { - "pos": "NC", - "text": "人文" - }, - { - "pos": "NC", - "text": "领域" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "D", - "text": "继续" - }, - { - "pos": "V", - "text": "办" - }, - { - "pos": "W", - "text": "好" - }, - { - "pos": "NC", - "text": "青年" - }, - { - "pos": "A", - "text": "友好" - }, - { - "pos": "A", - "text": "交流" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "媒体" - }, - { - "pos": "A", - "text": "交流" - }, - { - "pos": "NC", - "text": "年" - }, - { - "pos": "A", - "text": "活动" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "A", - "text": "积极" - }, - { - "pos": "V", - "text": "加强" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "军" - }, - { - "pos": "A", - "text": "交流" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "元首" - }, - { - "pos": "V", - "text": "同意" - }, - { - "pos": "V", - "text": "加强" - }, - { - "pos": "D", - "text": "在" - }, - { - "pos": "NP", - "text": "上海" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "NC", - "text": "组织" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "金砖" - }, - { - "pos": "NC", - "text": "国家" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NN", - "text": "二十" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "集团" - }, - { - "pos": "NC", - "text": "框架" - }, - { - "pos": "A", - "text": "内" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "双方" - }, - { - "pos": "D", - "text": "还" - }, - { - "pos": "D", - "text": "就" - }, - { - "pos": "NP", - "text": "朝鲜" - }, - { - "pos": "NC", - "text": "半岛" - }, - { - "pos": "NC", - "text": "局势" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "GUESS", - "text": "伊朗核" - }, - { - "pos": "NC", - "text": "问题" - }, - { - "pos": "V", - "text": "等" - }, - { - "pos": "A", - "text": "共同" - }, - { - "pos": "NC", - "text": "关心" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "国际" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "NP", - "text": "地区" - }, - { - "pos": "NC", - "text": "问题" - }, - { - "pos": "V", - "text": "交换" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "NC", - "text": "意见" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "A", - "text": "一致" - }, - { - "pos": "V", - "text": "同意" - }, - { - "pos": "D", - "text": "继续" - }, - { - "pos": "D", - "text": "就" - }, - { - "pos": "V", - "text": "有关" - }, - { - "pos": "NC", - "text": "问题" - }, - { - "pos": "V", - "text": "保持" - }, - { - "pos": "A", - "text": "密切" - }, - { - "pos": "V", - "text": "沟通" - }, - { - "pos": "W", - "text": "和" - }, - { - "pos": "A", - "text": "协调" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "会谈" - }, - { - "pos": "NC", - "text": "后" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "元首" - }, - { - "pos": "A", - "text": "共同" - }, - { - "pos": "V", - "text": "签署" - }, - { - "pos": "NC", - "text": "并" - }, - { - "pos": "V", - "text": "发表" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "GUESS", - "text": "《" - }, - { - "pos": "A", - "text": "中" - }, - { - "pos": "NA", - "text": "俄" - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "PR", - "text": "关于" - }, - { - "pos": "V", - "text": "深化" - }, - { - "pos": "A", - "text": "全面" - }, - { - "pos": "NC", - "text": "战略" - }, - { - "pos": "NC", - "text": "协作" - }, - { - "pos": "NC", - "text": "伙伴" - }, - { - "pos": "NC", - "text": "关系" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "倡导" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "D", - "text": "共" - }, - { - "pos": "V", - "text": "赢" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "联合" - }, - { - "pos": "NC", - "text": "声明" - }, - { - "pos": "GUESS", - "text": "》" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "GUESS", - "text": "《" - }, - { - "pos": "PR", - "text": "关于" - }, - { - "pos": "NP", - "text": "丝绸之路" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "带" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "W", - "text": "与" - }, - { - "pos": "NC", - "text": "欧亚" - }, - { - "pos": "A", - "text": "经济" - }, - { - "pos": "NC", - "text": "联盟" - }, - { - "pos": "NC", - "text": "建设" - }, - { - "pos": "NC", - "text": "对接" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "联合" - }, - { - "pos": "NC", - "text": "声明" - }, - { - "pos": "GUESS", - "text": "》" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NC", - "text": "并" - }, - { - "pos": "NC", - "text": "见证" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "NC", - "text": "能源" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "A", - "text": "交通" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "航天" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "金融" - }, - { - "pos": "GUESS", - "text": "、" - }, - { - "pos": "NC", - "text": "新闻" - }, - { - "pos": "NC", - "text": "媒体" - }, - { - "pos": "V", - "text": "等" - }, - { - "pos": "NC", - "text": "领域" - }, - { - "pos": "A", - "text": "多" - }, - { - "pos": "NC", - "text": "项" - }, - { - "pos": "NC", - "text": "合作" - }, - { - "pos": "NC", - "text": "文件" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "V", - "text": "签署" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "NC", - "text": "签字" - }, - { - "pos": "NC", - "text": "仪式" - }, - { - "pos": "NC", - "text": "后" - }, - { - "pos": "GUESS", - "text": "," - }, - { - "pos": "NN", - "text": "两" - }, - { - "pos": "NC", - "text": "国" - }, - { - "pos": "NC", - "text": "元首" - }, - { - "pos": "A", - "text": "共同" - }, - { - "pos": "V", - "text": "会见" - }, - { - "pos": "PL", - "text": "了" - }, - { - "pos": "NC", - "text": "记者" - }, - { - "pos": "GUESS", - "text": "。" - }, - { - "pos": "GUESS", - "text": "3" - }, - { - "pos": "NP", - "text": "深圳" - }, - { - "pos": "GUESS", - "text": "“" - }, - { - "pos": "NC", - "text": "外围" - }, - { - "pos": "W", - "text": "女" - }, - { - "pos": "GUESS", - "text": "”" - }, - { - "pos": "V", - "text": "假扮" - }, - { - "pos": "GUESS", - "text": "成明星" - }, - { - "pos": "PR", - "text": "叫" - }, - { - "pos": "A", - "text": "高" - }, - { - "pos": "GUESS", - "text": "价性" - }, - { - "pos": "GUESS", - "text": "3667311" - }, - { - "pos": "GUESS", - "text": "7" - }, - { - "pos": "NP", - "text": "广西" - }, - { - "pos": "GUESS", - "text": ":" - }, - { - "pos": "NN", - "text": "一" - }, - { - "pos": "A", - "text": "次" - }, - { - "pos": "GUESS", - "text": "“" - }, - { - "pos": "GUESS", - "text": "碰瓷" - }, - { - "pos": "GUESS", - "text": "”" - }, - { - "pos": "OC", - "text": "的" - }, - { - "pos": "A", - "text": "全" - }, - { - "pos": "NC", - "text": "过程" - }, - { - "pos": "GUESS", - "text": "2717442" - } + "NC", + "GUESS", + "V", + "A", + "V", + "NC", + "V", + "GUESS", + "NC", + "NC", + "NC", + "V", + "GUESS", + "A", + "V", + "NC", + "GUESS", + "D", + "D", + "V", + "OC", + "NC", + "GUESS", + "D", + "V", + "NC", + "NM", + "A", + "NC", + "NC", + "V", + "D", + "GUESS", + "J", + "V", + "NC", + "NN", + "NC", + "NN", + "NC", + "V", + "A", + "GUESS", + "GUESS", + "GUESS", + "NC", + "NC", + "W", + "NC", + "V", + "NC", + "A", + "GUESS", + "W", + "V", + "NC", + "NC", + "W", + "NC", + "GUESS", + "V", + "A", + "NC", + "GUESS", + "A", + "NC", + "GUESS", + "D", + "NC", + "OC", + "NC", + "A", + "A", + "GUESS", + "V", + "NC", + "NC", + "A", + "V", + "GUESS", + "V", + "NC", + "GUESS", + "NC", + "V", + "GUESS", + "NM", + "NC", + "GUESS", + "NP", + "GUESS", + "D", + "GUESS", + "V", + "NC", + "A", + "GUESS", + "GUESS", + "NC", + "V", + "GUESS", + "W", + "NM", + "NC", + "A", + "NC", + "A", + "GUESS", + "NC", + "GUESS", + "A", + "OC", + "NC", + "NC", + "E", + "NC", + "GUESS", + "V", + "NC", + "NC", + "V", + "NC", + "W", + "NC", + "GUESS", + "A", + "V", + "NC", + "NC", + "A", + "OC", + "A", + "W", + "NC", + "GUESS", + "A", + "E", + "GUESS", + "V", + "V", + "GUESS", + "D", + "V", + "X", + "V", + "OC", + "GUESS", + "A", + "V", + "A", + "GUESS", + "NC", + "D", + "A", + "GUESS", + "V", + "NC", + "OC", + "GUESS", + "W", + "A", + "GUESS", + "GUESS", + "D", + "A", + "GUESS", + "W", + "A", + "NC", + "GUESS", + "NC", + "NC", + "GUESS", + "A", + "GUESS", + "GUESS", + "NC", + "D", + "NC", + "W", + "V", + "NC", + "GUESS", + "V", + "XS", + "GUESS", + "NC", + "W", + "V", + "A", + "NC", + "NC", + "V", + "NC", + "GUESS", + "V", + "NC", + "GUESS", + "A", + "NC", + "OC", + "E", + "NC", + "GUESS", + "NC", + "A", + "NC", + "GUESS", + "V", + "V", + "V", + "GUESS", + "NP", + "NP", + "GUESS", + "GUESS", + "NC", + "NP", + "NC", + "GUESS", + "NC", + "NC", + "GUESS", + "GUESS", + "NC", + "GUESS", + "NP", + "A", + "V", + "NC", + "NC", + "NC", + "NC", + "NC", + "GUESS", + "GUESS", + "GUESS", + "NC", + "V", + "V", + "NP", + "A", + "V", + "NC", + "NC", + "NC", + "GUESS", + "A", + "NC", + "NC", + "V", + "A", + "NC", + "GUESS", + "NC", + "NC", + "GUESS", + "GUESS", + "NR", + "NC", + "GUESS", + "W", + "NP", + "W", + "NC", + "W", + "A", + "V", + "NC", + "NC", + "GUESS", + "NC", + "NC", + "GUESS", + "NM", + "V", + "NC", + "E", + "NN", + "NC", + "E", + "NC", + "NC", + "GUESS", + "A", + "NC", + "NC", + "W", + "NC", + "GUESS", + "V", + "NC", + "NC", + "OC", + "NC", + "A", + "W", + "NC", + "A", + "GUESS", + "D", + "M", + "NC", + "NC", + "GUESS", + "D", + "M", + "NC", + "V", + "XS", + "GUESS", + "OC", + "NC", + "NC", + "A", + "V", + "NC", + "A", + "GUESS", + "W", + "E", + "A", + "GUESS", + "A", + "GUESS", + "NC", + "GUESS", + "E", + "V", + "NC", + "GUESS", + "V", + "NM", + "V", + "GUESS", + "A", + "V", + "GUESS", + "E", + "V", + "NM", + "NC", + "GUESS", + "NP", + "NP", + "NC", + "GUESS", + "NP", + "A", + "V", + "NC", + "NC", + "NC", + "NM", + "NC", + "NC", + "V", + "GUESS", + "NC", + "GUESS", + "GUESS", + "NC", + "NC", + "V", + "NC", + "GUESS", + "NC", + "V", + "PL", + "A", + "NC", + "W", + "NC", + "A", + "NC", + "NC", + "A", + "NC", + "PR", + "NC", + "A", + "NC", + "NC", + "A", + "NC", + "NC", + "A", + "NC", + "NC", + "GUESS", + "NC", + "NC", + "NC", + "A", + "NC", + "PR", + "NC", + "NC", + "NC", + "NC", + "A", + "NC", + "NC", + "GUESS", + "NC", + "OC", + "NC", + "NC", + "NC", + "NC", + "A", + "NC", + "PR", + "NC", + "OC", + "NC", + "NC", + "NC", + "NC", + "NC", + "A", + "NC", + "NC", + "GUESS", + "A", + "NA", + "NC", + "W", + "NC", + "PR", + "NC", + "A", + "V", + "NC", + "NC", + "NC", + "A", + "NC", + "NC", + "GUESS", + "NC", + "NM", + "PR", + "V", + "NC", + "NC", + "NC", + "NC", + "A", + "NC", + "NC", + "GUESS", + "NP", + "PR", + "V", + "NC", + "NC", + "NC", + "A", + "NC", + "NC", + "GUESS", + "NP", + "V", + "PR", + "NC", + "A", + "NP", + "V", + "NC", + "NC", + "NC", + "NC", + "NC", + "GUESS", + "GUESS", + "PR", + "V", + "W", + "V", + "NC", + "A", + "NC", + "A", + "NC", + "NC", + "GUESS", + "GUESS", + "NN", + "GUESS", + "PR", + "V", + "NC", + "A", + "NC", + "NC", + "NC", + "NC", + "GUESS", + "GUESS", + "A", + "NC", + "PR", + "GUESS", + "GUESS", + "NM", + "NN", + "GUESS", + "NC", + "NC", + "NC", + "GUESS", + "A", + "V", + "NC", + "V", + "OC", + "NC", + "NC", + "NC", + "GUESS", + "A", + "V", + "NC", + "A", + "NC", + "GUESS", + "NC", + "A", + "GUESS", + "NC", + "D", + "GUESS", + "D", + "D", + "V", + "OC", + "NC", + "GUESS", + "D", + "V", + "NC", + "NM", + "A", + "NC", + "NC", + "V", + "D", + "GUESS", + "J", + "V", + "NC", + "NN", + "NC", + "NN", + "NC", + "V", + "A", + "GUESS", + "NC", + "OC", + "NN", + "NM", + "GUESS", + "OC", + "GUESS", + "NC", + "NC", + "V", + "OC", + "A", + "NR", + "A", + "GUESS", + "NC", + "NR", + "A", + "E", + "GUESS", + "V", + "A", + "OC", + "NC", + "GUESS", + "GUESS", + "NC", + "NR", + "A", + "D", + "E", + "GUESS", + "GUESS", + "GUESS", + "NC", + "A", + "A", + "W", + "OC", + "GUESS", + "D", + "V", + "OC", + "NC", + "NC", + "D", + "D", + "V", + "A", + "NC", + "GUESS", + "D", + "NC", + "NC", + "D", + "GUESS", + "PL", + "PL", + "GUESS", + "NM", + "PL", + "NC", + "GUESS", + "D", + "PL", + "A", + "GUESS", + "D", + "D", + "NC", + "W", + "NC", + "NC", + "PL", + "GUESS", + "GUESS", + "OC", + "NC", + "NC", + "GUESS", + "OC", + "NM", + "PR", + "NC", + "NC", + "NC", + "NM", + "PL", + "D", + "NC", + "D", + "NC", + "OC", + "NC", + "GUESS", + "NC", + "A", + "A", + "A", + "W", + "OC", + "NC", + "V", + "GUESS", + "V", + "NC", + "A", + "GUESS", + "W", + "V", + "NC", + "NC", + "W", + "NC", + "GUESS", + "V", + "A", + "NC", + "GUESS", + "A", + "NC", + "GUESS", + "D", + "NC", + "OC", + "NC", + "A", + "A", + "GUESS", + "V", + "NC", + "NC", + "A", + "V", + "GUESS", + "V", + "NC", + "GUESS", + "NN", + "W", + "GUESS", + "NC", + "GUESS", + "D", + "V", + "NC", + "NC", + "OC", + "NC", + "W", + "NC", + "GUESS", + "D", + "W", + "GUESS", + "GUESS", + "GUESS", + "GUESS", + "V", + "GUESS", + "W", + "D", + "NC", + "GUESS", + "GUESS", + "GUESS", + "V", + "NC", + "A", + "V", + "OC", + "NC", + "NC", + "W", + "NC", + "V", + "GUESS", + "NC", + "A", + "GUESS", + "GUESS", + "D", + "GUESS", + "NC", + "NC", + "W", + "V", + "W", + "NP", + "W", + "NC", + "NN", + "NM", + "NC", + "OC", + "NC", + "GUESS", + "V", + "NC", + "NC", + "A", + "GUESS", + "NN", + "W", + "V", + "NC", + "A", + "GUESS", + "NM", + "NC", + "A", + "NC", + "A", + "GUESS", + "NC", + "GUESS", + "A", + "OC", + "NC", + "NC", + "E", + "NC", + "GUESS", + "V", + "NC", + "NC", + "V", + "NC", + "W", + "NC", + "GUESS", + "A", + "V", + "NC", + "NC", + "A", + "OC", + "A", + "W", + "NC", + "GUESS", + "A", + "E", + "GUESS", + "V", + "V", + "GUESS", + "D", + "V", + "X", + "V", + "OC", + "GUESS", + "A", + "V", + "A", + "GUESS", + "NC", + "D", + "A", + "GUESS", + "V", + "NC", + "OC", + "GUESS", + "W", + "A", + "GUESS", + "GUESS", + "NN", + "W", + "V", + "NC", + "A", + "GUESS", + "NC", + "W", + "GUESS", + "OC", + "GUESS", + "A", + "NC", + "A", + "GUESS", + "V", + "GUESS", + "A", + "V", + "GUESS", + "NC", + "GUESS", + "OC", + "NC", + "NC", + "NC", + "GUESS", + "W", + "V", + "NC", + "V", + "OC", + "V", + "GUESS", + "NC", + "NC", + "OC", + "W", + "V", + "NC", + "GUESS", + "A", + "NC", + "GUESS", + "NC", + "NC", + "GUESS", + "GUESS", + "NA", + "GUESS", + "W", + "NP", + "W", + "NC", + "W", + "D", + "NN", + "NM", + "NC", + "NC", + "NC", + "NC", + "GUESS", + "D", + "V", + "NC", + "A", + "GUESS", + "NC", + "NC", + "A", + "V", + "NC", + "A", + "OC", + "NC", + "GUESS", + "NN", + "W", + "V", + "A", + "A", + "GUESS", + "V", + "A", + "NC", + "A", + "GUESS", + "NC", + "A", + "GUESS", + "V", + "NC", + "GUESS", + "NC", + "V", + "V", + "NC", + "A", + "GUESS", + "NN", + "W", + "V", + "NC", + "NC", + "GUESS", + "NM", + "E", + "V", + "A", + "NC", + "V", + "GUESS", + "E", + "OC", + "NC", + "NC", + "V", + "A", + "OC", + "V", + "V", + "GUESS", + "E", + "NC", + "NC", + "OC", + "NC", + "A", + "GUESS", + "NC", + "NM", + "V", + "NC", + "A", + "PR", + "A", + "GUESS", + "NN", + "NM", + "A", + "GUESS", + "NC", + "NC", + "GUESS", + "A", + "A", + "V", + "NC", + "NC", + "OC", + "GUESS", + "PR", + "V", + "A", + "V", + "GUESS", + "NC", + "A", + "GUESS", + "NC", + "V", + "GUESS", + "NC", + "OC", + "NC", + "V", + "NC", + "NC", + "OC", + "GUESS", + "D", + "W", + "PR", + "V", + "NC", + "D", + "V", + "V", + "GUESS", + "D", + "W", + "V", + "V", + "V", + "D", + "V", + "NC", + "GUESS", + "NN", + "W", + "V", + "NC", + "V", + "GUESS", + "D", + "NC", + "NC", + "NC", + "NC", + "GUESS", + "NM", + "NC", + "NC", + "NC", + "W", + "GUESS", + "V", + "W", + "GUESS", + "V", + "W", + "GUESS", + "A", + "J", + "NC", + "NC", + "XS", + "GUESS", + "NC", + "NC", + "GUESS", + "V", + "NC", + "NC", + "W", + "U", + "A", + "GUESS", + "V", + "D", + "NC", + "D", + "NC", + "GUESS", + "V", + "NC", + "A", + "NM", + "NC", + "GUESS", + "D", + "NC", + "GUESS", + "W", + "NC", + "GUESS", + "V", + "NC", + "OC", + "NC", + "XS", + "GUESS", + "V", + "W", + "V", + "XS", + "NC", + "NC", + "GUESS", + "V", + "NC", + "GUESS", + "NC", + "NC", + "GUESS", + "E", + "V", + "OC", + "D", + "A", + "V", + "W", + "GUESS", + "NM", + "NC", + "V", + "D", + "NP", + "GUESS", + "GUESS", + "GUESS", + "A", + "NM", + "NC", + "OC", + "D", + "A", + "V", + "XS", + "GUESS", + "W", + "NP", + "W", + "NC", + "OC", + "A", + "A", + "NC", + "GUESS", + "A", + "V", + "NC", + "GUESS", + "V", + "A", + "V", + "A", + "NC", + "GUESS", + "W", + "D", + "V", + "V", + "GUESS", + "V", + "V", + "GUESS", + "V", + "NC", + "GUESS", + "V", + "A", + "GUESS", + "A", + "NP", + "V", + "OC", + "NC", + "NC", + "GUESS", + "W", + "NC", + "V", + "GUESS", + "GUESS", + "OC", + "GUESS", + "NP", + "OC", + "A", + "NC", + "OC", + "GUESS", + "W", + "NN", + "NC", + "V", + "D", + "GUESS", + "E", + "A", + "V", + "GUESS", + "NP", + "V", + "NC", + "NC", + "OC", + "GUESS", + "W", + "NC", + "A", + "A", + "GUESS", + "GUESS", + "GUESS", + "V", + "NC", + "NC", + "NC", + "NC", + "NC", + "A", + "A", + "NP", + "A", + "NC", + "NC", + "NC", + "GUESS", + "D", + "W", + "V", + "NC", + "GUESS", + "E", + "NC", + "GUESS", + "D", + "W", + "V", + "NC", + "GUESS", + "A", + "V", + "GUESS", + "V", + "NC", + "NC", + "W", + "NC", + "GUESS", + "GUESS", + "NC", + "NC", + "NC", + "GUESS", + "NM", + "NC", + "V", + "D", + "V", + "GUESS", + "E", + "NN", + "NM", + "GUESS", + "XS", + "GUESS", + "W", + "NC", + "NC", + "V", + "OC", + "A", + "NC", + "GUESS", + "V", + "W", + "A", + "A", + "OC", + "NC", + "NC", + "NM", + "NC", + "GUESS", + "W", + "V", + "NC", + "NC", + "GUESS", + "V", + "NC", + "NC", + "D", + "GUESS", + "NC", + "NC", + "D", + "GUESS", + "NC", + "NC", + "NC", + "NM", + "W", + "GUESS", + "NM", + "V", + "GUESS", + "NM", + "V", + "GUESS", + "J", + "NC", + "NC", + "NC", + "NC", + "GUESS", + "NC", + "E", + "NC", + "NC", + "V", + "GUESS", + "NC", + "NC", + "W", + "V", + "V", + "NC", + "NC", + "V", + "GUESS", + "V", + "GUESS", + "A", + "NC", + "OC", + "NC", + "GUESS", + "NC", + "NC", + "V", + "W", + "A", + "V", + "NC", + "D", + "V", + "OC", + "NC", + "NC", + "W", + "V", + "A", + "GUESS", + "D", + "V", + "NC", + "GUESS", + "NC", + "A", + "GUESS", + "D", + "V", + "GUESS", + "GUESS", + "A", + "NC", + "GUESS", + "D", + "A", + "NC", + "V", + "A", + "NC", + "OC", + "NC", + "GUESS", + "NC", + "GUESS", + "NC", + "GUESS", + "V", + "A", + "NC", + "NC", + "V", + "NC", + "GUESS", + "V", + "NC", + "GUESS", + "A", + "NC", + "OC", + "E", + "NC", + "GUESS", + "NP", + "A", + "V", + "NC", + "NC", + "NC", + "NC", + "V", + "GUESS", + "NP", + "W", + "NC", + "V", + "NC", + "J", + "V", + "NC", + "A", + "NC", + "V", + "NC", + "GUESS" ], - "requestId": "b966f19b-6ccd-4202-9ed2-1427df4380d7", - "timers": { - "rblJe": 19, - "rliJe": 5, - "textExtractor": 28, - "urlContentDownloader": 74 - } + "tokens": [ + "习", + "近平", + "主持", + "深", + "改组", + "会议", + "听取", + "10", + "项", + "汇报", + "会议", + "指出", + ",", + "全面", + "深化", + "改革", + ",", + "上来", + "就", + "必须", + "有", + "气势", + ",", + "先", + "集中", + "力量", + "把", + "主要", + "改革", + "举措", + "推出", + "来", + ",", + "然后", + "集中", + "力量", + "一", + "项", + "一", + "项", + "抓好", + "落实", + "。", + "4", + ",", + "改革", + "规律", + "和", + "特点", + "抓", + "改革", + "落实", + ",", + "要", + "遵循", + "改革", + "规律", + "和", + "特点", + ",", + "建立", + "全", + "过程", + "、", + "高", + "效率", + "、", + "可", + "核实", + "的", + "改革", + "落实", + "机制", + ",", + "推动", + "改革", + "举措", + "早", + "落地", + "、", + "见", + "实效", + "。", + "并", + "提出", + "6", + "个", + "举措", + ":", + "其中", + ",", + "就", + "“", + "抓", + "督办", + "协调", + "”", + ",", + "会议", + "指出", + ",", + "要", + "把", + "部门", + "协调", + "难度", + "大", + "、", + "政策", + "关联度", + "高", + "的", + "改革", + "举措", + "作为", + "重点", + ",", + "谋划", + "改革", + "举措", + "出台", + "时机", + "和", + "节奏", + ",", + "协调", + "解决", + "改革", + "推进", + "中", + "的", + "矛盾", + "和", + "问题", + "。", + "对", + "敷衍塞责", + "、", + "拖延", + "扯皮", + "、", + "屡", + "推", + "不", + "动", + "的", + ",", + "对", + "重视", + "不够", + "、", + "研究", + "甚", + "少", + "、", + "贯彻", + "乏力", + "的", + ",", + "要", + "进行", + "问责", + "。", + "没", + "错", + ",", + "要", + "对", + "以下", + "6", + "种", + "情况", + ",", + "进行", + "问责", + ":", + "会议", + "还", + "强调", + "要", + "做", + "促进派", + "、", + "实干", + "家", + ",", + "并", + "要", + "推动", + "全", + "社会", + "形成", + "想", + "改革", + "、", + "敢", + "改革", + "、", + "善", + "改革", + "的", + "良好", + "风尚", + "。", + "更", + "多", + "内容", + ",", + "请", + "看", + "通稿", + ":", + "新华社", + "北京", + "2月", + "23日", + "电", + "中共中央", + "总书记", + "、", + "国家", + "主席", + "、", + "中央军委", + "主席", + "、", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "组长", + "习", + "近平", + "2月", + "23日", + "下午", + "主持", + "召开", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "第二十一", + "次", + "会议", + "并", + "发表", + "重要", + "讲话", + "。", + "全局", + "意识", + "、", + "责任意识", + "他", + "强调", + ",", + "各", + "地区", + "各", + "部门", + "要", + "牢固", + "树立", + "全局", + "意识", + "、", + "责任", + "意识", + ",", + "把", + "抓", + "改革", + "作为", + "一", + "项", + "重大", + "政治", + "责任", + ",", + "坚定", + "改革", + "决心", + "和", + "信心", + ",", + "增强", + "推进", + "改革", + "的", + "思想", + "自觉", + "和", + "行动", + "自觉", + ",", + "既", + "当", + "改革", + "促进派", + "、", + "又", + "当", + "改革", + "实干", + "家", + ",", + "以", + "钉", + "钉子", + "精神", + "抓好", + "改革", + "落实", + ",", + "扭", + "住", + "关键", + "、", + "精", + "准发", + "力", + ",", + "敢于", + "啃", + "硬骨头", + ",", + "盯", + "着", + "抓", + "、", + "反复", + "抓", + ",", + "直到", + "抓", + "出", + "成效", + "。", + "中共中央", + "政治局", + "常委", + "、", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "副", + "组长", + "李", + "克强", + "、", + "刘", + "云山", + "、", + "张", + "高丽", + "出席", + "会议", + "。", + "会议", + "听取", + "了", + "经济", + "体制", + "和", + "生态", + "文明", + "体制", + "改革", + "专项", + "小组", + "关于", + "生态", + "文明", + "体制", + "改革", + "总体", + "方案", + "推进", + "落实", + "情况", + "汇报", + "、", + "社会", + "体制", + "改革", + "专项", + "小组", + "关于", + "司法", + "体制", + "改革", + "推进", + "落实", + "情况", + "汇报", + "、", + "党", + "的", + "纪律", + "检查", + "体制", + "改革", + "专项", + "小组", + "关于", + "党", + "的", + "纪律", + "检查", + "体制", + "改革", + "推进", + "落实", + "情况", + "汇报", + ",", + "全国", + "人大", + "常委会", + "法", + "工委", + "关于", + "立法", + "主动", + "适应", + "改革", + "需要", + "推进", + "落实", + "情况", + "汇报", + "、", + "科技", + "部", + "关于", + "深化", + "科技", + "体制", + "改革", + "推进", + "落实", + "情况", + "汇报", + "、", + "公安部", + "关于", + "深化", + "公安", + "改革", + "推进", + "落实", + "情况", + "汇报", + ",", + "上海", + "市", + "关于", + "推进", + "落实", + "中央", + "部署", + "改革", + "试点", + "任务", + "情况", + "汇报", + "、", + "湖北省", + "关于", + "建立", + "和", + "实施", + "改革", + "落实", + "督察", + "机制", + "情况", + "汇报", + "、", + "福建省", + "三", + "明市", + "关于", + "深化", + "医药", + "卫生", + "体制", + "改革", + "情况", + "汇报", + "、", + "浙江省", + "开化", + "县", + "关于", + "“", + "多规", + "合", + "一", + "”", + "试点", + "情况", + "汇报", + "。", + "全面", + "深化", + "改革", + "必须", + "有", + "气势", + "会议", + "强调", + ",", + "全面", + "深化", + "改革", + "是", + "系统工程", + ",", + "头绪", + "多", + ",", + "任务", + "重", + ",", + "上来", + "就", + "必须", + "有", + "气势", + ",", + "先", + "集中", + "力量", + "把", + "主要", + "改革", + "举措", + "推出", + "来", + ",", + "然后", + "集中", + "力量", + "一", + "项", + "一", + "项", + "抓好", + "落实", + "。", + "党", + "的", + "十八", + "届", + "三中全会", + "以来", + ",", + "改革", + "举措", + "出台", + "的", + "数量", + "之", + "多", + "、", + "力度", + "之", + "大", + "前所未有", + ",", + "抓", + "落实", + "的", + "任务", + "之重", + "、", + "压力", + "之", + "大", + "也", + "前所未有", + "。", + "总的看", + ",", + "改革", + "落实", + "是", + "好", + "的", + ",", + "已经", + "出台", + "的", + "改革", + "举措", + "大多", + "已", + "进入", + "落实", + "阶段", + ",", + "有些", + "改革", + "举措", + "已", + "经落", + "了", + "地", + "、", + "扎", + "了", + "根", + "、", + "开", + "了", + "花", + ",", + "有些", + "在", + "地方", + "和", + "部门", + "形成", + "了", + "细化", + "实化", + "的", + "制度", + "安排", + ",", + "有", + "些", + "通过", + "试点", + "探索", + "总结", + "出", + "了", + "可", + "复制", + "可", + "推广", + "的", + "经验", + "。", + "改革", + "落实", + "总体", + "是", + "好", + "的", + "会议", + "指出", + ",", + "抓", + "改革", + "落实", + ",", + "要", + "遵循", + "改革", + "规律", + "和", + "特点", + ",", + "建立", + "全", + "过程", + "、", + "高", + "效率", + "、", + "可", + "核实", + "的", + "改革", + "落实", + "机制", + ",", + "推动", + "改革", + "举措", + "早", + "落地", + "、", + "见", + "实效", + "。", + "一", + "要", + "抓主体", + "责任", + ",", + "凡是", + "承担", + "改革", + "任务", + "的", + "地方", + "和", + "部门", + ",", + "都", + "要", + "知责", + "明责", + "、", + "守责", + "尽责", + ",", + "各", + "就", + "各位", + "、", + "各负其责", + "。", + "牵头", + "部门", + "对", + "经办", + "的", + "改革", + "举措", + "要", + "全程", + "过问", + "、", + "全程", + "负责", + "、", + "一抓", + "到底", + "。", + "地方", + "党委", + "要", + "统筹", + "好", + "中央", + "和", + "地方", + "两", + "个", + "层面", + "的", + "要求", + ",", + "抓好", + "改革", + "举措", + "落实", + "。", + "二", + "要", + "抓", + "督办", + "协调", + ",", + "把", + "部门", + "协调", + "难度", + "大", + "、", + "政策", + "关联度", + "高", + "的", + "改革", + "举措", + "作为", + "重点", + ",", + "谋划", + "改革", + "举措", + "出台", + "时机", + "和", + "节奏", + ",", + "协调", + "解决", + "改革", + "推进", + "中", + "的", + "矛盾", + "和", + "问题", + "。", + "对", + "敷衍塞责", + "、", + "拖延", + "扯皮", + "、", + "屡", + "推", + "不", + "动", + "的", + ",", + "对", + "重视", + "不够", + "、", + "研究", + "甚", + "少", + "、", + "贯彻", + "乏力", + "的", + ",", + "要", + "进行", + "问责", + "。", + "三", + "要", + "抓", + "督察", + "落实", + ",", + "强化", + "督", + "察职", + "能", + ",", + "健全", + "督察", + "机制", + ",", + "抓紧", + "构建", + "上下", + "贯通", + "、", + "横向", + "联动", + "的", + "督察", + "工作", + "格局", + "。", + "要", + "重视", + "督察", + "结果", + "的", + "运用", + ",", + "发现", + "问题", + "的", + "要", + "列出", + "清单", + "、", + "明确", + "责任", + "、", + "限定", + "时间", + "、", + "挂账", + "整改", + "。", + "各", + "地区", + "各", + "部门", + "要", + "确定", + "一", + "批", + "重点", + "改革", + "督察", + "项目", + ",", + "大力", + "抓", + "督察", + "落实", + ",", + "形成", + "全党", + "上下", + "抓", + "改革", + "落实", + "的", + "局面", + "。", + "四", + "要", + "抓", + "完善", + "机制", + ",", + "抓紧", + "完善", + "督办", + "协调", + "、", + "督察", + "落实", + "、", + "考评", + "激励", + "、", + "责任", + "追究", + "等", + "工作", + "机制", + "。", + "五", + "要", + "抓", + "改革", + "成效", + ",", + "把", + "是否", + "促进", + "经济", + "社会", + "发展", + "、", + "是否", + "给", + "人民", + "群众", + "带来", + "实实在在", + "的", + "获得", + "感", + ",", + "作为", + "改革", + "成效", + "的", + "评价", + "标准", + "。", + "注意", + "把", + "抓", + "改革", + "落实", + "同", + "落实", + "“", + "四", + "个", + "全面", + "”", + "战略", + "布局", + "、", + "落实", + "新", + "发展", + "理念", + "结合", + "起来", + ",", + "同", + "抓", + "经济", + "发展", + "、", + "社会", + "稳定", + "、", + "民生", + "改善", + "、", + "党", + "的", + "建设", + "等", + "工作", + "结合", + "起来", + ",", + "既", + "要", + "通过", + "抓", + "改革", + "来", + "促", + "发展", + ",", + "又", + "要", + "围绕", + "谋", + "发展", + "来", + "抓", + "改革", + "。", + "六", + "要", + "抓", + "成果", + "巩固", + ",", + "及时", + "总结", + "推广", + "改革", + "经验", + ",", + "把", + "各项", + "成果", + "总结", + "好", + "、", + "巩固", + "好", + "、", + "发展", + "好", + ",", + "努力", + "使", + "实践", + "成果", + "上", + "升为", + "制度", + "成果", + "。", + "部署", + "改革", + "试点", + "要", + "目的", + "明确", + ",", + "做到", + "可", + "复制", + "可", + "推广", + ",", + "不要", + "引导", + "到", + "发", + "帽子", + "、", + "争", + "政策", + "、", + "要", + "资金", + "、", + "搞", + "项目", + "的", + "方向", + "上", + "。", + "促进", + "派", + "实干", + "家", + "会议", + "强调", + ",", + "拥护", + "改革", + "、", + "支持", + "改革", + "、", + "敢于", + "担当", + "的", + "就", + "是", + "促进", + "派", + ",", + "把", + "改革", + "抓", + "在", + "手上", + "、", + "落到实处", + "、", + "干", + "出", + "成效", + "的", + "就", + "是", + "实干", + "家", + "。", + "各", + "地区", + "各", + "部门", + "的", + "主要", + "负责", + "同志", + ",", + "对", + "抓", + "改革", + "、", + "抓", + "落实", + "负有", + "直接", + "责任", + ",", + "要", + "亲自", + "抓", + "谋划", + "、", + "抓", + "部署", + "、", + "抓", + "督察", + "、", + "抓", + "落实", + "。", + "对", + "中央", + "部署", + "的", + "改革", + "任务", + ",", + "要", + "高度", + "重视", + "、", + "亲力亲", + "为", + ",", + "中央", + "有", + "具体", + "要求", + "的", + ",", + "要", + "一", + "竿子", + "插", + "到底", + ",", + "不折不扣", + "落实", + "下去", + ";", + "中央", + "提出", + "原则", + "要求", + "的", + ",", + "要", + "结合", + "实际", + "进行", + "细化", + "实化", + "。", + "立足", + "全局", + "总结", + "经验", + "调查", + "研究", + "对", + "本", + "地区", + "本", + "部门", + "改革", + "任务", + ",", + "既", + "要", + "抓紧", + "推进", + "、", + "敢于", + "突破", + ",", + "又", + "要", + "立足", + "全局", + "、", + "通盘", + "考虑", + "。", + "市", + "县", + "一级", + "要", + "注意", + "配足力量", + ",", + "创新", + "工作", + "方法", + ",", + "把", + "精力", + "集中", + "在", + "打通", + "“", + "最后", + "一", + "公里", + "”", + "上", + "。", + "要", + "总结", + "各地", + "创造", + "的", + "新鲜", + "经验", + ",", + "发挥", + "好", + "先进", + "典型", + "的", + "示范", + "引", + "领", + "作用", + "。", + "要", + "重视", + "调查", + "研究", + ",", + "坚持", + "眼睛", + "向", + "下", + "、", + "脚步", + "向", + "下", + ",", + "了解", + "基层", + "群众", + "所", + "思", + "、", + "所", + "想", + "、", + "所", + "盼", + ",", + "使", + "改革", + "更", + "接地", + "气", + "。", + "形成", + "良好", + "风尚", + "会议", + "指出", + ",", + "各级", + "党委", + "要", + "着力", + "提高", + "领导", + "干部", + "谋划", + "、", + "推动", + "、", + "落实", + "改革", + "的", + "能力", + ",", + "引导", + "干部", + "树立", + "与", + "全面", + "深化", + "改革", + "相", + "适应", + "的", + "思想", + "作风", + "和", + "担当", + "精神", + ",", + "既", + "鼓励", + "创新", + "、", + "表扬", + "先进", + ",", + "也", + "允许", + "试错", + "、", + "宽容", + "失败", + ",", + "最", + "大", + "限度", + "调动", + "广大", + "干部", + "的", + "积极性", + "、", + "主动性", + "、", + "创造性", + ",", + "推动", + "全", + "社会", + "形成", + "想", + "改革", + "、", + "敢", + "改革", + "、", + "善", + "改革", + "的", + "良好", + "风尚", + "。", + "中央", + "全面", + "深化", + "改革", + "领导", + "小组", + "成员", + "出席", + ",", + "中央", + "和", + "国家", + "有关", + "部门", + "以及", + "有关", + "地方", + "负责", + "同志", + "列席", + "会议", + "。" + ] } \ No newline at end of file diff --git a/api/src/test/mock-data/response/zho-url-sentiment.json b/api/src/test/mock-data/response/zho-url-sentiment.json index de53721fe6..f013e395af 100644 --- a/api/src/test/mock-data/response/zho-url-sentiment.json +++ b/api/src/test/mock-data/response/zho-url-sentiment.json @@ -1,5 +1,4 @@ { "code": "unsupportedLanguage", - "message": "Chinese is not supported by Rosette Sentiment Analyzer", - "requestId": "51452bb2-871a-4c7a-9edd-fbb1bee8a96a" + "message": "Unsupported language: Chinese" } \ No newline at end of file diff --git a/api/src/test/mock-data/source/doc-strings.tsv b/api/src/test/mock-data/source/doc-strings.tsv index 42d4f6da69..5ae85556f3 100644 --- a/api/src/test/mock-data/source/doc-strings.tsv +++ b/api/src/test/mock-data/source/doc-strings.tsv @@ -1,5 +1,5 @@ -language unit content -eng doc "Samsung Can Sell Its Tablet In The U.S. Market +language content +eng "Samsung Can Sell Its Tablet In The U.S. Market The war between Samsung Electronics and Apple seems to be never ending. The companies have engaged in an international warfare, across continents, with more than 20 cases in 10 countries. The latest news in the Samsung vs. Apple conflict comes from U.S. where a judge decided that Samsung can sell its tablet in the U.S. market. @@ -20,8 +20,8 @@ Last week, a judge in Australia ruled in favor of Apple by extending a ban on Sa http://newsinabox.net/2202/samsung-can-sell-its-tablet-in-the-u-s-market.html 2011.12.05" -eng sentence He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the "commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people" and U.S. allies. -zho doc "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。 +eng He also acknowledged the ongoing U.S. conflicts in Iraq and Afghanistan, noting that he is the "commander in chief of a country that is responsible for ending a war and working in another theater to confront a ruthless adversary that directly threatens the American people" and U.S. allies. +zho "新华网联合国1月22日电(记者 白洁 王湘江)第64届联合国大会22日一致通过决议,呼吁192个成员国尽快响应联合国发起的海地救援紧急募捐呼吁,强调各国应对联合国主导的救灾工作予以支持。 联大当天在纽约联合国总部就海地地震举行全体会议。第64届联大代理主席、哈萨克斯坦常驻联合国代表艾季莫娃在致辞中说,海地灾后的长期重建和发展工作需要国际社会在未来几个月甚至几年内长期关注。 @@ -31,8 +31,8 @@ zho doc "新华网联合国1月22日电(记者 白洁 王湘江)第 http://news.xinhuanet.com/world/2010-01/23/content_12860329.htm 2010.01.24" -zho sentence 5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。 -ara doc "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش) +zho 5月的莫斯科,草木葱茏,旌旗飘扬,呈现出浓郁的节日气氛。从当地时间9时开始,胡锦涛同其他国家领导人相继来到克里姆林宫,同在那里迎候的俄罗斯总统梅德韦杰夫亲切握手。随后,胡锦涛同出席庆典的其他贵宾前往红场,在红场观礼台就座。 +ara "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحديث) الساعة 10:01 (مكة المكرمة)، 7:01 (غرينتش) ناتو يفكر بمسؤول مدني لأفغانستان @@ -45,8 +45,8 @@ ara doc "الخميس 5/2/1431 هـ - الموافق 21/1/2010 م (آخر تحد http://www.aljazeera.net/NR/exeres/BFE99131-3CD5-4211-BECC-82EFF384BEEF.htm 2010.01.26" -ara sentence بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا. -spa doc """Entrega el mar, devuelve el mar..."", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país. +ara بدأ العمل في يناير 2004 الذي يتم بناءه في وسط دبي وبلغت تكلفته الإجمالية 1.5 مليار دولار أميركي[5]؛ وتم افتتاحه في 4 يناير 2010 بحضور الشيخ محمد بن راشد آل مكتوم حاكم دبي. ويبلغ طول البرج 828 مترا وستكون المساحة الإجمالية 4,000,000 متر مربع وسيضم 37 طابقاً كفندق ليضم 403 جناح فندقي، وسيضم 57 مصعد كهربائي وسيكون أسرعهم 10م/ثانية، وللوصول إلى 500 م تحتاج إلى 55 ثانية وتمتلكه شركة إعمار العقارية وتعد واحدة من أكبر الشركات العقارية في العالم.و قد تولت عملية البناء شركة Samsung C&T. وهذا البرج الذي يرتفع بسرعة طابق كل ثلاث أيام (تقريبا) شكل البناء الرئيسي في مشروع عمراني ضخم بقيمة 20 مليار دولار يتوقع أن يغير ملامح المدينة. وأوضح روبرت بوث المدير التنفيذي في الشركة الإماراتية التي تنفذ المشروع أنه سيتم استخدام المبنى لأغراض متعددة، وسيضم المبنى محلات تجارية وأماكن للترفيه وفندقاً ووحدات سكنية وأجنحة خاصة للمؤسسات وحديقة بانورامية. وتم افتتاحه في 4 يناير 2010 والمكون من 124 طابقا. +spa """Entrega el mar, devuelve el mar..."", gritaron algunos de los ciudadanos paceños apostados en la Plaza Murillo, a las afueras del palacio de gobierno y la sede del Congreso de Bolivia, mientras la Presidenta Michelle Bachelet salía de la extensa ceremonia en que Evo Morales renovó por cinco años más como Mandatario de ese país. La Presidenta ya había abordado el tema marítimo a primera hora de ayer, mientras visitaba un hospital para niños. Ahí, Bachelet destacó que en 2006 había acordado con Morales una agenda de 13 puntos, en la que ""hemos hecho progresos importantes"". ""Y todos esperamos que en los años venideros nuestros Estados continúen profundizándola"", agregó. Aludía así a la agenda que, en su punto sexto, contempla el ""tema marítimo"", pero cuyos detalles son poco conocidos. Por lo mismo, cuando fue consultada sobre qué esperaría que hiciera sobre este punto específico su sucesor, Sebastián Piñera, ella reforzó su mensaje. ""Lo que tiene que hacer cualquier gobierno en Chile es seguir profundizando todos los puntos de trabajo en una agenda que ha sido concordada en común"", dijo la Mandataria. @@ -57,8 +57,8 @@ Dicha inquietud tuvo su origen en el debate presidencial de hace dos semanas ent http://diario.elmercurio.com/2010/01/23/nacional/politica/noticias/47D6CA26-B011-40B5-AEAB-D0E6A5F52E59.htm?id={47D6CA26-B011-40B5-AEAB-D0E6A5F52E59} 2010.01.23" -spa sentence La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos. -fra doc "Les Etats-Unis face au défi persistant du chômage +spa La crisis se ha producido en un tiempo de transición burocrática. La nueva zarina de la Política Exterior de la UE, Catherine Ashton, debe aún afianzarse en su puesto y el Parlamento Europeo ha impedido el nombramiento de la designada comisaria Rumiana Jeleva, cuyo cometido incluía la ayuda humanitaria. Como resultado, la respuesta de la UE parece revestir todos los signos de la política previa al Tratado de Lisboa: lenta, tecnocrática y eclipsada por Estados Unidos. +fra "Les Etats-Unis face au défi persistant du chômage Un chômeur américain sur deux dit souffrir d'anxiété ou de dépression et a dû emprunter de l'argent à des amis. Selon une enquête publiée, lundi 18 janvier, par le Census Bureau (équivalent de l'Insee), en deux ans, le nombre de couples au chômage avec enfants mineurs a doublé. Près de 40 % des ces parents notent des ""modifications de comportement"" chez leurs enfants qu'ils attribuent à leur perte du travail. La moitié évoquent une ""transformation fondamentale"" de leur existence - le premier des changements consistant en la perte presque instantanée de toute couverture sociale. Durant tout le mois de décembre, à l'approche de l'anniversaire de la prise de fonctions du président Barack Obama, le 20 janvier 2009, les reportages et les enquêtes sur les conséquences de ces destructions d'emploi sont devenus une préoccupation obsédante dans les médias. ""Je me sens comme la lie de la terre"", disait récemment un chômeur à une heure de grande écoute. Alors, l'Amérique découvre sur les écrans tous ces visages ravagés qui évoquent leur ""honte"" et s'interroge : 10 % de chômage, comment en est-on arrivé là ? @@ -87,8 +87,8 @@ La Chambre a voté en décembre 2009 une loi sur la création d'emplois de 174 m http://www.lemonde.fr/ameriques/article/2010/01/21/les-etats-unis-face-au-defi-persistant-du-chomage_1294839_3222.html#xtor=RSS-3210 2010.01.21" -fra sentence Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un "intense processus diplomatique" pour prendre en compte la dimension régionale du conflit en Afghanistan. "Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis. -pus doc "د افغانستان د كابيني لوي لست +fra Richard Holbrooke veut souligner à quel point l'administration Obama est engagée dans un "intense processus diplomatique" pour prendre en compte la dimension régionale du conflit en Afghanistan. "Il n'y a pas d'issue en Afghanistan sans prendre en compte tous ceux qui ont un intérêt stratégique (dans la région), tous les acteurs, y compris ceux qui n'ont pas de frontière commune avec ce pays", dit-il, en mentionnant l'Inde, la Russie, la Turquie, l'Arabie saoudite, les Emirats arabes unis. +pus "د افغانستان د كابيني لوي لست د افغانستان ولسمشر حامد كرزي په خپله نوي كابينه كي د بهرنيو چارو د وزير په توګه د امنيت په برخه كي خپل سلاكار زلمي رسول نوماند كړي دي . @@ -101,8 +101,8 @@ pus doc "د افغانستان د كابيني لوي لست http://www.trtpashto.com/trtinternational/pa/newsDetail.aspx?HaberKodu=efb3ec08-e5d5-4007-addc-0cc81652bc62 2010.01.24" -pus sentence د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي . -jpn doc "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。 +pus د پښتو ادب په کلاسیکه شاعرۍ کې خوشال هغه علامه ، نابغه ، ستر شاعر او لوی ادیب دی ، چې د څه کم څلورسو کالو راهسې دده کلتوري خزانه تر ننه پورې دافغان ولس د نړۍ د لویو پوهانو او پوهنيزو مرکزونو د پاملرنې او څیړنې وړ کرځیدلې ده . د څیړونکو ځیرکتنه به تر هغې پورې دغه کلتوري میراث ته وجود ولری ، څو چې په نړۍ کې ولسونه په پوهنه او څیړنه بو خت وي . له خوشال څخه کوټې کوټې موضوعات او درانه درانه اثار په میراث راپاتې دي . دده اثار د شعر ، ادب ، ژبپوهنې او نورو بېلا بېلو پوهنو او څیړنو لپاره لوی دریاب دی ، چې لامبوزن هم پکې سټر کیږی خو دده برید ، پوله ، سر او تل به تر خپلې لامبو لاندې داخیل نه کړی او د ژوند تر پایه به پکې ستړی او ستومانه وي . +jpn "ケネディはマサチューセッツ州ブルックラインで、アイルランド系移民の子孫で投資家のジョセフ・P・ケネディ・シニアの次男として生まれた。名前は母方の祖父でボストン市長も勤めたジョン・F・フィッツジェラルドにちなむ。13歳のときにチョート・スクール(コネチカット州ウォリングフォードの寄宿学校)に入学し、その後1935年にイギリスのロンドン・スクール・オブ・エコノミクスに1年間留学した。帰国後ハーバード大学に入学を認められていたものの、親しい友人が進学を決めたプリンストン大学に入学することにした。しかし、クリスマス休暇中にかかった黄疸のため退学している。 1936年の秋にはハーバード大学に転校したが、在学中にフットボールの試合で背中をひどく痛めた。在学中ヨーロッパへ2度旅行しており、2度目の旅行では父親が大使を務めていたイギリスを訪れている。1940年6月、1938年のミュンヘン協定におけるイギリス外交政策の分析についての卒論『イギリスはなぜ眠ったか』を書き、ハーバードを優等で卒業した。 @@ -114,15 +114,15 @@ jpn doc "ケネディはマサチューセッツ州ブルックラインで、 http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBF%E3%83%BB%E3%82%B1%E3%83%8D%E3%83%87%E3%82%A3 2010.01.26" -jpn sentence 政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。 - doc "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder. +jpn 政治家を志したきっかけは中川一郎の存在だったという[3]。1986年、第38回衆議院議員総選挙で、自民党の公認を得た田中派新人として、鳩山家が牧場を所有し鳩山神社という神社がある祖父の代からの地盤北海道から[4]、出馬した。鳩山事務所側は、「立候補の直接のきっかけは三枝三郎衆議院議員の引退がきっかけ」と主張している[5]。初の選挙スローガンは科学者を志望していた自身の経歴をアピールした「政治を科学する」であった[6]。得票数では同じ自民党の高橋辰夫に次いで2番目の得票数で当選した。小選挙区になった1996年以降は、鳩山家が開拓した地域は鳩山の選挙区から外れた[7]。なお、地方区分の選挙区自体は祖父と重複していないため、祖父の地盤を世襲していないと扱われている[8]。 + "3.11.06 - Not und Elend in ihren Heimatländern lassen immer mehr Afrikaner die Reise nach Europa antreten. Insbesondere Spanien ist betroffen - allein 24.000 Flüchtlinge sind in diesem Jahr in Teneriffa angekommen. Nun berät die Europäische Union über Maßnahmen gegen den Flüchtlingsstrom. Nicht alle Länder sehen darin ein Gemeinschaftsproblem - der deutsche Innenminister Schäuble appelliert an die Eigenverantwortung der Länder. Die Flüchtlinge, die auf Teneriffa im Lager ausharren, kommen aus Ländern, in denen sie kaum existieren können - auch wegen der Konkurrenz aus Europa, wie Professor Klaus J. Bade, Migrationsforscher an der Universität Osnabrück weiß: ""Unsere Textilsammlungen landen auf kommerziellen Märkten und ruinieren die Textilindustrie. Und die schwimmenden Fischfabriken - Fisch unten rein, Dose oben raus - vor den afrikanischen Küsten ruinieren die Küstenfischerei. Ergebnis: In Somalia transportieren inzwischen ruinierte Fischer mit ihren Booten die Illegalen in Richtung Europa."" Doch sich vor Illegalen zu schützen, damit müsse jedes Land selbst fertig werden, wie Wolfgang Schäuble (CDU) betont: ""In Brüssel ist der Ruf immer wohlfeil: Es muss alles europäisch gemacht werden. Jedes Land mit Außengrenzen muss seine Außengrenzen schon selber kontrollieren. Wenn wir die Verantwortung nach Europa schieben, wird es weder bürgernäher noch effizienter, sondern ganz im Gegenteil.""" - sentence Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. "Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер", - сообщил он. - "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의 -인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970 + Практически сразу после соревнований в Таллинне стартуют Олимпийские игры в Ванкувере. Однако Олег Овсянников уточнил, что времени и на отдых, и на акклиматизацию будет предостаточно. "Сборная России будет вылетать несколькими этапами. С 31 января начнутся первые вылеты в Ванкувер", - сообщил он. + "김일성(金日成, 1912년 4월 15일 ~ 1994년 7월 8일)은 한국의 독립운동가이자 조선민주주의 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx인민공화국의 정치인이다. 만주 조선공산주의청년동맹, 조선혁명군, 반일인민유격대(그후 조선인민혁명군으로 개편) 등을 조직했다. 해방 후 1948년부터 1972년까지는 조선민주주의인민공화국의 총리, 1972년부터는 인민공화국 국가주석이었고, 1990년 국가주석에 재선되었다. 원래 이름은 김성주(金成柱[1][2] 또는 金聖柱[3][4])였는데, 항일 투쟁을 하면서[3][4][5] 김일성으로 개명[3][4][6]하였다. 1966년 10월 당중앙위원회 제4기 14차전원회의에서 조선로동당 중앙위원회 총비서로 선출되었고 1970 년에 진행된 제5차전당대회와 1980년 10월에의 6차전당대회에서 당중앙위원회 총비서로 또다시 재선 되었다. 대한민국에서는 한국전쟁을 발발하게 한 장본인중 한사람으로 지목되어 최근까지 부정적인 평가를 받아 왔다. 1994년 절대권력의 상징이었던 그가 사망하면서 아들 김정일에게 모든 권력을 승 diff --git a/api/src/test/resources/MockServerClientPort.property b/api/src/test/resources/MockServerClientPort.property deleted file mode 100644 index 23c244d707..0000000000 --- a/api/src/test/resources/MockServerClientPort.property +++ /dev/null @@ -1 +0,0 @@ -${mockServerClient.port} \ No newline at end of file diff --git a/api/src/test/resources/adm-req.json b/api/src/test/resources/adm-req.json new file mode 100644 index 0000000000..0355fb5216 --- /dev/null +++ b/api/src/test/resources/adm-req.json @@ -0,0 +1 @@ +{"version":"1.1.0","data":"Boston is in Massachusetts","attributes":{"scriptRegion":{"type":"list","itemType":"scriptRegion","items":[{"startOffset":0,"endOffset":26,"script":"Latn"}]},"sentence":{"type":"list","itemType":"sentence","items":[{"startOffset":0,"endOffset":26}]},"languageDetection":{"type":"languageDetection","startOffset":0,"endOffset":26,"detectionResults":[{"language":"eng","encoding":"UTF-16BE","script":"Latn","confidence":0.3158034932808193}]},"token":{"type":"list","itemType":"token","items":[{"startOffset":0,"endOffset":6,"text":"Boston","analyses":[{"partOfSpeech":"PROPN","lemma":"Boston","raw":"Boston[+Prop][+Place][+City][+PROP]"}]},{"startOffset":7,"endOffset":9,"text":"is","analyses":[{"partOfSpeech":"VERB","lemma":"be","raw":"be[+VBPRES]"}]},{"startOffset":10,"endOffset":12,"text":"in","analyses":[{"partOfSpeech":"ADP","lemma":"in","raw":"in[+PREP]"},{"partOfSpeech":"ADJ","lemma":"in","raw":"in[+ADJ]"},{"partOfSpeech":"ADV","lemma":"in","raw":"in[+ADV]"},{"partOfSpeech":"NOUN","lemma":"in","raw":"in[+NOUN]"}]},{"startOffset":13,"endOffset":26,"text":"Massachusetts","analyses":[{"partOfSpeech":"PROPN","lemma":"Massachusetts","raw":"Massachusetts[+Prop][+Place][+PROP]"}]}]}},"documentMetadata":{"processedBy":["whole-document-language@10.233.213.227","base-linguistics@10.233.117.193"]}} \ No newline at end of file diff --git a/api/src/test/resources/adm-resp.json b/api/src/test/resources/adm-resp.json new file mode 100644 index 0000000000..c4d777cb9a --- /dev/null +++ b/api/src/test/resources/adm-resp.json @@ -0,0 +1 @@ +{"version":"1.1.0","data":"Boston is in Massachusetts","attributes":{"scriptRegion":{"type":"list","itemType":"scriptRegion","items":[{"startOffset":0,"endOffset":26,"script":"Latn"}]},"sentence":{"type":"list","itemType":"sentence","items":[{"startOffset":0,"endOffset":26}]},"languageDetection":{"type":"languageDetection","startOffset":0,"endOffset":26,"detectionResults":[{"language":"eng","confidence":1.0}]},"token":{"type":"list","itemType":"token","items":[{"startOffset":0,"endOffset":6,"text":"Boston","analyses":[{"partOfSpeech":"PROPN","lemma":"Boston","raw":"Boston[+Prop][+Place][+City][+PROP]"}]},{"startOffset":7,"endOffset":9,"text":"is","analyses":[{"partOfSpeech":"VERB","lemma":"be","raw":"be[+VBPRES]"}]},{"startOffset":10,"endOffset":12,"text":"in","analyses":[{"partOfSpeech":"ADP","lemma":"in","raw":"in[+PREP]"},{"partOfSpeech":"ADJ","lemma":"in","raw":"in[+ADJ]"},{"partOfSpeech":"ADV","lemma":"in","raw":"in[+ADV]"},{"partOfSpeech":"NOUN","lemma":"in","raw":"in[+NOUN]"}]},{"startOffset":13,"endOffset":26,"text":"Massachusetts","analyses":[{"partOfSpeech":"PROPN","lemma":"Massachusetts","raw":"Massachusetts[+Prop][+Place][+PROP]"}]}]},"entities":{"type":"list","itemType":"entities","items":[{"mentions":[{"startOffset":0,"endOffset":6,"source":"gazetteer","subsource":"/data/roots/rex/data/gazetteer/eng/accept/gaz-LE.bin","normalized":"Boston","old-entity-type":"LOCATION","oldCoreferenceChainId":0}],"headMentionIndex":0,"type":"LOCATION","entityId":"Q100","confidence":0.10046114173694072,"oldCoreferenceChainId":0},{"mentions":[{"startOffset":13,"endOffset":26,"source":"gazetteer","subsource":"/data/roots/rex/data/gazetteer/eng/accept/gaz-LE.bin","normalized":"Massachusetts","old-entity-type":"LOCATION","oldCoreferenceChainId":1}],"headMentionIndex":0,"type":"LOCATION","entityId":"Q771","confidence":0.513412964316255,"oldCoreferenceChainId":1}]}},"documentMetadata":{"processedBy":["whole-document-language@10.233.113.75","base-linguistics@10.233.217.67","entity-extraction@10.233.216.244","entity-linking@10.233.216.244"],"res-docid":["res-document-048dacca-bf97-4341-9495-d0bd52aaf92e"]}} \ No newline at end of file diff --git a/api/src/test/resources/name-similarity-supported-languages.json b/api/src/test/resources/name-similarity-supported-languages.json new file mode 100644 index 0000000000..1de1f4fd27 --- /dev/null +++ b/api/src/test/resources/name-similarity-supported-languages.json @@ -0,0 +1,6 @@ +{ + "supportedLanguagePairs": [ + {"source": {"language": "eng", "script": "Latn"}, "target": {"language": "eng", "script": "Latn"}, "licensed" : true }, + {"source": {"language": "ara", "script": "Arab"}, "target": {"language": "ara", "script": "Arab"}, "licensed" : true } + ] +} diff --git a/api/src/test/resources/name-translation-supported-languages.json b/api/src/test/resources/name-translation-supported-languages.json new file mode 100644 index 0000000000..53451a8d9a --- /dev/null +++ b/api/src/test/resources/name-translation-supported-languages.json @@ -0,0 +1,7 @@ +{ + "supportedLanguagePairs": [ + {"source": {"language": "eng", "script": "Latn", "transliterationScheme": "NATIVE"}, "target": {"language": "eng", "script": "Latn", "transliterationScheme": "IC"}, + "licensed" : true }, + {"source": {"language": "ara", "script": "Arab", "transliterationScheme": "NATIVE"}, "target": {"language": "ara", "script": "Arab", "transliterationScheme": "NATIVE"}, "licensed": true } + ] +} diff --git a/api/src/test/resources/supported-languages.json b/api/src/test/resources/supported-languages.json new file mode 100644 index 0000000000..a27f379cf4 --- /dev/null +++ b/api/src/test/resources/supported-languages.json @@ -0,0 +1,6 @@ +{ + "supportedLanguages": [ + {"language": "eng", "script": "Latn", "licensed" : true }, + {"language": "jpn", "script": "Kana", "licensed" : false} + ] +} \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000000..ecd1861c4e --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,34 @@ + + + + 4.0.0 + + com.basistech.rosette + rosette-api-java-binding + 1.36.1-SNAPSHOT + + rosette-api-common + rosette-api-common + Babel Street Analytics API Common + + + com.basistech.rosette + rosette-api-model + ${project.version} + + + diff --git a/common/src/main/java/com/basistech/rosette/api/common/AbstractRosetteAPI.java b/common/src/main/java/com/basistech/rosette/api/common/AbstractRosetteAPI.java new file mode 100644 index 0000000000..8bba230e8a --- /dev/null +++ b/common/src/main/java/com/basistech/rosette/api/common/AbstractRosetteAPI.java @@ -0,0 +1,149 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.api.common; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.Future; + +import com.basistech.rosette.apimodel.CommonRosetteAPIException; +import com.basistech.rosette.apimodel.Request; +import com.basistech.rosette.apimodel.Response; +import com.basistech.rosette.apimodel.SupportedLanguagePairsResponse; +import com.basistech.rosette.apimodel.SupportedLanguagesResponse; +import com.basistech.rosette.dm.AnnotatedText; + +/** + * This class defines the common API to Analytics, whether over HTTP or other integration mechanisms. + */ +public abstract class AbstractRosetteAPI implements AutoCloseable { + + public static final String LANGUAGE_SERVICE_PATH = "/language"; + public static final String MORPHOLOGY_SERVICE_PATH = "/morphology"; + public static final String ENTITIES_SERVICE_PATH = "/entities"; + public static final String CATEGORIES_SERVICE_PATH = "/categories"; + public static final String RELATIONSHIPS_SERVICE_PATH = "/relationships"; + public static final String SENTIMENT_SERVICE_PATH = "/sentiment"; + public static final String NAME_DEDUPLICATION_SERVICE_PATH = "/name-deduplication"; + public static final String NAME_TRANSLATION_SERVICE_PATH = "/name-translation"; + public static final String NAME_SIMILARITY_SERVICE_PATH = "/name-similarity"; + public static final String RECORD_SIMILARITY_SERVICE_PATH = "/record-similarity"; + public static final String ADDRESS_SIMILARITY_SERVICE_PATH = "/address-similarity"; + public static final String TOKENS_SERVICE_PATH = "/tokens"; + public static final String SENTENCES_SERVICE_PATH = "/sentences"; + public static final String TEXT_EMBEDDING_SERVICE_PATH = "/text-embedding"; + public static final String SEMANTIC_VECTORS_SERVICE_PATH = "/semantics/vector"; + public static final String SIMILAR_TERMS_SERVICE_PATH = "/semantics/similar"; + public static final String SYNTAX_DEPENDENCIES_SERVICE_PATH = "/syntax/dependencies"; + public static final String TRANSLITERATION_SERVICE_PATH = "/transliteration"; + public static final String TOPICS_SERVICE_PATH = "/topics"; + public static final String INFO_SERVICE_PATH = "/info"; + public static final String PING_SERVICE_PATH = "/ping"; + public static final String SUPPORTED_LANGUAGES_SUBPATH = "/supported-languages"; + public static final String EVENTS_SERVICE_PATH = "/events"; + + public static final Set DOC_ENDPOINTS = new HashSet<>(Arrays.asList( + LANGUAGE_SERVICE_PATH, + MORPHOLOGY_SERVICE_PATH, + MORPHOLOGY_SERVICE_PATH + "/complete", + MORPHOLOGY_SERVICE_PATH + "/lemmas", + MORPHOLOGY_SERVICE_PATH + "/parts-of-speech", + MORPHOLOGY_SERVICE_PATH + "/compound-components", + MORPHOLOGY_SERVICE_PATH + "/han-readings", + ENTITIES_SERVICE_PATH, + CATEGORIES_SERVICE_PATH, + RELATIONSHIPS_SERVICE_PATH, + SENTIMENT_SERVICE_PATH, + TOKENS_SERVICE_PATH, + SENTENCES_SERVICE_PATH, + TEXT_EMBEDDING_SERVICE_PATH, + SEMANTIC_VECTORS_SERVICE_PATH, + SIMILAR_TERMS_SERVICE_PATH, + SYNTAX_DEPENDENCIES_SERVICE_PATH, + TRANSLITERATION_SERVICE_PATH, + TOPICS_SERVICE_PATH, + EVENTS_SERVICE_PATH + )); + + public static final Set NAMES_ENDPOINTS = new HashSet<>(Arrays.asList( + NAME_SIMILARITY_SERVICE_PATH, + RECORD_SIMILARITY_SERVICE_PATH, + NAME_TRANSLATION_SERVICE_PATH, + NAME_DEDUPLICATION_SERVICE_PATH, + ADDRESS_SIMILARITY_SERVICE_PATH + )); + + /** + * Gets the set of language and script codes supported by the specified Analytics API endpoint. + * + * @param endpoint Analytics API endpoint. + * @return SupportedLanguagesResponse + * @throws CommonRosetteAPIException for an error. + */ + public abstract SupportedLanguagesResponse getSupportedLanguages(String endpoint) throws CommonRosetteAPIException; + + /** + * Gets the set of language, script codes and transliteration scheme pairs supported by the specified Analytics API + * endpoint. + * + * @param endpoint Analytics API endpoint. + * @return SupportedLanguagePairsResponse + * @throws CommonRosetteAPIException for an error returned from the Rosette API. + */ + public abstract SupportedLanguagePairsResponse getSupportedLanguagePairs(String endpoint) + throws CommonRosetteAPIException; + + /** + * Perform a request to an endpoint of the Analytics API. + * @param endpoint which endpoint. + * @param request the data for the request. + * @param The class of the request object for this endpoint. + * @param the class of the response object for this endpoint. + * @param responseClass the Java {@link Class} object for the response object. + * @return the response. + * @throws CommonRosetteAPIException for an error. + */ + public abstract ResponseType + perform(String endpoint, RequestType request, Class responseClass) + throws CommonRosetteAPIException; + + /** + * Perform a request to an endpoint of the Analytics API. + * @param endpoint which endpoint. + * @param request the data for the request. + * @param The class of the request object for this endpoint. + * @return the response, {@link com.basistech.rosette.dm.AnnotatedText}. + * @throws CommonRosetteAPIException for an error. + */ + public abstract AnnotatedText perform(String endpoint, RequestType request) + throws CommonRosetteAPIException; + + /** + * Start an asynchronous request to an endpoint of the Analytics API. + * @param endpoint which endpoint. + * @param request the data for the request. + * @param The class of the request object for this endpoint. + * @param the class of the response object for this endpoint. + * @param responseClass the Java {@link Class} object for the response object. + * @return a {@link Future} for the response. + * @throws CommonRosetteAPIException for an error. + */ + public abstract Future + performAsync(String endpoint, RequestType request, Class responseClass) + throws CommonRosetteAPIException; +} diff --git a/examples/pom.xml b/examples/pom.xml index 305791c3ec..34d99e2de8 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -1,6 +1,6 @@ +--> - + 4.0.0 com.basistech.rosette rosette-api-java-binding - 0.7.100-SNAPSHOT + 1.36.1-SNAPSHOT com.basistech.rosette rosette-api-examples rosette-api-examples - - true - com.basistech.rosette @@ -58,11 +53,6 @@ com.fasterxml.jackson.core jackson-annotations - - commons-codec - commons-codec - 1.10 - com.google.guava guava @@ -71,5 +61,9 @@ com.basistech common-api + + org.slf4j + slf4j-simple + diff --git a/examples/src/main/java/com/basistech/rosette/examples/AddressSimilarityExample.java b/examples/src/main/java/com/basistech/rosette/examples/AddressSimilarityExample.java new file mode 100644 index 0000000000..f0503ecd71 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/AddressSimilarityExample.java @@ -0,0 +1,75 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.examples; + +import java.io.IOException; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.AddressSimilarityRequest; +import com.basistech.rosette.apimodel.AddressSimilarityResponse; +import com.basistech.rosette.apimodel.FieldedAddress; +import com.basistech.rosette.apimodel.UnfieldedAddress; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.ADDRESS_SIMILARITY_SERVICE_PATH; + +/** + * Example which demonstrates address similarity + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class AddressSimilarityExample extends ExampleBase { + public static void main(String[] args) { + try { + new AddressSimilarityExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String addressSimilarityHouseno1 = "1600"; + String addressSimilarityRoad1 = "Pennsylvania Ave NW"; + String addressSimilarityCity1 = "Washington"; + String addressSimilarityState1 = "DC"; + String addressSimilarityPostcode1 = "20500"; + FieldedAddress address1 = FieldedAddress.builder() + .houseNumber(addressSimilarityHouseno1) + .road(addressSimilarityRoad1) + .city(addressSimilarityCity1) + .state(addressSimilarityState1) + .postCode(addressSimilarityPostcode1) + .build(); + String addressSimilarityAddress2 = "160 Pennsilvana Avenue, Washington, D.C., 20500"; + UnfieldedAddress address2 = UnfieldedAddress.builder() + .address(addressSimilarityAddress2) + .build(); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + AddressSimilarityRequest request = AddressSimilarityRequest.builder() + .address1(address1) + .address2(address2) + .build(); + AddressSimilarityResponse response = api + .perform(ADDRESS_SIMILARITY_SERVICE_PATH, request, AddressSimilarityResponse.class); + + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/Base64InputExample.java b/examples/src/main/java/com/basistech/rosette/examples/Base64InputExample.java deleted file mode 100644 index fde77a8efa..0000000000 --- a/examples/src/main/java/com/basistech/rosette/examples/Base64InputExample.java +++ /dev/null @@ -1,48 +0,0 @@ -/* -* Copyright 2015 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.examples; - -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; -import com.basistech.rosette.apimodel.EntitiesResponse; -import com.google.common.base.Charsets; -import org.apache.commons.codec.binary.Base64; - -import java.io.IOException; - -/** - * Example which demonstrates the entity extraction api taking a base 64-encoded input. - */ -public final class Base64InputExample extends ExampleBase { - public static void main(String[] args) { - try { - new Base64InputExample().run(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void run() throws IOException, RosetteAPIException { - byte[] encodedExample = Base64.encodeBase64( - "Bill Murray will appear in new Ghostbusters film: Dr. Peter Venkman was spotted filming a cameo in Boston this… http://dlvr.it/BnsFfS ".getBytes(Charsets.UTF_8)); - String text = new String(encodedExample); - - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - EntitiesResponse response = rosetteApi.getEntities(text, null, null); - System.out.println(responseToJson(response)); - } -} diff --git a/examples/src/main/java/com/basistech/rosette/examples/CategoriesExample.java b/examples/src/main/java/com/basistech/rosette/examples/CategoriesExample.java index 17d05552d1..50a4102783 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/CategoriesExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/CategoriesExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,14 @@ */ package com.basistech.rosette.examples; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.CategoriesOptions; +import com.basistech.rosette.apimodel.CategoriesResponse; +import com.basistech.rosette.apimodel.DocumentRequest; + import java.io.IOException; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; -import com.basistech.rosette.apimodel.CategoriesResponse; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.CATEGORIES_SERVICE_PATH; /** * Example which demonstrates the category api. @@ -27,19 +30,29 @@ * Gets QAG categories (http://www.iab.net/QAGInitiative/overview/taxonomy) of a web page document * located at http://www.basistech.com/about */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class CategoriesExample extends ExampleBase { public static void main(String[] args) { try { new CategoriesExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "Sony Pictures is planning to shoot a good portion of the new \"Ghostbusters\" in Boston as well."; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - CategoriesResponse response = rosetteApi.getCategories(text, null, null); + private void run() throws IOException { + String categoriesTextData = "If you are a fan of the British television series Downton Abbey and you are planning to be in New York anytime before April 2nd, there is a perfect stop for you while in town."; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + DocumentRequest request = DocumentRequest.builder() + .content(categoriesTextData) + .build(); + CategoriesResponse response = api.perform(CATEGORIES_SERVICE_PATH, request, CategoriesResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/ConcurrencyExample.java b/examples/src/main/java/com/basistech/rosette/examples/ConcurrencyExample.java new file mode 100644 index 0000000000..da25929c72 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/ConcurrencyExample.java @@ -0,0 +1,147 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.api.MorphologicalFeature; +import com.basistech.rosette.api.RosetteRequest; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EntitiesOptions; +import com.basistech.rosette.apimodel.EntitiesResponse; +import com.basistech.rosette.apimodel.LanguageOptions; +import com.basistech.rosette.apimodel.LanguageResponse; +import com.basistech.rosette.apimodel.MorphologyOptions; +import com.basistech.rosette.apimodel.MorphologyResponse; +import com.basistech.rosette.apimodel.Name; +import com.basistech.rosette.apimodel.NameDeduplicationRequest; +import com.basistech.rosette.apimodel.NameDeduplicationResponse; +import com.basistech.rosette.apimodel.Response; +import com.basistech.rosette.apimodel.TokensResponse; +import com.basistech.rosette.apimodel.TransliterationResponse; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.ENTITIES_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.LANGUAGE_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_DEDUPLICATION_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.TOKENS_SERVICE_PATH; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.TRANSLITERATION_SERVICE_PATH; + +/** + * Example which demonstrates the usage of concurrent requests + */ +public final class ConcurrencyExample extends ExampleBase { + public static void main(String[] args) { + try { + new ConcurrencyExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException, ExecutionException, InterruptedException { + //Setting up the Api + int maximumConcurrency = 3; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .connectionConcurrency(maximumConcurrency) + .build(); + + List requests = new ArrayList<>(); + // Setting up entities request + String entitiesTextData = + "The Securities and Exchange Commission today announced the leadership of the agency’s trial unit. " + + "Bridget Fitzpatrick has been named Chief Litigation Counsel of the SEC " + + "and David Gottesman will continue to serve as the agency’s Deputy Chief Litigation Counsel. " + + "Since December 2016, Ms. Fitzpatrick and Mr. Gottesman have served as Co-Acting Chief Litigation Counsel. " + + "In that role, they were jointly responsible for supervising the trial unit at the agency’s Washington D.C. headquarters " + + "as well as coordinating with litigators in the SEC’s 11 regional offices around the country."; + requests.add( + api.createRosetteRequest(ENTITIES_SERVICE_PATH, + DocumentRequest.builder().content(entitiesTextData).build(), + EntitiesResponse.class) + ); + // Setting up language request + String languageData = "Por favor Señorita, says the man."; + requests.add( + api.createRosetteRequest(LANGUAGE_SERVICE_PATH, + DocumentRequest.builder().content(languageData).build(), + LanguageResponse.class) + ); + // Setting up morphology request + // No content is given to this request and it will return an error response + requests.add( + api.createRosetteRequest(MORPHOLOGY_SERVICE_PATH + "/" + MorphologicalFeature.COMPLETE, + DocumentRequest.builder().build(), + MorphologyResponse.class) + ); + //Setting up names deduplication request + String nameDedupeData = "John Smith,Johnathon Smith,Fred Jones"; + List listOfNames = new ArrayList<>(Arrays.asList(nameDedupeData.split(","))); + + ArrayList names = new ArrayList<>(); + for (String name: listOfNames) { + names.add(Name.builder().text(name).build()); + } + double threshold = 0.75; + requests.add( + api.createRosetteRequest(NAME_DEDUPLICATION_SERVICE_PATH, + NameDeduplicationRequest.builder().names(names).threshold(threshold).build(), + NameDeduplicationResponse.class) + ); + //Setting up the tokens request + String tokensData = "北京大学生物系主任办公室内部会议"; + requests.add( + api.createRosetteRequest(TOKENS_SERVICE_PATH, + DocumentRequest.builder().content(tokensData).build(), + TokensResponse.class) + ); + //Setting up the transliteration request + String transliterationData = "ana r2ye7 el gam3a el sa3a 3 el 3asr"; + requests.add( + api.createRosetteRequest(TRANSLITERATION_SERVICE_PATH, + DocumentRequest.builder().content(transliterationData).build(), + TransliterationResponse.class) + ); + + // start the threads + ExecutorService threadPool = Executors.newFixedThreadPool(maximumConcurrency); + List> futures = threadPool.invokeAll(requests); + + // wait for the threads to finish + for (int i = 0; i < requests.size(); i++) { + futures.get(i).get(); + } + + for (int i = 0; i < requests.size(); i++) { + System.out.println(responseToJson(requests.get(i).getResponse())); + } + threadPool.shutdown(); + } + + + +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/EntitiesExample.java b/examples/src/main/java/com/basistech/rosette/examples/EntitiesExample.java index 749268bd55..325c9fdd98 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/EntitiesExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/EntitiesExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,15 +15,19 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EntitiesOptions; import com.basistech.rosette.apimodel.EntitiesResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.ENTITIES_SERVICE_PATH; + /** * Example which demonstrates the entity extraction api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class EntitiesExample extends ExampleBase { public static void main(String[] args) { try { @@ -33,11 +37,16 @@ public static void main(String[] args) { } } - private void run() throws IOException, RosetteAPIException { - String text = "Bill Murray will appear in new Ghostbusters film: Dr. Peter Venkman was spotted filming a cameo in Boston this… http://dlvr.it/BnsFfS "; - - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - EntitiesResponse response = rosetteApi.getEntities(text, null, null); + private void run() throws IOException { + String entitiesTextData = "The Securities and Exchange Commission today announced the leadership of the agency’s trial unit. Bridget Fitzpatrick has been named Chief Litigation Counsel of the SEC and David Gottesman will continue to serve as the agency’s Deputy Chief Litigation Counsel. Since December 2016, Ms. Fitzpatrick and Mr. Gottesman have served as Co-Acting Chief Litigation Counsel. In that role, they were jointly responsible for supervising the trial unit at the agency’s Washington D.C. headquarters as well as coordinating with litigators in the SEC’s 11 regional offices around the country."; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder() + .content(entitiesTextData) + .build(); + EntitiesResponse response = api.perform(ENTITIES_SERVICE_PATH, request, EntitiesResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/EntitiesLinkedExample.java b/examples/src/main/java/com/basistech/rosette/examples/EntitiesLinkedExample.java deleted file mode 100644 index 3af045533b..0000000000 --- a/examples/src/main/java/com/basistech/rosette/examples/EntitiesLinkedExample.java +++ /dev/null @@ -1,43 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.basistech.rosette.examples; - -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; -import com.basistech.rosette.apimodel.LinkedEntitiesResponse; - -import java.io.IOException; - -/** - * Example which demonstrates the entity linking api. - */ -public final class EntitiesLinkedExample extends ExampleBase { - public static void main(String[] args) { - try { - new EntitiesLinkedExample().run(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void run() throws IOException, RosetteAPIException { - String text = "Last month director Paul Feig announced the movie will have an all-star female cast including Kristen Wiig, Melissa McCarthy, Leslie Jones and Kate McKinnon."; - - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - LinkedEntitiesResponse response = rosetteApi.getLinkedEntities(text, null, null); - System.out.println(responseToJson(response)); - } -} diff --git a/examples/src/main/java/com/basistech/rosette/examples/EventsExample.java b/examples/src/main/java/com/basistech/rosette/examples/EventsExample.java new file mode 100644 index 0000000000..03c9c7a0ea --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/EventsExample.java @@ -0,0 +1,52 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EventsOptions; +import com.basistech.rosette.apimodel.EventsResponse; +import com.basistech.util.LanguageCode; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.EVENTS_SERVICE_PATH; + +/** + * Example which demonstrates the events API. + */ +public class EventsExample extends ExampleBase { + public static void main(String[] args) { + try { + new EventsExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws Exception { + String topicsData = "I am looking for flights to Super Bowl 2022 in Inglewood, LA."; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder() + .language(LanguageCode.ENGLISH) + .content(topicsData) + .build(); + EventsResponse resp = api.perform(EVENTS_SERVICE_PATH, request, EventsResponse.class); + System.out.println(responseToJson(resp)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/ExampleBase.java b/examples/src/main/java/com/basistech/rosette/examples/ExampleBase.java index dd88d6f4f5..1b63715060 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/ExampleBase.java +++ b/examples/src/main/java/com/basistech/rosette/examples/ExampleBase.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,27 +23,47 @@ import com.fasterxml.jackson.databind.SerializationFeature; /** - * Provides examples on how to use the {@link com.basistech.rosette.api.RosetteAPI RosetteAPI} + * Provides examples on how to use the {@link com.basistech.rosette.api.HttpRosetteAPI HttpRosetteAPI} */ +@SuppressWarnings("java:S106") public abstract class ExampleBase { - private static final String KEY_PROP_NAME = "rosette.api.key"; + private static final String KEY_PROP_NAME = "analytics.api.key"; + private static final String URL_PROP_NAME = "analytics.api.altUrl"; + private static final String LEGACY_KEY_PROP_NAME = "rosette.api.key"; + private static final String LEGACY_URL_PROP_NAME = "rosette.api.altUrl"; private static final String USAGE_STR = "Usage: java -cp rosette-api-examples.jar:lib/rosette-api-manifest.jar " - + "-D" + KEY_PROP_NAME + "= "; + + "-D" + KEY_PROP_NAME + "= " + "-D" + URL_PROP_NAME + "= "; /** - * Gets api key using system property {@value #KEY_PROP_NAME} + * @return api key using system property {@value com.basistech.rosette.examples.ExampleBase#KEY_PROP_NAME} */ protected String getApiKeyFromSystemProperty() { - String apiKeyStr = System.getProperty(KEY_PROP_NAME); - if (apiKeyStr == null || apiKeyStr.trim().length() < 1) { + String apiKeyStr = System.getProperty(KEY_PROP_NAME) != null + ? System.getProperty(KEY_PROP_NAME) + : System.getProperty(LEGACY_KEY_PROP_NAME); + if (apiKeyStr == null || apiKeyStr.trim().isEmpty()) { showUsage(getClass()); System.exit(1); } return apiKeyStr.trim(); } + /** + * @return alternate url using system property {@value com.basistech.rosette.examples.ExampleBase#URL_PROP_NAME} + */ + protected String getAltUrlFromSystemProperty() { + String altUrlStr = System.getProperty(URL_PROP_NAME) != null + ? System.getProperty(URL_PROP_NAME) + : System.getProperty(LEGACY_URL_PROP_NAME); + if (altUrlStr == null || altUrlStr.trim().isEmpty()) { + altUrlStr = "https://analytics.babelstreet.com/rest/v1"; + } + return altUrlStr.trim(); + } + /** * Prints out how to run the program + * @param commandClass the class to use in the usage message. */ protected static void showUsage(Class commandClass) { System.err.println(USAGE_STR + commandClass.getName()); @@ -52,7 +72,9 @@ protected static void showUsage(Class commandClass) { /** * Converts a response to JSON string * - * @param response {@link com.basistech.rosette.apimodel.Response Response} from RosetteAPI + * @param response {@link com.basistech.rosette.apimodel.Response Response} from Analytics API + * @return the json string. + * @throws JsonProcessingException if the Jackson library throws an error serializing. */ protected static String responseToJson(Response response) throws JsonProcessingException { ObjectMapper mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); diff --git a/examples/src/main/java/com/basistech/rosette/examples/InfoExample.java b/examples/src/main/java/com/basistech/rosette/examples/InfoExample.java index e5f5c4d3a0..5af1491730 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/InfoExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/InfoExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,7 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; import com.basistech.rosette.apimodel.InfoResponse; import java.io.IOException; @@ -24,18 +23,25 @@ /** * Example which demonstrates the top level info api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class InfoExample extends ExampleBase { public static void main(String[] args) { try { new InfoExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - InfoResponse response = rosetteApi.getInfo(); + private void run() throws IOException { + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + InfoResponse response = api.info(); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/LanguageExample.java b/examples/src/main/java/com/basistech/rosette/examples/LanguageExample.java index 0d4510ff1c..5e0d97d777 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/LanguageExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/LanguageExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,29 +15,42 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.LanguageOptions; import com.basistech.rosette.apimodel.LanguageResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.LANGUAGE_SERVICE_PATH; + /** * Example which demonstrates the language detection api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class LanguageExample extends ExampleBase { public static void main(String[] args) { try { new LanguageExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "Por favor Señorita, says the man."; + private void run() throws IOException { + String languageData = "Por favor Señorita, says the man."; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - LanguageResponse response = rosetteApi.getLanguage(text, null, null); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + DocumentRequest request = DocumentRequest.builder() + .content(languageData) + .build(); + LanguageResponse response = api.perform(LANGUAGE_SERVICE_PATH, request, LanguageResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/LanguageMultilingualExample.java b/examples/src/main/java/com/basistech/rosette/examples/LanguageMultilingualExample.java new file mode 100644 index 0000000000..3ad0deae2b --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/LanguageMultilingualExample.java @@ -0,0 +1,60 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.LanguageOptions; +import com.basistech.rosette.apimodel.LanguageResponse; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.LANGUAGE_SERVICE_PATH; + +/** + * Example which demonstrates the language detection api with the multilingual option. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class LanguageMultilingualExample extends ExampleBase { + public static void main(String[] args) { + try { + new LanguageMultilingualExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String languageMultilingualData = "On Thursday, as protesters gathered in Washington D.C., the United States Federal Communications Commission under Chairman Ajit Pai voted 3-2 to overturn a 2015 decision, commonly called Net Neutrality, that forbade Internet service providers (ISPs) such as Verizon, Comcast, and AT&T from blocking individual websites or charging websites or customers more for faster load times. Quatre femmes ont été nommées au Conseil de rédaction de la loi du Qatar. Jeudi, le décret royal du Qatar a annoncé que 28 nouveaux membres ont été nommés pour le Conseil de la Choura du pays. ذكرت مصادر أمنية يونانية، أن 9 موقوفين من منظمة \"د هـ ك ب ج\" الذين كانت قد أوقفتهم الشرطة اليونانية في وقت سابق كانوا يخططون لاغتيال الرئيس التركي رجب طيب أردوغان."; + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + + LanguageOptions options = LanguageOptions.builder().multilingual(true).build(); + + DocumentRequest request = DocumentRequest.builder() + .content(languageMultilingualData) + .options(options) + .build(); + LanguageResponse response = api.perform(LANGUAGE_SERVICE_PATH, request, LanguageResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/MatchedNameExample.java b/examples/src/main/java/com/basistech/rosette/examples/MatchedNameExample.java deleted file mode 100644 index c09420f4e0..0000000000 --- a/examples/src/main/java/com/basistech/rosette/examples/MatchedNameExample.java +++ /dev/null @@ -1,47 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.basistech.rosette.examples; - -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; -import com.basistech.rosette.apimodel.Name; -import com.basistech.rosette.apimodel.NameMatchingRequest; -import com.basistech.rosette.apimodel.NameMatchingResponse; -import com.basistech.util.ISO15924; -import com.basistech.util.LanguageCode; - -import java.io.IOException; - -/** - * Example which demonstrates the name matching api. - */ -public final class MatchedNameExample extends ExampleBase { - public static void main(String[] args) { - try { - new MatchedNameExample().run(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void run() throws IOException, RosetteAPIException { - Name name1 = new Name("Michael Jackson", "PERSON", ISO15924.Zyyy, LanguageCode.ENGLISH); - Name name2 = new Name("迈克尔·杰克逊"); - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - NameMatchingResponse response = rosetteApi.matchName(new NameMatchingRequest(name1, name2)); - System.out.println(responseToJson(response)); - } -} diff --git a/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompleteExample.java b/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompleteExample.java index fb2feb2504..929df5e92c 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompleteExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompleteExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,30 +15,41 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.api.MorphologicalFeature; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.MorphologyOptions; import com.basistech.rosette.apimodel.MorphologyResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH; + /** * Example which demonstrates the complete morphology api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class MorphologyCompleteExample extends ExampleBase { public static void main(String[] args) { try { new MorphologyCompleteExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "The quick brown fox jumped over the lazy dog. Yes he did."; + private void run() throws IOException { + String morphologyCompleteData = "The quick brown fox jumped over the lazy dog. 👍🏾 Yes he did. B)"; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - MorphologyResponse response = rosetteApi.getMorphology(RosetteAPI.MorphologicalFeature.COMPLETE, - text, null, null); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder().content(morphologyCompleteData).build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + MorphologyResponse response = api.perform(MORPHOLOGY_SERVICE_PATH + "/" + MorphologicalFeature.COMPLETE, request, MorphologyResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompoundComponentsExample.java b/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompoundComponentsExample.java index 01a04145a2..1be489bca2 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompoundComponentsExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/MorphologyCompoundComponentsExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,30 +15,45 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.api.MorphologicalFeature; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.MorphologyOptions; import com.basistech.rosette.apimodel.MorphologyResponse; +import com.basistech.util.LanguageCode; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH; + /** * Example which demonstrates the decompounding api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class MorphologyCompoundComponentsExample extends ExampleBase { public static void main(String[] args) { try { new MorphologyCompoundComponentsExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "Rechtsschutzversicherungsgesellschaften"; + private void run() throws IOException { + String morphologyCompoundComponentsData = "Rechtsschutzversicherungsgesellschaften"; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + DocumentRequest request = DocumentRequest.builder().content(morphologyCompoundComponentsData) + .language(LanguageCode.GERMAN) // example of specifying the language. + .build(); + MorphologyResponse response = api.perform(MORPHOLOGY_SERVICE_PATH + "/" + MorphologicalFeature.COMPOUND_COMPONENTS, + request, MorphologyResponse.class); - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - MorphologyResponse response = rosetteApi.getMorphology(RosetteAPI.MorphologicalFeature.COMPOUND_COMPONENTS, - text, null, null); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/MorphologyHanReadingsExample.java b/examples/src/main/java/com/basistech/rosette/examples/MorphologyHanReadingsExample.java index 359dd45456..061fd2fb06 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/MorphologyHanReadingsExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/MorphologyHanReadingsExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,30 +15,40 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.api.MorphologicalFeature; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.MorphologyOptions; import com.basistech.rosette.apimodel.MorphologyResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH; + /** * Example which demonstrates the han readings api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class MorphologyHanReadingsExample extends ExampleBase { public static void main(String[] args) { try { new MorphologyHanReadingsExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "北京大学生物系主任办公室内部会议"; - - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - MorphologyResponse response = rosetteApi.getMorphology(RosetteAPI.MorphologicalFeature.HAN_READINGS, - text, null, null); + private void run() throws IOException { + String morphologyHanReadingsData = "北京大学生物系主任办公室内部会议"; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder().content(morphologyHanReadingsData) + .build(); + MorphologyResponse response = api.perform(MORPHOLOGY_SERVICE_PATH + "/" + MorphologicalFeature.HAN_READINGS, + request, MorphologyResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/MorphologyLemmasExample.java b/examples/src/main/java/com/basistech/rosette/examples/MorphologyLemmasExample.java index 024436b04b..bf981918db 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/MorphologyLemmasExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/MorphologyLemmasExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,30 +15,40 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.api.MorphologicalFeature; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.MorphologyOptions; import com.basistech.rosette.apimodel.MorphologyResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH; + /** * Example which demonstrates the lemmas api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class MorphologyLemmasExample extends ExampleBase { public static void main(String[] args) { try { new MorphologyLemmasExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "The fact is that the geese just went back to get a rest and I'm not banking on their return soon"; - - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - MorphologyResponse response = rosetteApi.getMorphology(RosetteAPI.MorphologicalFeature.LEMMAS, - text, null, null); + private void run() throws IOException { + String morphologyLemmasData = "The fact is that the geese just went back to get a rest and I'm not banking on their return soon"; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder().content(morphologyLemmasData) + .build(); + MorphologyResponse response = api.perform(MORPHOLOGY_SERVICE_PATH + "/" + MorphologicalFeature.LEMMAS, + request, MorphologyResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/MorphologyPartsOfSpeechExample.java b/examples/src/main/java/com/basistech/rosette/examples/MorphologyPartsOfSpeechExample.java index f74019fdaa..08a14001c0 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/MorphologyPartsOfSpeechExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/MorphologyPartsOfSpeechExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,30 +15,41 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.api.MorphologicalFeature; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.MorphologyOptions; import com.basistech.rosette.apimodel.MorphologyResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.MORPHOLOGY_SERVICE_PATH; + /** * Example which demonstrates the part-of-speech api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class MorphologyPartsOfSpeechExample extends ExampleBase { public static void main(String[] args) { try { new MorphologyPartsOfSpeechExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "The fact is that the geese just went back to get a rest and I'm not banking on their return soon"; + private void run() throws IOException { + String morphologyPartsOfSpeechData = "The fact is that the geese just went back to get a rest and I'm not banking on their return soon"; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - MorphologyResponse response = rosetteApi.getMorphology(RosetteAPI.MorphologicalFeature.PARTS_OF_SPEECH, - text, null, null); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder().content(morphologyPartsOfSpeechData) + .build(); + MorphologyResponse response = api.perform(MORPHOLOGY_SERVICE_PATH + "/" + MorphologicalFeature.PARTS_OF_SPEECH, + request, MorphologyResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/NameDeduplicationExample.java b/examples/src/main/java/com/basistech/rosette/examples/NameDeduplicationExample.java new file mode 100644 index 0000000000..6b7ae22463 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/NameDeduplicationExample.java @@ -0,0 +1,65 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.Name; +import com.basistech.rosette.apimodel.NameDeduplicationRequest; +import com.basistech.rosette.apimodel.NameDeduplicationResponse; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_DEDUPLICATION_SERVICE_PATH; + +/** + * Example which demonstrates name deduplication. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class NameDeduplicationExample extends ExampleBase { + public static void main(String[] args) { + try { + new NameDeduplicationExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String nameDedupeData = "John Smith,Johnathon Smith,Fred Jones"; + List listOfNames = new ArrayList(Arrays.asList(nameDedupeData.split(","))); + + ArrayList names = new ArrayList<>(); + for (String name: listOfNames) { + names.add(Name.builder().text(name).build()); + } + double threshold = 0.75; + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + NameDeduplicationRequest request = NameDeduplicationRequest.builder().names(names).threshold(threshold).build(); + NameDeduplicationResponse response = api.perform(NAME_DEDUPLICATION_SERVICE_PATH, request, + NameDeduplicationResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/NameMultipleTranslationsExample.java b/examples/src/main/java/com/basistech/rosette/examples/NameMultipleTranslationsExample.java new file mode 100644 index 0000000000..e048f183d7 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/NameMultipleTranslationsExample.java @@ -0,0 +1,58 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_TRANSLATION_SERVICE_PATH; + +import java.io.IOException; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.NameTranslationRequest; +import com.basistech.rosette.apimodel.NameTranslationResponse; +import com.basistech.util.LanguageCode; + +/** + * Example which demonstrates the name translation api with maximumResults option set. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class NameMultipleTranslationsExample extends ExampleBase { + public static void main(String[] args) { + try { + new NameMultipleTranslationsExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String translatedNameData = "معمر محمد أبو منيار القذاف"; + NameTranslationRequest request = NameTranslationRequest.builder() + .name(translatedNameData) + .targetLanguage(LanguageCode.ENGLISH) + .maximumResults(10) + .build(); + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + NameTranslationResponse response = api.perform(NAME_TRANSLATION_SERVICE_PATH, request, NameTranslationResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/NameSimilarityExample.java b/examples/src/main/java/com/basistech/rosette/examples/NameSimilarityExample.java new file mode 100644 index 0000000000..7bbedb6c11 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/NameSimilarityExample.java @@ -0,0 +1,62 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.Name; +import com.basistech.rosette.apimodel.NameSimilarityRequest; +import com.basistech.rosette.apimodel.NameSimilarityResponse; +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_SIMILARITY_SERVICE_PATH; + +/** + * Example which demonstrates name similarity. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class NameSimilarityExample extends ExampleBase { + public static void main(String[] args) { + try { + new NameSimilarityExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String matchedNameData1 = "Michael Jackson"; + String matchedNameData2 = "迈克尔·杰克逊"; + Name name1 = Name.builder().text(matchedNameData1) + .entityType("PERSON") + .script(ISO15924.Zyyy) + .language(LanguageCode.ENGLISH) + .build(); + Name name2 = Name.builder().text(matchedNameData2).build(); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + NameSimilarityRequest request = NameSimilarityRequest.builder().name1(name1).name2(name2).build(); + NameSimilarityResponse response = api.perform(NAME_SIMILARITY_SERVICE_PATH, request, NameSimilarityResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/NameTranslationExample.java b/examples/src/main/java/com/basistech/rosette/examples/NameTranslationExample.java new file mode 100644 index 0000000000..095c516e95 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/NameTranslationExample.java @@ -0,0 +1,57 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.NameTranslationRequest; +import com.basistech.rosette.apimodel.NameTranslationResponse; +import com.basistech.util.LanguageCode; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.NAME_TRANSLATION_SERVICE_PATH; + +/** + * Example which demonstrates the name translation api. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class NameTranslationExample extends ExampleBase { + public static void main(String[] args) { + try { + new NameTranslationExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String translatedNameData = "معمر محمد أبو منيار القذاف"; + NameTranslationRequest request = NameTranslationRequest.builder() + .name(translatedNameData) + .targetLanguage(LanguageCode.ENGLISH) + .build(); + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + NameTranslationResponse response = api.perform(NAME_TRANSLATION_SERVICE_PATH, request, NameTranslationResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/PingExample.java b/examples/src/main/java/com/basistech/rosette/examples/PingExample.java index 7ddc3f0494..50c7ce5f79 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/PingExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/PingExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,7 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; import com.basistech.rosette.apimodel.PingResponse; import java.io.IOException; @@ -24,18 +23,20 @@ /** * Example which demonstrates the ping api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class PingExample extends ExampleBase { public static void main(String[] args) { try { new PingExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - PingResponse response = rosetteApi.ping(); + private void run() throws IOException { + HttpRosetteAPI api = new HttpRosetteAPI.Builder().key(getApiKeyFromSystemProperty()).url(getAltUrlFromSystemProperty()).build(); + PingResponse response = api.ping(); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/README.md b/examples/src/main/java/com/basistech/rosette/examples/README.md index 70e9b0b09e..94db899786 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/README.md +++ b/examples/src/main/java/com/basistech/rosette/examples/README.md @@ -1,32 +1,17 @@ -Rosette API Java Examples -========================= +## Endpoint Examples +Each example file demonstrates one of the capabilities of the Analytics Platform. -Each example class can be run independently. +Here are some methods for running the examples. Each example will also accept an optional `-Drosette.api.altUrl` +parameter for overriding the default URL. -If you use Maven, everything should have been setup and you can start running the examples using `mvn exec:java`. -Otherwise you can compile and run these examples by hand: +A note on prerequisites. Analytics API only supports TLS 1.2 so ensure your toolchain also supports it. -- make sure you have JRE 1.7, verify by `java -version` -- download -- `cd src/main/java/com/basistech/rosette/examples` -- `javac -cp .: *.java` -- `java -cp .: -Drosette.api.key= com.basistech.rosette.examples.` - -| File Name | Description -| ------------- |------------- -| CategoriesExample.java | Gets the category of a document at a URL -| EntitiesExample.java | Extracts entities -| EntitiesLinkedExample.java | Gets linked (to Wikidata) entities -| InfoExample.java | Gets information about Rosette API -| LanguageExample.java | Detects language -| MatchedNameExample.java | Matches two names for similarity comparison -| MorphologyCompleteExample.java | Gets the complete morphological analysis -| MorphologyCompoundComponentsExample.java | Gets the de-compounded words -| MorphologyHanReadingsExample.java | Gets the Chinese/Han readings -| MorphologyLemmasExample.java | Gets the lemmas -| MorphologyPartsOfSpeechExample.java | Gets the part-of-speech tags -| PingExample.java | Pings the Rosette API to check for availability -| SentencesExample.java | Gets the sentences -| SentimentExample.java | Gets the sentiment of a local file -| TokenExample.java | Gets the tokens -| TranslatedNameExample.java | Transliterates a name +#### Running from Local Source + +``` +git clone git@github.com:rosette-api/java.git +cd java +mvn install +cd examples +mvn exec:java -Dexec.mainClass="com.basistech.rosette.examples.PingExample" -Danalytics.api.key=$API_KEY +``` diff --git a/examples/src/main/java/com/basistech/rosette/examples/RecordSimilarityExample.java b/examples/src/main/java/com/basistech/rosette/examples/RecordSimilarityExample.java new file mode 100644 index 0000000000..a3191ce3c5 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/RecordSimilarityExample.java @@ -0,0 +1,124 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityFieldInfo; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityProperties; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRecords; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRequest; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResponse; +import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField; +import com.basistech.rosette.apimodel.recordsimilarity.records.BooleanField; +import com.basistech.rosette.apimodel.recordsimilarity.records.DateField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NameField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NumberField; +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordFieldType; +import com.basistech.rosette.apimodel.recordsimilarity.records.StringField; +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.RECORD_SIMILARITY_SERVICE_PATH; + +/** + * Example which demonstrates record similarity. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public class RecordSimilarityExample extends ExampleBase { + public static void main(String[] args) { + try { + new RecordSimilarityExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String primaryNameField = "primaryName"; + String dobField = "dob"; + String dob2Field = "dob2"; + String addrField = "addr"; + String strField = "jobTitle"; + String numberField = "age"; + String boolField = "isRetired"; + String dobHyphen = "1993-04-16"; + RecordSimilarityRequest request = RecordSimilarityRequest.builder() + .fields(Map.of( + primaryNameField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NAME).weight(0.5).build(), + dobField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.2).build(), + dob2Field, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.1).build(), + addrField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_ADDRESS).weight(0.5).build(), + strField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_STRING).weight(0.2).build(), + numberField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NUMBER).weight(0.4).build(), + boolField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_BOOLEAN).weight(0.05).build())) + .properties(RecordSimilarityProperties.builder().threshold(0.7).includeExplainInfo(true).build()) + .records(RecordSimilarityRecords.builder() + .left( + List.of( + Map.of( + primaryNameField, NameField.FieldedName.builder() + .text("Ethan R").entityType("PERSON") + .language(LanguageCode.ENGLISH) + .languageOfOrigin(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .build(), + dobField, DateField.UnfieldedDate.builder().date(dobHyphen).build(), + dob2Field, DateField.FieldedDate.builder().date("04161993").format("MMddyyyy").build(), + addrField, AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build(), + strField, StringField.builder().data("software engineer").build() + ), + Map.of( + primaryNameField, NameField.FieldedName.builder().text("Evan R").build(), + dobField, DateField.FieldedDate.builder().date(dobHyphen).build(), + numberField, NumberField.builder().data(47).build(), + boolField, BooleanField.builder().data(false).build() + ) + ) + ).right( + List.of( + Map.of( + primaryNameField, NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(), + dobField, DateField.FieldedDate.builder().date(dobHyphen).build(), + strField, StringField.builder().data("manager").build(), + boolField, BooleanField.builder().data(true).build() + ), + Map.of( + primaryNameField, NameField.UnfieldedName.builder().text("Ivan R").build(), + dobField, DateField.FieldedDate.builder().date(dobHyphen).build(), + dob2Field, DateField.FieldedDate.builder().date("1993/04/16").build(), + addrField, AddressField.FieldedAddress.builder().houseNumber("123").road("Roadlane Ave").build(), + numberField, NumberField.builder().data(72).build(), + boolField, BooleanField.builder().data(true).build() + ) + ) + ).build() + ).build(); + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + RecordSimilarityResponse response = api.perform(RECORD_SIMILARITY_SERVICE_PATH, request, RecordSimilarityResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/RelationshipsExample.java b/examples/src/main/java/com/basistech/rosette/examples/RelationshipsExample.java index 333877567c..73bcb061a0 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/RelationshipsExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/RelationshipsExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,29 +15,40 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.RelationshipsOptions; import com.basistech.rosette.apimodel.RelationshipsResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.RELATIONSHIPS_SERVICE_PATH; + /** - * Example which demonstrates the entity extraction api. + * Example which demonstrates the relationships extraction api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class RelationshipsExample extends ExampleBase { public static void main(String[] args) { try { new RelationshipsExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "Bill Murray is in the new Ghostbusters film!"; + private void run() throws IOException { + String relationshipsTextData = "FLIR Systems is headquartered in Oregon and produces thermal imaging, night vision, and infrared cameras and sensor systems. According to the SEC’s order instituting a settled administrative proceeding, FLIR entered into a multi-million dollar contract to provide thermal binoculars to the Saudi government in November 2008. Timms and Ramahi were the primary sales employees responsible for the contract, and also were involved in negotiations to sell FLIR’s security cameras to the same government officials. At the time, Timms was the head of FLIR’s Middle East office in Dubai."; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - RelationshipsResponse response = rosetteApi.getRelationships(text, null, null); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + DocumentRequest request = DocumentRequest.builder().content(relationshipsTextData).build(); + RelationshipsResponse response = api.perform(RELATIONSHIPS_SERVICE_PATH, request, RelationshipsResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/SemanticVectorsExample.java b/examples/src/main/java/com/basistech/rosette/examples/SemanticVectorsExample.java new file mode 100644 index 0000000000..dfee51d29e --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/SemanticVectorsExample.java @@ -0,0 +1,61 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EmbeddingsMode; +import com.basistech.rosette.apimodel.SemanticVectorsOptions; +import com.basistech.rosette.apimodel.SemanticVectorsResponse; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.SEMANTIC_VECTORS_SERVICE_PATH; + +/** + * Example which demonstrates semantic-vectors. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class SemanticVectorsExample extends ExampleBase { + public static void main(String[] args) { + try { + new SemanticVectorsExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String semanticVectorsData = "Cambridge, Massachusetts"; + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + // When no options, use . + DocumentRequest request = DocumentRequest.builder() + .content(semanticVectorsData) + .options(SemanticVectorsOptions.builder() + .embeddingsMode(EmbeddingsMode.GEN_1) + .build()) + .build(); + SemanticVectorsResponse response = api.perform(SEMANTIC_VECTORS_SERVICE_PATH, request, SemanticVectorsResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/SentencesExample.java b/examples/src/main/java/com/basistech/rosette/examples/SentencesExample.java index dd8bf2e86c..bdbce99d38 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/SentencesExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/SentencesExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,29 +15,40 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; import com.basistech.rosette.apimodel.SentencesResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.SENTENCES_SERVICE_PATH; + /** * Example which demonstrates the sentence detection api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class SentencesExample extends ExampleBase { public static void main(String[] args) { try { new SentencesExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "This land is your land. This land is my land\nFrom California to the New York island;\nFrom the red wood forest to the Gulf Stream waters\n\nThis land was made for you and Me.\n\nAs I was walking that ribbon of highway,\nI saw above me that endless skyway:\nI saw below me that golden valley:\nThis land was made for you and me."; + private void run() throws IOException { + String sentencesData = "This land is your land. This land is my land, from California to the New York island; from the red wood forest to the Gulf Stream waters. This land was made for you and Me. As I was walking that ribbon of highway, I saw above me that endless skyway: I saw below me that golden valley: This land was made for you and me."; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - SentencesResponse response = rosetteApi.getSentences(text, null, null); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + // When no options, use . + DocumentRequest request = DocumentRequest.builder().content(sentencesData).build(); + SentencesResponse response = api.perform(SENTENCES_SERVICE_PATH, request, SentencesResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/SentimentExample.java b/examples/src/main/java/com/basistech/rosette/examples/SentimentExample.java index e9e3d03017..9549d31320 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/SentimentExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/SentimentExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,49 +15,58 @@ */ package com.basistech.rosette.examples; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.SentimentOptions; +import com.basistech.rosette.apimodel.SentimentResponse; + import java.io.IOException; -import java.io.OutputStreamWriter; +import java.io.InputStream; +import java.io.Writer; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; -import com.basistech.rosette.apimodel.SentimentResponse; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.SENTIMENT_SERVICE_PATH; /** * Example which demonstrates the sentiment api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class SentimentExample extends ExampleBase { public static void main(String[] args) { try { new SentimentExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String html = "New Ghostbusters Film

Original Ghostbuster Dan Aykroyd, who also co-wrote the 1984 Ghostbusters film, couldn’t be more pleased with the new all-female Ghostbusters cast, telling The Hollywood Reporter, “The Aykroyd family is delighted by this inheritance of the Ghostbusters torch by these most magnificent women in comedy.”

"; - File file = createTempDataFile(html); - FileInputStream inputStream = new FileInputStream(file); + private void run() throws IOException { + // the temp file substitutes for an actual disk file. + String sentimentFileData = "New Ghostbusters Film

Original Ghostbuster Dan Aykroyd, who also co-wrote the 1984 Ghostbusters film, couldn’t be more pleased with the new all-female Ghostbusters cast, telling The Hollywood Reporter, “The Aykroyd family is delighted by this inheritance of the Ghostbusters torch by these most magnificent women in comedy.”

"; + try (InputStream inputStream = Files.newInputStream(createTempDataFile(sentimentFileData))) { + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + // When no options, use . + DocumentRequest request = DocumentRequest.builder().content(inputStream, "text/html").build(); + SentimentResponse response = api.perform(SENTIMENT_SERVICE_PATH, request, SentimentResponse.class); + System.out.println(responseToJson(response)); + } - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - SentimentResponse response = rosetteApi.getSentiment(inputStream, null, null); - inputStream.close(); - System.out.println(responseToJson(response)); } - private static File createTempDataFile(String data) throws IOException { - File file = File.createTempFile("rosette-", "-api"); - BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(file), StandardCharsets.UTF_8 - )); - bw.write(data); - bw.close(); - file.deleteOnExit(); + private static Path createTempDataFile(String data) throws IOException { + Path file = Files.createTempFile("example.", ".html"); + try (Writer writer = Files.newBufferedWriter(file, StandardCharsets.UTF_8)) { + writer.write(data); + } + file.toFile().deleteOnExit(); return file; } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/SimilarTermsExample.java b/examples/src/main/java/com/basistech/rosette/examples/SimilarTermsExample.java new file mode 100644 index 0000000000..4289da127c --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/SimilarTermsExample.java @@ -0,0 +1,65 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.EmbeddingsMode; +import com.basistech.rosette.apimodel.SimilarTermsOptions; +import com.basistech.rosette.apimodel.SimilarTermsResponse; +import com.basistech.util.LanguageCode; +import com.google.common.collect.Lists; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.SIMILAR_TERMS_SERVICE_PATH; + +/** + * Example which demonstrates the similar terms api + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class SimilarTermsExample extends ExampleBase { + public static void main(String[] args) { + try { + new SimilarTermsExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String similarTermsData = "spy"; + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + // When no options, use . + DocumentRequest request = DocumentRequest.builder() + .content(similarTermsData) + .options(SimilarTermsOptions.builder() + .embeddingsMode(EmbeddingsMode.GEN_1) + .resultLanguages(Lists.newArrayList(LanguageCode.SPANISH, LanguageCode.GERMAN, LanguageCode.JAPANESE)) + .build()) + .build(); + SimilarTermsResponse response = api.perform(SIMILAR_TERMS_SERVICE_PATH, request, SimilarTermsResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/SyntaxDependenciesExample.java b/examples/src/main/java/com/basistech/rosette/examples/SyntaxDependenciesExample.java new file mode 100644 index 0000000000..25710f2db2 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/SyntaxDependenciesExample.java @@ -0,0 +1,52 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.SyntaxDependenciesResponse; +import com.basistech.rosette.apimodel.DocumentRequest; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.SYNTAX_DEPENDENCIES_SERVICE_PATH; + +/** + * Example which demonstrates the syntax dependencies endpoint of the Analytics api. + */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) +public final class SyntaxDependenciesExample extends ExampleBase { + public static void main(String[] args) { + try { + new SyntaxDependenciesExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String syntaxDependenciesData = "Yoshinori Ohsumi, a Japanese cell biologist, was awarded the Nobel Prize in Physiology or Medicine on Monday."; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + DocumentRequest request = DocumentRequest.builder().content(syntaxDependenciesData).build(); + SyntaxDependenciesResponse response = api.perform(SYNTAX_DEPENDENCIES_SERVICE_PATH, request, SyntaxDependenciesResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/TokensExample.java b/examples/src/main/java/com/basistech/rosette/examples/TokensExample.java index b7a154261b..be21f6abb9 100644 --- a/examples/src/main/java/com/basistech/rosette/examples/TokensExample.java +++ b/examples/src/main/java/com/basistech/rosette/examples/TokensExample.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,29 +15,40 @@ */ package com.basistech.rosette.examples; -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; import com.basistech.rosette.apimodel.TokensResponse; import java.io.IOException; +import static com.basistech.rosette.api.common.AbstractRosetteAPI.TOKENS_SERVICE_PATH; + /** * Example which demonstrates the tokens api. */ +@SuppressWarnings({"java:S1166", "java:S2221", "java:S106"}) public final class TokensExample extends ExampleBase { public static void main(String[] args) { try { new TokensExample().run(); } catch (Exception e) { e.printStackTrace(); + System.exit(1); } } - private void run() throws IOException, RosetteAPIException { - String text = "北京大学生物系主任办公室内部会议"; + private void run() throws IOException { + String tokensData = "北京大学生物系主任办公室内部会议"; - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - TokensResponse response = rosetteApi.getTokens(text, null, null); + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + //The api object creates an http client, but to provide your own: + //api.httpClient(CloseableHttpClient) + // When no options, use . + DocumentRequest request = DocumentRequest.builder().content(tokensData).build(); + TokensResponse response = api.perform(TOKENS_SERVICE_PATH, request, TokensResponse.class); System.out.println(responseToJson(response)); } } diff --git a/examples/src/main/java/com/basistech/rosette/examples/TopicsExample.java b/examples/src/main/java/com/basistech/rosette/examples/TopicsExample.java new file mode 100644 index 0000000000..70d235672a --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/TopicsExample.java @@ -0,0 +1,52 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.TopicsOptions; +import com.basistech.rosette.apimodel.TopicsResponse; +import com.basistech.util.LanguageCode; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.TOPICS_SERVICE_PATH; + +/** + * Example which demonstrates the topics API. + */ +public class TopicsExample extends ExampleBase { + public static void main(String[] args) { + try { + new TopicsExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws Exception { + String topicsData = "Lily Collins is in talks to join Nicholas Hoult in Chernin Entertainment and Fox Searchlight's J.R.R. Tolkien biopic Tolkien. Anthony Boyle, known for playing Scorpius Malfoy in the British play Harry Potter and the Cursed Child, also has signed on for the film centered on the famed author. In Tolkien, Hoult will play the author of the Hobbit and Lord of the Rings book series that were later adapted into two Hollywood trilogies from Peter Jackson. Dome Karukoski is directing the project."; + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + DocumentRequest request = DocumentRequest.builder() + .language(LanguageCode.ENGLISH) + .content(topicsData) + .build(); + TopicsResponse resp = api.perform(TOPICS_SERVICE_PATH, request, TopicsResponse.class); + System.out.println(responseToJson(resp)); + } +} diff --git a/examples/src/main/java/com/basistech/rosette/examples/TranslatedNameExample.java b/examples/src/main/java/com/basistech/rosette/examples/TranslatedNameExample.java deleted file mode 100644 index 1cae0abfd9..0000000000 --- a/examples/src/main/java/com/basistech/rosette/examples/TranslatedNameExample.java +++ /dev/null @@ -1,46 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.basistech.rosette.examples; - -import com.basistech.rosette.api.RosetteAPI; -import com.basistech.rosette.api.RosetteAPIException; -import com.basistech.rosette.apimodel.NameTranslationRequest; -import com.basistech.rosette.apimodel.NameTranslationResponse; -import com.basistech.util.LanguageCode; - -import java.io.IOException; - -/** - * Example which demonstrates the name translation api. - */ -public final class TranslatedNameExample extends ExampleBase { - public static void main(String[] args) { - try { - new TranslatedNameExample().run(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void run() throws IOException, RosetteAPIException { - NameTranslationRequest request = new NameTranslationRequest("معمر محمد أبو منيار القذاف", - null, null, null, null, LanguageCode.ENGLISH, null, null); - - RosetteAPI rosetteApi = new RosetteAPI(getApiKeyFromSystemProperty()); - NameTranslationResponse response = rosetteApi.translateName(request); - System.out.println(responseToJson(response)); - } -} diff --git a/examples/src/main/java/com/basistech/rosette/examples/TransliterationExample.java b/examples/src/main/java/com/basistech/rosette/examples/TransliterationExample.java new file mode 100644 index 0000000000..e1363819f7 --- /dev/null +++ b/examples/src/main/java/com/basistech/rosette/examples/TransliterationExample.java @@ -0,0 +1,57 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.examples; + +import com.basistech.rosette.api.HttpRosetteAPI; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.TransliterationOptions; +import com.basistech.rosette.apimodel.TransliterationResponse; +import com.basistech.util.LanguageCode; + +import java.io.IOException; + +import static com.basistech.rosette.api.common.AbstractRosetteAPI.TRANSLITERATION_SERVICE_PATH; + +/** + * Example which demonstrates the transliteration API. + */ +public class TransliterationExample extends ExampleBase { + public static void main(String[] args) { + try { + new TransliterationExample().run(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void run() throws IOException { + String transliterationData = "ana r2ye7 el gam3a el sa3a 3 el 3asr"; + + HttpRosetteAPI api = new HttpRosetteAPI.Builder() + .key(getApiKeyFromSystemProperty()) + .url(getAltUrlFromSystemProperty()) + .build(); + // The API object creates an HTTP client, but to provide your own: + // HttpRosetteAPI.Builder#httpClient(CloseableHttpClient) + DocumentRequest request = DocumentRequest.builder() + .content(transliterationData) + .language(LanguageCode.ARABIC) + .build(); + TransliterationResponse response = api.perform(TRANSLITERATION_SERVICE_PATH, request, TransliterationResponse.class); + System.out.println(responseToJson(response)); + } +} diff --git a/json/pom.xml b/json/pom.xml index b39234bef3..65a02897a5 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -1,6 +1,6 @@ +--> 4.0.0 com.basistech.rosette rosette-api-java-binding - 0.7.100-SNAPSHOT + 1.36.1-SNAPSHOT rosette-api-json rosette-api-json - bundle - Rosette API JSON module + Babel Street Analytics API JSON module com.fasterxml.jackson.core jackson-annotations - ${bt-jackson-version} com.fasterxml.jackson.core jackson-databind - ${bt-jackson-version} + + + jakarta.validation + jakarta.validation-api + ${jakarta-validation-api.version} com.basistech.rosette @@ -47,13 +49,25 @@ common-api - junit - junit + com.basistech + adm-json + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.version} + test org.reflections reflections - 0.9.10 + ${reflections.version} test @@ -65,8 +79,23 @@ - org.apache.felix - maven-bundle-plugin + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + add-source + generate-sources + + add-source + + + + ../model/target/generated-sources/annotations + + + + diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeDeserializer.java deleted file mode 100644 index 2dc78e488a..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeDeserializer.java +++ /dev/null @@ -1,40 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.AccuracyMode; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; - -import java.io.IOException; - -/** - * Arrange for {@link AccuracyMode} to serialize as its code. - */ -public class AccuracyModeDeserializer extends StdDeserializer { - - public AccuracyModeDeserializer() { - super(AccuracyMode.class); - } - - @Override - public AccuracyMode deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { - String code = jp.getText(); - return AccuracyMode.forValue(code); - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeSerializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeSerializer.java deleted file mode 100644 index e00baa8b0d..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeSerializer.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.AccuracyMode; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -import java.io.IOException; - -/** - * Jackson serializer for AccuracyMode. - */ -public class AccuracyModeSerializer extends JsonSerializer { - @Override - public void serialize(AccuracyMode accuracyMode, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeString(accuracyMode.getLabel()); - } - - @Override - public Class handledType() { - return AccuracyMode.class; - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressDeserializer.java new file mode 100644 index 0000000000..bede247507 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressDeserializer.java @@ -0,0 +1,65 @@ +/* + * Copyright 2020 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson; + +import com.basistech.rosette.apimodel.FieldedAddress; +import com.basistech.rosette.apimodel.IAddress; +import com.basistech.rosette.apimodel.UnfieldedAddress; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.TreeNode; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.node.TextNode; + +import java.io.IOException; +import java.util.Iterator; +import java.util.Map; + +public class AddressDeserializer extends StdDeserializer { + + private static final String UNFIELDED_KEY = "address"; + + AddressDeserializer() { + super(IAddress.class); + } + + @Override + public IAddress deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException { + ObjectMapper mapper = (ObjectMapper) jp.getCodec(); + TreeNode root = mapper.readTree(jp); + Class addressClass = FieldedAddress.class; + if (root instanceof TextNode) { + // We only have a JsonProperty-based constructor, so we can't + // have jackson create the object for us. + return new UnfieldedAddress(((TextNode) root).textValue()); + } else { + Iterator> iterator = ((ObjectNode)root).fields(); + if (iterator.hasNext()) { + Map.Entry element = iterator.next(); + if (UNFIELDED_KEY.equals(element.getKey())) { + addressClass = UnfieldedAddress.class; + } + } + } + return mapper.treeToValue(root, addressClass); + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressMixin.java new file mode 100644 index 0000000000..c1e21f2fa3 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressMixin.java @@ -0,0 +1,63 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson; + +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +@JsonTypeName("Address") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class AddressMixin { + + @JsonCreator + protected AddressMixin(@JsonProperty("house") String house, + @JsonProperty("houseNumber") String houseNumber, + @JsonProperty("road") String road, + @JsonProperty("unit") String unit, + @JsonProperty("level") String level, + @JsonProperty("staircase") String staircase, + @JsonProperty("entrance") String entrance, + @JsonProperty("suburb") String suburb, + @JsonProperty("cityDistrict") String cityDistrict, + @JsonProperty("city") String city, + @JsonProperty("island") String island, + @JsonProperty("stateDistrict") String stateDistrict, + @JsonProperty("state") String state, + @JsonProperty("countryRegion") String countryRegion, + @JsonProperty("country") String country, + @JsonProperty("worldRegion") String worldRegion, + @JsonProperty("postCode") String postCode, + @JsonProperty("poBox") String poBox, + @JsonProperty("extra") Map extra, + @JsonProperty("uid") String uid) { + // + } + + @JsonCreator + protected AddressMixin() { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class AddressBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressSimilarityRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressSimilarityRequestMixin.java new file mode 100644 index 0000000000..bb391655f0 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AddressSimilarityRequestMixin.java @@ -0,0 +1,46 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson; + +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +import com.basistech.rosette.apimodel.IAddress; + +@JsonTypeName("AddressSimilarityRequest") +@JsonInclude(JsonInclude.Include.NON_NULL) +public class AddressSimilarityRequestMixin { + + @JsonCreator + protected AddressSimilarityRequestMixin( + @JsonProperty("profileId") String profileId, + @JsonProperty("address1") IAddress address1, + @JsonProperty("address2") IAddress address2, + @JsonProperty("parameters") Map parameters + ) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class AddressSimilarityRequestBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AdmRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AdmRequestMixin.java new file mode 100644 index 0000000000..9d8cad03ab --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/AdmRequestMixin.java @@ -0,0 +1,47 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel.jackson; + +import com.basistech.rosette.apimodel.Options; +import com.basistech.rosette.dm.AnnotatedText; +import com.basistech.util.LanguageCode; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +//CHECKSTYLE:OFF +@JsonTypeName("AdmRequest") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class AdmRequestMixin { + + // unable to use builder due to https://github.com/FasterXML/jackson-databind/issues/921 + @JsonCreator + protected AdmRequestMixin( + @JsonProperty("profileId") String profileId, + @JsonProperty("text") AnnotatedText text, + @JsonProperty("options") Options options, + @JsonProperty("language") LanguageCode language + ) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class AdmRequestBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ApiModelMixinModule.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ApiModelMixinModule.java index b22e6a3518..16d30a1f39 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ApiModelMixinModule.java +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ApiModelMixinModule.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2018 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,129 +16,91 @@ package com.basistech.rosette.apimodel.jackson; -import com.basistech.rosette.apimodel.AccuracyMode; -import com.basistech.rosette.apimodel.CategoriesOptions; -import com.basistech.rosette.apimodel.CategoriesRequest; -import com.basistech.rosette.apimodel.CategoriesResponse; -import com.basistech.rosette.apimodel.Category; -import com.basistech.rosette.apimodel.CompoundComponents; -import com.basistech.rosette.apimodel.ConstantsResponse; -import com.basistech.rosette.apimodel.EntitiesOptions; -import com.basistech.rosette.apimodel.EntitiesRequest; -import com.basistech.rosette.apimodel.EntitiesResponse; -import com.basistech.rosette.apimodel.Entity; -import com.basistech.rosette.apimodel.ErrorResponse; -import com.basistech.rosette.apimodel.HanReadings; -import com.basistech.rosette.apimodel.InfoResponse; -import com.basistech.rosette.apimodel.LanguageDetectionResult; -import com.basistech.rosette.apimodel.LanguageInfoResponse; -import com.basistech.rosette.apimodel.LanguageOptions; -import com.basistech.rosette.apimodel.LanguageRequest; -import com.basistech.rosette.apimodel.LanguageResponse; -import com.basistech.rosette.apimodel.LanguageWeight; -import com.basistech.rosette.apimodel.Lemma; -import com.basistech.rosette.apimodel.LinkedEntitiesRequest; -import com.basistech.rosette.apimodel.LinkedEntitiesResponse; -import com.basistech.rosette.apimodel.LinkedEntity; -import com.basistech.rosette.apimodel.MorphologyOptions; -import com.basistech.rosette.apimodel.MorphologyRequest; -import com.basistech.rosette.apimodel.MorphologyResponse; +import com.basistech.rosette.apimodel.AddressSimilarityRequest; +import com.basistech.rosette.apimodel.AdmRequest; +import com.basistech.rosette.apimodel.ConfigurationRequest; +import com.basistech.rosette.apimodel.DocumentRequest; +import com.basistech.rosette.apimodel.FieldedAddress; +import com.basistech.rosette.apimodel.IAddress; import com.basistech.rosette.apimodel.Name; -import com.basistech.rosette.apimodel.NameMatchingRequest; -import com.basistech.rosette.apimodel.NameMatchingResponse; -import com.basistech.rosette.apimodel.NameMatchingResult; +import com.basistech.rosette.apimodel.NameDeduplicationRequest; +import com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers.AddressFieldDeserializer; +import com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers.DateFieldDeserializer; +import com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers.NameFieldDeserializer; +import com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers.RecordSimilarityResponseDeserializer; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResponse; +import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField; +import com.basistech.rosette.apimodel.recordsimilarity.records.DateField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NameField; +import com.basistech.rosette.apimodel.NameSimilarityRequest; import com.basistech.rosette.apimodel.NameTranslationRequest; -import com.basistech.rosette.apimodel.NameTranslationResponse; -import com.basistech.rosette.apimodel.NameTranslationResult; -import com.basistech.rosette.apimodel.PartOfSpeech; -import com.basistech.rosette.apimodel.PingResponse; -import com.basistech.rosette.apimodel.Relationship; -import com.basistech.rosette.apimodel.RelationshipOptions; -import com.basistech.rosette.apimodel.RelationshipsRequest; -import com.basistech.rosette.apimodel.RelationshipsResponse; -import com.basistech.rosette.apimodel.Request; -import com.basistech.rosette.apimodel.Response; -import com.basistech.rosette.apimodel.SchemesResponse; -import com.basistech.rosette.apimodel.ScriptResponse; -import com.basistech.rosette.apimodel.SentencesResponse; -import com.basistech.rosette.apimodel.Sentiment; -import com.basistech.rosette.apimodel.SentimentModel; -import com.basistech.rosette.apimodel.SentimentOptions; -import com.basistech.rosette.apimodel.SentimentRequest; -import com.basistech.rosette.apimodel.SentimentResponse; -import com.basistech.rosette.apimodel.TokensResponse; -import com.basistech.util.jackson.EnumModule; +import com.basistech.rosette.apimodel.UnfieldedAddress; +import com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers.RecordSimilarityRequestDeserializer; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRequest; +import com.basistech.rosette.dm.jackson.AnnotatedDataModelModule; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleSerializers; +import com.fasterxml.jackson.databind.module.SimpleDeserializers; /** * Jackson module to configure Json serialization and deserialization for the * Rosette API model. */ -public class ApiModelMixinModule extends EnumModule { +public class ApiModelMixinModule extends AnnotatedDataModelModule { public ApiModelMixinModule() { super(); } - public void setupModule(SetupContext context) { + @Override + public void setupModule(Module.SetupContext context) { + super.setupModule(context); - context.setMixInAnnotations(Category.class, CategoryMixin.class); - context.setMixInAnnotations(CategoriesOptions.class, CategoryOptionsMixin.class); - context.setMixInAnnotations(CategoriesRequest.class, CategoryRequestMixin.class); - context.setMixInAnnotations(CategoriesResponse.class, CategoryResponseMixin.class); - context.setMixInAnnotations(ConstantsResponse.class, ConstantsResponseMixin.class); - context.setMixInAnnotations(CompoundComponents.class, DecompoudingMixin.class); - context.setMixInAnnotations(EntitiesOptions.class, EntityOptionsMixin.class); - context.setMixInAnnotations(EntitiesRequest.class, EntityRequestMixin.class); - context.setMixInAnnotations(EntitiesResponse.class, EntityResponseMixin.class); - context.setMixInAnnotations(ErrorResponse.class, ErrorResponseMixin.class); - context.setMixInAnnotations(Entity.class, ExtractedEntityMixin.class); - context.setMixInAnnotations(HanReadings.class, HanReadingsMixin.class); - context.setMixInAnnotations(InfoResponse.class, InfoResponseMixin.class); - context.setMixInAnnotations(LanguageDetectionResult.class, LanguageDetectionResultMixin.class); - context.setMixInAnnotations(LanguageInfoResponse.class, LanguageInfoResponseMixin.class); - context.setMixInAnnotations(LanguageOptions.class, LanguageOptionsMixin.class); - context.setMixInAnnotations(LanguageRequest.class, LanguageRequestMixin.class); - context.setMixInAnnotations(LanguageResponse.class, LanguageResponseMixin.class); - context.setMixInAnnotations(LanguageWeight.class, LanguageWeightMixin.class); - context.setMixInAnnotations(Lemma.class, LemmaMixin.class); - context.setMixInAnnotations(MorphologyOptions.class, LinguisticsOptionsMixin.class); - context.setMixInAnnotations(MorphologyRequest.class, LinguisticsRequestMixin.class); - context.setMixInAnnotations(LinkedEntity.class, LinkedEntityMixin.class); - context.setMixInAnnotations(LinkedEntitiesRequest.class, LinkedEntityRequestMixin.class); - context.setMixInAnnotations(LinkedEntitiesResponse.class, LinkedEntityResponseMixin.class); - context.setMixInAnnotations(MorphologyResponse.class, MorphologyResponseMixin.class); + + MixinUtil.addMixins(context); + + context.setMixInAnnotations(DocumentRequest.class, DocumentRequestMixin.class); + context.setMixInAnnotations(DocumentRequest.DocumentRequestBuilder.class, + DocumentRequestMixin.DocumentRequestBuilderMixin.class); + context.setMixInAnnotations(AdmRequest.class, AdmRequestMixin.class); + context.setMixInAnnotations(AdmRequest.AdmRequestBuilder.class, AdmRequestMixin.AdmRequestBuilderMixin.class); + context.setMixInAnnotations(Name.class, NameMixin.class); - context.setMixInAnnotations(NameMatchingRequest.class, NameMatcherRequestMixin.class); - context.setMixInAnnotations(NameMatchingResponse.class, NameMatcherResponseMixin.class); - context.setMixInAnnotations(NameMatchingResult.class, NameMatcherResultMixin.class); + context.setMixInAnnotations(Name.NameBuilder.class, NameMixin.NameBuilderMixin.class); + context.setMixInAnnotations(NameSimilarityRequest.class, NameSimilarityRequestMixin.class); + context.setMixInAnnotations(NameSimilarityRequest.NameSimilarityRequestBuilder.class, + NameSimilarityRequestMixin.NameSimilarityRequestBuilderMixin.class); context.setMixInAnnotations(NameTranslationRequest.class, NameTranslationRequestMixin.class); - context.setMixInAnnotations(NameTranslationResponse.class, NameTranslationResponseMixin.class); - context.setMixInAnnotations(PartOfSpeech.class, PartOfSpeechMixin.class); - context.setMixInAnnotations(PingResponse.class, PingResponseMixin.class); - context.setMixInAnnotations(Request.class, RequestMixin.class); - context.setMixInAnnotations(Response.class, ResponseMixin.class); - context.setMixInAnnotations(SchemesResponse.class, SchemeResponseMixin.class); - context.setMixInAnnotations(ScriptResponse.class, ScriptResponseMixin.class); - context.setMixInAnnotations(Sentiment.class, SentimentMixin.class); - context.setMixInAnnotations(SentimentOptions.class, SentimentOptionsMixin.class); - context.setMixInAnnotations(SentimentRequest.class, SentimentRequestMixin.class); - context.setMixInAnnotations(SentimentResponse.class, SentimentResponseMixin.class); - context.setMixInAnnotations(SentencesResponse.class, SentenceResponseMixin.class); - context.setMixInAnnotations(TokensResponse.class, TokenResponseMixin.class); - context.setMixInAnnotations(NameTranslationResult.class, TranslatedNameResultMixin.class); - context.setMixInAnnotations(RelationshipsRequest.class, RelationshipsRequestMixin.class); - context.setMixInAnnotations(RelationshipsResponse.class, RelationshipResponseMixin.class); - context.setMixInAnnotations(Relationship.class, RelationshipMixin.class); - context.setMixInAnnotations(RelationshipOptions.class, RelationshipOptionsMixin.class); + context.setMixInAnnotations(NameTranslationRequest.NameTranslationRequestBuilder.class, + NameTranslationRequestMixin.NameTranslationRequestBuilderMixin.class); + context.setMixInAnnotations(NameDeduplicationRequest.class, NameDeduplicationRequestMixin.class); + context.setMixInAnnotations(NameDeduplicationRequest.NameDeduplicationRequestBuilder.class, + NameDeduplicationRequestMixin.NameDeduplicationRequestBuilderMixin.class); + + context.setMixInAnnotations(FieldedAddress.class, FieldedAddressMixin.class); + context.setMixInAnnotations(FieldedAddress.FieldedAddressBuilder.class, + FieldedAddressMixin.FieldedAddressBuilderMixin.class); + context.setMixInAnnotations(UnfieldedAddress.class, UnfieldedAddressMixin.class); + context.setMixInAnnotations(UnfieldedAddress.UnfieldedAddressBuilder.class, + UnfieldedAddressMixin.UnfieldedAddressBuilderMixin.class); + + context.setMixInAnnotations(AddressSimilarityRequest.class, AddressSimilarityRequestMixin.class); + context.setMixInAnnotations(AddressSimilarityRequest.AddressSimilarityRequestBuilder.class, + AddressSimilarityRequestMixin.AddressSimilarityRequestBuilderMixin.class); + context.setMixInAnnotations(ConfigurationRequest.class, ConfigurationRequestMixin.class); + context.setMixInAnnotations(ConfigurationRequest.ConfigurationRequestBuilder.class, + ConfigurationRequestMixin.ConfigurationRequestBuilderMixin.class); - context.setMixInAnnotations(SentimentModel.class, SentimentModelMixin.class); - context.setMixInAnnotations(AccuracyMode.class, AccuracyModeMixin.class); - SimpleSerializers keySerializers = new SimpleSerializers(); - keySerializers.addSerializer(new SentimentModelSerializer()); - keySerializers.addSerializer(new AccuracyModeSerializer()); - context.addKeySerializers(keySerializers); + // IAddresses require a custom deserializer + SimpleDeserializers deserializers = new SimpleDeserializers(); + deserializers.addDeserializer(IAddress.class, new AddressDeserializer()); + deserializers.addDeserializer(NameField.class, new NameFieldDeserializer()); + deserializers.addDeserializer(DateField.class, new DateFieldDeserializer()); + deserializers.addDeserializer(AddressField.class, new AddressFieldDeserializer()); + deserializers.addDeserializer(RecordSimilarityRequest.class, new RecordSimilarityRequestDeserializer()); + deserializers.addDeserializer(RecordSimilarityResponse.class, new RecordSimilarityResponseDeserializer()); + context.addDeserializers(deserializers); } /** @@ -150,6 +112,7 @@ public void setupModule(SetupContext context) { public static ObjectMapper setupObjectMapper(ObjectMapper mapper) { final ApiModelMixinModule module = new ApiModelMixinModule(); mapper.registerModule(module); + mapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS); return mapper; } } diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryRequestMixin.java deleted file mode 100644 index d1c76c53b3..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryRequestMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.CategoriesOptions; -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class CategoryRequestMixin extends BaseMixin { - @JsonCreator - public CategoryRequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit, - @JsonProperty("options") CategoriesOptions options - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ConfigurationRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ConfigurationRequestMixin.java new file mode 100644 index 0000000000..09400fec8b --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ConfigurationRequestMixin.java @@ -0,0 +1,42 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson; + +import com.basistech.rosette.apimodel.Configuration; +import com.basistech.util.LanguageCode; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +@JsonTypeName("ConfigurationRequest") +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ConfigurationRequestMixin { + @JsonCreator + protected ConfigurationRequestMixin( + @JsonProperty("profileId") String profileId, + @JsonProperty("language") LanguageCode language, + @JsonProperty("configuration") Configuration configuration + ) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class ConfigurationRequestBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ConstantsResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ConstantsResponseMixin.java deleted file mode 100644 index 66ae255f31..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ConstantsResponseMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ConstantsResponseMixin extends BaseMixin { - @JsonCreator - public ConstantsResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("version") String version, - @JsonProperty("build") String build, - @JsonProperty("support") Object support - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/DocumentRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/DocumentRequestMixin.java new file mode 100644 index 0000000000..5070277d12 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/DocumentRequestMixin.java @@ -0,0 +1,73 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel.jackson; + +import com.basistech.rosette.apimodel.Options; +import com.basistech.util.LanguageCode; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonView; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +import java.io.InputStream; + +//CHECKSTYLE:OFF +@JsonTypeName("DocumentRequest") +@JsonIgnoreProperties({"genre"}) +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class DocumentRequestMixin { + + public static class Views { + public static class Content { + // + } + } + + // unable to use builder due to https://github.com/FasterXML/jackson-databind/issues/921 + @JsonCreator + protected DocumentRequestMixin( + @JsonProperty("profileId") String profileId, + @JsonProperty("language") LanguageCode language, + @JsonProperty("content") Object content, + @JsonProperty("contentUri") String contentUri, + @JsonProperty("contentType") String contentType, + @JsonProperty("options") Options options + ) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class DocumentRequestBuilderMixin { + } + + @JsonIgnore + public abstract Object getRawContent(); + + @JsonIgnore + public abstract InputStream getContentBytes(); + + // the content type goes onto the wire as part of the multipart request. + @JsonIgnore + public abstract String getContentType(); + + @JsonView(Views.Content.class) + public abstract String getContent(); +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityOptionsMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityOptionsMixin.java deleted file mode 100644 index 85ca9b3276..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityOptionsMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.ExtractionMethod; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.EnumSet; - -public final class EntityOptionsMixin extends BaseMixin { - @JsonCreator - private EntityOptionsMixin( - @JsonProperty("resolveNamedEntities") Boolean resolveNamedEntities, - @JsonProperty("maxEntityTokens") Integer maxEntityTokens, - @JsonProperty("processors") EnumSet extractionMethods, - @JsonProperty("allowPartialGazetteerMatches") Boolean allowPartialGazetteerMatches, - @JsonProperty("redactorPreferLength") Boolean redactorPreferLength - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityRequestMixin.java deleted file mode 100644 index 8a3a1f6704..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityRequestMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.EntitiesOptions; -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class EntityRequestMixin extends BaseMixin { - @JsonCreator - public EntityRequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit, - @JsonProperty("options") EntitiesOptions options - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityResponseMixin.java deleted file mode 100644 index cdbf8efc3d..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/EntityResponseMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.Entity; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class EntityResponseMixin extends BaseMixin { - @JsonCreator - public EntityResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("entities") List entities - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ErrorResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ErrorResponseMixin.java deleted file mode 100644 index 2191146319..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ErrorResponseMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ErrorResponseMixin extends BaseMixin { - @JsonCreator - public ErrorResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("code") String code, - @JsonProperty("message") String message - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ExtractedEntityMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/ExtractedEntityMixin.java deleted file mode 100644 index 16561a2807..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ExtractedEntityMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ExtractedEntityMixin extends BaseMixin { - @JsonCreator - public ExtractedEntityMixin( - @JsonProperty("indocChainId") int indocChainId, - @JsonProperty("type") String type, - @JsonProperty("mention") String mention, - @JsonProperty("normalized") String normalized, - @JsonProperty("count") int count, - @JsonProperty("confidence") Double confidence - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/FieldedAddressMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/FieldedAddressMixin.java new file mode 100644 index 0000000000..a288b79188 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/FieldedAddressMixin.java @@ -0,0 +1,54 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +@JsonTypeName("FieldedAddress") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class FieldedAddressMixin { + + @JsonCreator + protected FieldedAddressMixin(@JsonProperty("house") String house, + @JsonProperty("houseNumber") String houseNumber, + @JsonProperty("road") String road, + @JsonProperty("unit") String unit, + @JsonProperty("level") String level, + @JsonProperty("staircase") String staircase, + @JsonProperty("entrance") String entrance, + @JsonProperty("suburb") String suburb, + @JsonProperty("cityDistrict") String cityDistrict, + @JsonProperty("city") String city, + @JsonProperty("island") String island, + @JsonProperty("stateDistrict") String stateDistrict, + @JsonProperty("state") String state, + @JsonProperty("countryRegion") String countryRegion, + @JsonProperty("country") String country, + @JsonProperty("worldRegion") String worldRegion, + @JsonProperty("postCode") String postCode, + @JsonProperty("poBox") String poBox) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class FieldedAddressBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/InfoResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/InfoResponseMixin.java deleted file mode 100644 index fde26e5bb7..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/InfoResponseMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public final class InfoResponseMixin extends BaseMixin { - @JsonCreator - public InfoResponseMixin( - @JsonProperty("name") String name, - @JsonProperty("version") String version, - @JsonProperty("buildNumber") String buildNumber, - @JsonProperty("buildTime") String buildTime, - @JsonProperty("versionChecked") Boolean versionChecked - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageDetectionResultMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageDetectionResultMixin.java deleted file mode 100644 index 6b216da88f..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageDetectionResultMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LanguageDetectionResultMixin extends BaseMixin { - @JsonCreator - public LanguageDetectionResultMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("confidence") Double confidence - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageInfoResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageInfoResponseMixin.java deleted file mode 100644 index 490cf5289a..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageInfoResponseMixin.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.util.ISO15924; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.Map; -import java.util.Set; - -public class LanguageInfoResponseMixin extends BaseMixin { - @JsonCreator - public LanguageInfoResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("supportedLanguages") Map> supportedLanguages, - @JsonProperty("supportedScripts") Map> supportedScripts - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageOptionsMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageOptionsMixin.java deleted file mode 100644 index 92f3bfef34..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageOptionsMixin.java +++ /dev/null @@ -1,41 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.LanguageWeight; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.Set; - -public class LanguageOptionsMixin extends BaseMixin { - @JsonCreator - protected LanguageOptionsMixin( - @JsonProperty("minValidChars") Integer minValidChars, - @JsonProperty("profileDepth") Integer profileDepth, - @JsonProperty("ambiguityThreshold") Double ambiguityThreshold, - @JsonProperty("invalidityThreshold") Double invalidityThreshold, - @JsonProperty("languageHint") LanguageCode languageHint, - @JsonProperty("languageHintWeight") Double languageHintWeight, - @JsonProperty("encodingHint") String encodingHint, - @JsonProperty("encodingHintWeight") Double encodingHintWeight, - @JsonProperty("languageWeightAdjustments") Set languageWeightAdjustments - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageRequestMixin.java deleted file mode 100644 index 66075e3750..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageRequestMixin.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.rosette.apimodel.LanguageOptions; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LanguageRequestMixin extends BaseMixin { - @JsonCreator - public LanguageRequestMixin( - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit, - @JsonProperty("options") LanguageOptions options - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageResponseMixin.java deleted file mode 100644 index e83e9e5003..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageResponseMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.LanguageDetectionResult; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class LanguageResponseMixin extends BaseMixin { - @JsonCreator - public LanguageResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("languageDetections") List languageDetections - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageWeightMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageWeightMixin.java deleted file mode 100644 index 9bd9589c0a..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LanguageWeightMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.util.ISO15924; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LanguageWeightMixin extends BaseMixin { - @JsonCreator - protected LanguageWeightMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("script") ISO15924 script, - @JsonProperty("weight") Integer weight - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LemmaMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LemmaMixin.java deleted file mode 100644 index 5505f30d4e..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LemmaMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LemmaMixin extends BaseMixin { - @JsonCreator - protected LemmaMixin( - @JsonProperty("text") String text, - @JsonProperty("lemma") String lemma - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinguisticsOptionsMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinguisticsOptionsMixin.java deleted file mode 100644 index 151922c635..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinguisticsOptionsMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LinguisticsOptionsMixin extends BaseMixin { - @JsonCreator - protected LinguisticsOptionsMixin( - @JsonProperty("disambiguate") Boolean disambiguate, - @JsonProperty("query") Boolean query, - @JsonProperty("tokenizeForScript") Boolean tokenizeForScript, - @JsonProperty("minNonPrimaryScriptRegionLength") Integer minNonPrimaryScriptRegionLength, - @JsonProperty("includeHebrewRoots") Boolean includeHebrewRoots, - @JsonProperty("nfkcNormalize") Boolean nfkcNormalize, - @JsonProperty("fstTokenize") Boolean fstTokenize, - @JsonProperty("defaultTokenizationLanguage") String defaultTokenizationLanguageCode - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinguisticsRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinguisticsRequestMixin.java deleted file mode 100644 index 87c71fa6a9..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinguisticsRequestMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.rosette.apimodel.MorphologyOptions; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LinguisticsRequestMixin extends BaseMixin { - @JsonCreator - public LinguisticsRequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit, - @JsonProperty("options") MorphologyOptions options - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityMixin.java deleted file mode 100644 index 2f330f0d3d..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LinkedEntityMixin extends BaseMixin { - @JsonCreator - protected LinkedEntityMixin( - @JsonProperty("entityId") String entityId, - @JsonProperty("indocChainId") int indocChainId, - @JsonProperty("mention") String mention, - @JsonProperty("confidence") Double confidence - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityRequestMixin.java deleted file mode 100644 index 33da88c29c..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityRequestMixin.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class LinkedEntityRequestMixin extends BaseMixin { - @JsonCreator - protected LinkedEntityRequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityResponseMixin.java deleted file mode 100644 index e499eede3a..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/LinkedEntityResponseMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.LinkedEntity; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class LinkedEntityResponseMixin extends BaseMixin { - @JsonCreator - public LinkedEntityResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("entities") List entities - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/MorphologyResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/MorphologyResponseMixin.java deleted file mode 100644 index 2ffce6ef83..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/MorphologyResponseMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.CompoundComponents; -import com.basistech.rosette.apimodel.HanReadings; -import com.basistech.rosette.apimodel.Lemma; -import com.basistech.rosette.apimodel.PartOfSpeech; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class MorphologyResponseMixin extends BaseMixin { - @JsonCreator - public MorphologyResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("posTags") List posTags, - @JsonProperty("lemmas") List lemmas, - @JsonProperty("compounds") List compounds, - @JsonProperty("han-readings") List hanReadings - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameDeduplicationRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameDeduplicationRequestMixin.java new file mode 100644 index 0000000000..0a07ca1f60 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameDeduplicationRequestMixin.java @@ -0,0 +1,46 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel.jackson; + +import com.basistech.rosette.apimodel.Name; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +import java.util.List; + +//CHECKSTYLE:OFF +@JsonTypeName("NameDeduplicationRequest") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class NameDeduplicationRequestMixin { + + // unable to use builder due to https://github.com/FasterXML/jackson-databind/issues/921 + @JsonCreator + protected NameDeduplicationRequestMixin( + @JsonProperty("profileId") String profileId, + @JsonProperty("names") List names, + @JsonProperty("threshold") Double threshold + ) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class NameDeduplicationRequestBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherResponseMixin.java deleted file mode 100644 index f252934d99..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherResponseMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.NameMatchingResult; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class NameMatcherResponseMixin extends BaseMixin { - @JsonCreator - protected NameMatcherResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("result") NameMatchingResult result - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherResultMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherResultMixin.java deleted file mode 100644 index ca223daaa4..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherResultMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class NameMatcherResultMixin extends BaseMixin { - @JsonCreator - protected NameMatcherResultMixin( - @JsonProperty("score") Double score - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMixin.java index 3b95e7c697..fb0d70b452 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMixin.java +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMixin.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,16 +19,34 @@ import com.basistech.util.ISO15924; import com.basistech.util.LanguageCode; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; -public class NameMixin extends BaseMixin { +//CHECKSTYLE:OFF +@JsonTypeName("Name") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class NameMixin { + + // Need to stick to a non-builder mixin to support single-string constructor + // see the model code for details @JsonCreator - protected NameMixin( - @JsonProperty("text") String name, + protected NameMixin ( + @JsonProperty("name") String name, @JsonProperty("entityType") String entityType, @JsonProperty("script") ISO15924 script, @JsonProperty("language") LanguageCode language ) { // } + + @JsonCreator + protected NameMixin (String name) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract class NameBuilderMixin { + } } diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameSimilarityRequestMixin.java similarity index 50% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherRequestMixin.java rename to json/src/main/java/com/basistech/rosette/apimodel/jackson/NameSimilarityRequestMixin.java index ff4dce05c8..7dac7d791d 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameMatcherRequestMixin.java +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameSimilarityRequestMixin.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,16 +16,33 @@ package com.basistech.rosette.apimodel.jackson; +import java.util.Map; + import com.basistech.rosette.apimodel.Name; + import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +//CHECKSTYLE:OFF +@JsonTypeName("NameSimilarityRequest") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class NameSimilarityRequestMixin { -public class NameMatcherRequestMixin extends BaseMixin { + // unable to use builder due to https://github.com/FasterXML/jackson-databind/issues/921 @JsonCreator - protected NameMatcherRequestMixin( + protected NameSimilarityRequestMixin( + @JsonProperty("profileId") String profileId, @JsonProperty("name1") Name name1, - @JsonProperty("name2") Name name2 - ) { + @JsonProperty("name2") Name name2, + @JsonProperty("parameters") Map parameters + ) { // } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class NameSimilarityRequestBuilderMixin { + } } diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationRequestMixin.java index aaad2f826e..90b0976bba 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationRequestMixin.java +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationRequestMixin.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,22 +16,38 @@ package com.basistech.rosette.apimodel.jackson; +import com.basistech.util.ISO15924; import com.basistech.util.LanguageCode; +import com.basistech.util.TransliterationScheme; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; -public class NameTranslationRequestMixin extends BaseMixin { +//CHECKSTYLE:OFF +@JsonTypeName("NameTranslationRequest") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class NameTranslationRequestMixin { + + // unable to use builder due to https://github.com/FasterXML/jackson-databind/issues/921 @JsonCreator protected NameTranslationRequestMixin( + @JsonProperty("profileId") String profileId, @JsonProperty("name") String name, @JsonProperty("entityType") String entityType, - @JsonProperty("sourceScript") String sourceScript, + @JsonProperty("sourceScript") ISO15924 sourceScript, @JsonProperty("sourceLanguageOfOrigin") LanguageCode sourceLanguageOfOrigin, @JsonProperty("sourceLanguageOfUse") LanguageCode sourceLanguageOfUse, @JsonProperty("targetLanguage") LanguageCode targetLanguage, - @JsonProperty("targetScript") String targetScript, - @JsonProperty("targetScheme") String targetScheme + @JsonProperty("targetScript") ISO15924 targetScript, + @JsonProperty("targetScheme") TransliterationScheme targetScheme, + @JsonProperty("maximumResults") Integer maximumResults ) { // } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class NameTranslationRequestBuilderMixin { + } } diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationResponseMixin.java deleted file mode 100644 index 4cad2552a0..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/NameTranslationResponseMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.NameTranslationResult; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class NameTranslationResponseMixin extends BaseMixin { - @JsonCreator - protected NameTranslationResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("result") NameTranslationResult result - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/PartOfSpeechMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/PartOfSpeechMixin.java deleted file mode 100644 index bc9e86f519..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/PartOfSpeechMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class PartOfSpeechMixin extends BaseMixin { - @JsonCreator - public PartOfSpeechMixin( - @JsonProperty("text") String text, - @JsonProperty("pos") String pos - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/PingResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/PingResponseMixin.java deleted file mode 100644 index f53ccb0447..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/PingResponseMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class PingResponseMixin extends BaseMixin { - @JsonCreator - public PingResponseMixin( - @JsonProperty("message") String message, - @JsonProperty("time") long time - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipMixin.java deleted file mode 100644 index 10e5e73bc4..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class RelationshipMixin extends BaseMixin { - @JsonCreator - public RelationshipMixin( - @JsonProperty("predicate") String predicate, - @JsonProperty("arg1") String arg1, - @JsonProperty("arg2") String arg2, - @JsonProperty("arg3") String arg3, - @JsonProperty("temporals") List temporals, - @JsonProperty("locatives") List locatives, - @JsonProperty("adjuncts") List adjuncts, - @JsonProperty("confidence") Double confidence - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipOptionsMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipOptionsMixin.java deleted file mode 100644 index 8e2210fda3..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipOptionsMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.AccuracyMode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class RelationshipOptionsMixin extends BaseMixin { - @JsonCreator - protected RelationshipOptionsMixin( - @JsonProperty("accuracyMode") AccuracyMode accuracyMode - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipsRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipsRequestMixin.java deleted file mode 100644 index d9d3dcbf99..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipsRequestMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.rosette.apimodel.RelationshipOptions; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class RelationshipsRequestMixin { - @JsonCreator - public RelationshipsRequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit, - @JsonProperty("options") RelationshipOptions options - ) { - // - } - -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/RequestMixin.java deleted file mode 100644 index bdc2d4cb4f..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RequestMixin.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class RequestMixin extends BaseMixin { - @JsonCreator - protected RequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentenceResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentenceResponseMixin.java deleted file mode 100644 index b43754bcfc..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentenceResponseMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class SentenceResponseMixin extends BaseMixin { - @JsonCreator - public SentenceResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("sentences") List sentences - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentMixin.java deleted file mode 100644 index 2359ed0ad3..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class SentimentMixin extends BaseMixin { - @JsonCreator - protected SentimentMixin( - @JsonProperty("label") String label, - @JsonProperty("confidence") Double confidence, - @JsonProperty("explanations") List explanations - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelDeserializer.java deleted file mode 100644 index e917710a36..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelDeserializer.java +++ /dev/null @@ -1,40 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.SentimentModel; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; - -import java.io.IOException; - -/** - * Arrange for {@link SentimentModel} to serialize as its code. - */ -public class SentimentModelDeserializer extends StdDeserializer { - - public SentimentModelDeserializer() { - super(SentimentModel.class); - } - - @Override - public SentimentModel deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { - String code = jp.getText(); - return SentimentModel.forValue(code); - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelMixin.java deleted file mode 100644 index dccecb5a90..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelMixin.java +++ /dev/null @@ -1,25 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -@JsonSerialize(using = SentimentModelSerializer.class, keyUsing = SentimentModelSerializer.class) -@JsonDeserialize(using = SentimentModelDeserializer.class) -public class SentimentModelMixin extends BaseMixin { -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelSerializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelSerializer.java deleted file mode 100644 index ce939bc09c..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelSerializer.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.SentimentModel; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -import java.io.IOException; - -/** - * Jackson serializer for SentimentModel. - */ -public class SentimentModelSerializer extends JsonSerializer { - @Override - public void serialize(SentimentModel sentimentModel, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeString(sentimentModel.getLabel()); - } - - @Override - public Class handledType() { - return SentimentModel.class; - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentOptionsMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentOptionsMixin.java deleted file mode 100644 index 5b2f8b0ccb..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentOptionsMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.SentimentModel; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class SentimentOptionsMixin extends BaseMixin { - @JsonCreator - protected SentimentOptionsMixin( - @JsonProperty("model") SentimentModel model, - @JsonProperty("explain") Boolean explain - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentRequestMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentRequestMixin.java deleted file mode 100644 index 1666eae9e8..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentRequestMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.InputUnit; -import com.basistech.rosette.apimodel.SentimentOptions; -import com.basistech.util.LanguageCode; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class SentimentRequestMixin extends BaseMixin { - @JsonCreator - protected SentimentRequestMixin( - @JsonProperty("language") LanguageCode language, - @JsonProperty("content") String content, - @JsonProperty("contentUri") String contentUri, - @JsonProperty("contentType") String contentType, - @JsonProperty("unit") InputUnit unit, - @JsonProperty("options") SentimentOptions options - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentResponseMixin.java deleted file mode 100644 index 48c0b4399a..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentResponseMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.basistech.rosette.apimodel.Sentiment; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class SentimentResponseMixin extends BaseMixin { - @JsonCreator - protected SentimentResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("sentiment") List sentiment - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/TokenResponseMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/TokenResponseMixin.java deleted file mode 100644 index 8522e77ea4..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/TokenResponseMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -public class TokenResponseMixin extends BaseMixin { - @JsonCreator - public TokenResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("tokens") List tokens - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/TranslatedNameResultMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/TranslatedNameResultMixin.java deleted file mode 100644 index aa66ae3c42..0000000000 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/TranslatedNameResultMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel.jackson; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class TranslatedNameResultMixin extends BaseMixin { - @JsonCreator - protected TranslatedNameResultMixin( - @JsonProperty("sourceScript") String sourceScript, - @JsonProperty("sourceLanguageOfOrigin") String sourceLanguageOfOrigin, - @JsonProperty("sourceLanguageOfUse") String sourceLanguageOfUse, - @JsonProperty("translation") String translation, - @JsonProperty("targetLanguage") String targetLanguage, - @JsonProperty("targetScript") String targetScript, - @JsonProperty("targetScheme") String targetScheme, - @JsonProperty("confidence") Double confidence - ) { - // - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/UnfieldedAddressMixin.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/UnfieldedAddressMixin.java new file mode 100644 index 0000000000..2a2bd6223b --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/UnfieldedAddressMixin.java @@ -0,0 +1,38 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; + +@JsonTypeName("UnfieldedAddress") +@JsonInclude(JsonInclude.Include.NON_NULL) +public abstract class UnfieldedAddressMixin { + + + @JsonCreator + protected UnfieldedAddressMixin(@JsonProperty("address") String address) { + // + } + + @JsonPOJOBuilder(withPrefix = "") + abstract static class UnfieldedAddressBuilderMixin { + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/AddressFieldDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/AddressFieldDeserializer.java new file mode 100644 index 0000000000..b38c46217b --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/AddressFieldDeserializer.java @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers; + +import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +import java.io.IOException; + +public class AddressFieldDeserializer extends StdDeserializer { + public AddressFieldDeserializer() { + super(AddressField.class); + } + + @Override + public AddressField deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + if (node.isObject()) { + return jsonParser.getCodec().treeToValue(node, AddressField.FieldedAddress.class); + } else if (node.isTextual()) { + return AddressField.UnfieldedAddress.builder().address(node.textValue()).build(); + } + throw new IOException("Invalid JSON structure: unexpected node type"); + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/DateFieldDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/DateFieldDeserializer.java new file mode 100644 index 0000000000..422f342523 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/DateFieldDeserializer.java @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers; + +import com.basistech.rosette.apimodel.recordsimilarity.records.DateField; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +import java.io.IOException; + +public class DateFieldDeserializer extends StdDeserializer { + public DateFieldDeserializer() { + super(DateField.class); + } + + @Override + public DateField deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + if (node.isObject()) { + return jsonParser.getCodec().treeToValue(node, DateField.FieldedDate.class); + } else if (node.isTextual()) { + return DateField.UnfieldedDate.builder().date(node.textValue()).build(); + } + throw new IOException("Invalid JSON structure: unexpected node type"); + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/NameFieldDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/NameFieldDeserializer.java new file mode 100644 index 0000000000..8fb372bc0e --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/NameFieldDeserializer.java @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers; + +import com.basistech.rosette.apimodel.recordsimilarity.records.NameField; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +import java.io.IOException; + +public class NameFieldDeserializer extends StdDeserializer { + public NameFieldDeserializer() { + super(NameField.class); + } + + @Override + public NameField deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + if (node.isObject()) { + return jsonParser.getCodec().treeToValue(node, NameField.FieldedName.class); + } else if (node.isTextual()) { + return NameField.UnfieldedName.builder().text(node.textValue()).build(); + } + throw new IOException("Invalid JSON structure: unexpected node type"); + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityDeserializerUtilities.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityDeserializerUtilities.java new file mode 100644 index 0000000000..2618938e85 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityDeserializerUtilities.java @@ -0,0 +1,154 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityExplainInfo; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResult; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.JsonNode; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityFieldInfo; +import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField; +import com.basistech.rosette.apimodel.recordsimilarity.records.BooleanField; +import com.basistech.rosette.apimodel.recordsimilarity.records.DateField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NameField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NumberField; +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordFieldType; +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordSimilarityField; +import com.basistech.rosette.apimodel.recordsimilarity.records.StringField; +import com.basistech.rosette.apimodel.recordsimilarity.records.UnknownField; + +final class RecordSimilarityDeserializerUtilities { + + private RecordSimilarityDeserializerUtilities() { + } + + public static RecordSimilarityResult parseResult(JsonNode node, JsonParser jsonParser) throws IOException { + final Double score = node.get("score") != null + ? node.get("score").traverse(jsonParser.getCodec()).readValueAs(Double.class) + : null; + final RecordSimilarityExplainInfo explainInfo = node.get("explainInfo") != null + ? node.get("explainInfo").traverse(jsonParser.getCodec()).readValueAs(RecordSimilarityExplainInfo.class) + : null; + final Map left = node.get("left") != null + ? parseRecordForResponse(node.get("left"), jsonParser) + : null; + final Map right = node.get("right") != null + ? parseRecordForResponse(node.get("right"), jsonParser) + : null; + + List errorList = Optional.ofNullable(node.get("error")) + .map(jsonNode -> StreamSupport.stream(jsonNode.spliterator(), false) + .map(JsonNode::asText) + .collect(Collectors.toList())) + .orElse(null); + final List info = Optional.ofNullable(node.get("info")) + .map(jsonNode -> StreamSupport.stream(jsonNode.spliterator(), false) + .map(JsonNode::asText) + .collect(Collectors.toList())) + .orElse(null); + return RecordSimilarityResult.builder() + .score(score) + .left(left) + .right(right) + .explainInfo(explainInfo) + .error(errorList) + .info(info) + .build(); + } + + static Map parseRecordForResponse(JsonNode jsonNode, JsonParser jsonParser) { + final Map recordMap = new HashMap<>(); + jsonNode.fields().forEachRemaining(entry -> { + String fieldName = entry.getKey(); + try { + recordMap.put(fieldName, jsonNode.get(fieldName).traverse(jsonParser.getCodec()) + .readValueAs(UnknownField.class)); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + return recordMap; + } + + static Map parseRecord( + JsonNode jsonNode, + JsonParser jsonParser, + @NotNull @Valid Map fields + ) throws IOException { + final Iterator> recordsIterator = jsonNode.fields(); + final Map recordMap = new HashMap<>(); + while (recordsIterator.hasNext()) { + final Map.Entry recordEntry = recordsIterator.next(); + final String fieldName = recordEntry.getKey(); + final JsonNode fieldValue = recordEntry.getValue(); + + final RecordSimilarityField fieldData; + + if (fields.containsKey(fieldName)) { + final RecordSimilarityFieldInfo fieldInfo = fields.get(fieldName); + if (fieldInfo.getType() == null) { + throw new IllegalArgumentException("Unspecified field type for: " + fieldName); + } + switch (fieldInfo.getType().toLowerCase(Locale.ENGLISH)) { + case RecordFieldType.RNI_DATE: + fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(DateField.class); + break; + case RecordFieldType.RNI_NAME: + fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(NameField.class); + break; + case RecordFieldType.RNI_ADDRESS: + fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(AddressField.class); + break; + case RecordFieldType.RNI_STRING: + fieldData = StringField.builder().data(fieldValue.textValue()).build(); + break; + case RecordFieldType.RNI_NUMBER: + fieldData = NumberField.builder().data(fieldValue.numberValue()).build(); + break; + case RecordFieldType.RNI_BOOLEAN: + // Be sure not to accidentally convert non-boolean values to 'false' + fieldData = BooleanField.builder() + .data(fieldValue.isBoolean() ? fieldValue.booleanValue() : null) + .build(); + break; + default: + fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(UnknownField.class); + } + } else { + //treat unmapped field as UnknownField so we can get to scoring, + //it won't be counted toward the score anyway + fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(UnknownField.class); + } + recordMap.put(fieldName, fieldData); + } + return recordMap; + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityRequestDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityRequestDeserializer.java new file mode 100644 index 0000000000..32b0fb6ab0 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityRequestDeserializer.java @@ -0,0 +1,74 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityFieldInfo; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityProperties; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRecords; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRequest; +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordSimilarityField; + +public class RecordSimilarityRequestDeserializer extends StdDeserializer { + + public RecordSimilarityRequestDeserializer() { + super(RecordSimilarityRequest.class); + } + + @Override + public RecordSimilarityRequest deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + try (jsonParser) { + final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + final Map fields = node.get("fields") != null ? node.get("fields").traverse(jsonParser.getCodec()).readValueAs(new TypeReference>() { }) : new HashMap<>(); + final RecordSimilarityProperties properties = node.get("properties") != null ? node.get("properties").traverse(jsonParser.getCodec()).readValueAs(RecordSimilarityProperties.class) : RecordSimilarityProperties.builder().build(); + RecordSimilarityRecords records = null; + String recordsField = "records"; + if (node.get(recordsField) != null && fields != null && node.get(recordsField).get("left") != null && node.get(recordsField).get("right") != null) { + records = RecordSimilarityRecords.builder() + .left(parseRecords(node.get(recordsField).get("left"), fields, jsonParser)) + .right(parseRecords(node.get(recordsField).get("right"), fields, jsonParser)) + .build(); + } + return RecordSimilarityRequest.builder() + .fields(fields) + .properties(properties) + .records(records) + .build(); + } + } + + private static List> parseRecords(final JsonNode arrayNode, + final Map fields, + final JsonParser jsonParser) throws IOException { + final List> records = new ArrayList<>(); + for (JsonNode recordNode : arrayNode) { + records.add(RecordSimilarityDeserializerUtilities.parseRecord(recordNode, jsonParser, fields)); + } + return records; + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityResponseDeserializer.java b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityResponseDeserializer.java new file mode 100644 index 0000000000..f149f382d4 --- /dev/null +++ b/json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityResponseDeserializer.java @@ -0,0 +1,63 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.jackson.recordsimilaritydeserializers; + +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResponse; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResult; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +public class RecordSimilarityResponseDeserializer extends StdDeserializer { + + public RecordSimilarityResponseDeserializer() { + super(RecordSimilarityResponse.class); + } + + @Override + public RecordSimilarityResponse deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + + List info = Optional.ofNullable(node.get("info")) + .map(jsonNode -> StreamSupport.stream(jsonNode.spliterator(), false) + .map(JsonNode::asText) + .collect(Collectors.toList())) + .orElse(null); + String errorMessage = Optional.ofNullable(node.get("errorMessage")).map(JsonNode::asText).orElse(null); + + JsonNode resultsNode = node.get("results"); + List results = new ArrayList<>(); + if (resultsNode != null) { + for (JsonNode resultNode : resultsNode) { + results.add(RecordSimilarityDeserializerUtilities.parseResult(resultNode, jsonParser)); + } + } + return RecordSimilarityResponse.builder() + .results(results) + .info(info) + .errorMessage(errorMessage) + .build(); + } +} diff --git a/json/src/test/data/EntitiesResponse.json b/json/src/test/data/EntitiesResponse.json new file mode 100644 index 0000000000..de567d958b --- /dev/null +++ b/json/src/test/data/EntitiesResponse.json @@ -0,0 +1,24 @@ +{ + "entities": [ + { + "count": 17, + "mention": "Samsung", + "normalized": "Samsung", + "type": "ORGANIZATION", + "salience": 1.0, + "confidence": 1.0, + "linkingConfidence": 1.0, + "mentionOffsets": [ + {"startOffset": 15, "endOffset": 22}, + {"startOffset": 88, "endOffset": 95} + ], + "salience": 1.0, + "confidence": 1.0, + "linkingConfidence": 1.0, + "dbpediaTypes": [ + "test1", + "test2" + ] + } + ] +} diff --git a/json/src/test/resources/InfoResponse.json b/json/src/test/data/InfoResponse.json similarity index 74% rename from json/src/test/resources/InfoResponse.json rename to json/src/test/data/InfoResponse.json index f0e9dfe728..982af25fef 100644 --- a/json/src/test/resources/InfoResponse.json +++ b/json/src/test/data/InfoResponse.json @@ -3,6 +3,5 @@ "buildTime": "2015.05.08_12:31:26", "name": "Rosette API", "version": "0.5.0", - "requestId": null, - "timers": null -} \ No newline at end of file + "licenseExpiration": "Nov 19, 2020" +} diff --git a/json/src/test/resources/LanguageResponse.json b/json/src/test/data/LanguageResponse.json similarity index 90% rename from json/src/test/resources/LanguageResponse.json rename to json/src/test/data/LanguageResponse.json index 190974cee2..bd6300cf11 100644 --- a/json/src/test/resources/LanguageResponse.json +++ b/json/src/test/data/LanguageResponse.json @@ -20,7 +20,5 @@ "confidence": 0.0036722928060302085, "language": "nor" } - ], - "requestId": null, - "timers": null -} \ No newline at end of file + ] +} diff --git a/json/src/test/data/PingResponse.json b/json/src/test/data/PingResponse.json new file mode 100644 index 0000000000..cfce89412f --- /dev/null +++ b/json/src/test/data/PingResponse.json @@ -0,0 +1,4 @@ +{ + "message":"Rosette API at your service", + "time":1433962008758 +} diff --git a/json/src/test/data/SentimentResponse.json b/json/src/test/data/SentimentResponse.json new file mode 100644 index 0000000000..6b607fc663 --- /dev/null +++ b/json/src/test/data/SentimentResponse.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "count": 17, + "mention": "Samsung", + "normalized": "Samsung", + "type": "ORGANIZATION", + "salience": 1.0, + "confidence": 1.0, + "linkingConfidence": 1.0, + "sentiment": {"label": "neutral", "confidence": 1.0} + } + ] +} diff --git a/json/src/test/java/com/basistech/rosette/apimodel/EnumTest.java b/json/src/test/java/com/basistech/rosette/apimodel/EnumTest.java new file mode 100644 index 0000000000..61e8edb838 --- /dev/null +++ b/json/src/test/java/com/basistech/rosette/apimodel/EnumTest.java @@ -0,0 +1,46 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel; + +import com.fasterxml.jackson.core.type.TypeReference; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class EnumTest { + private ObjectMapper mapper; + + @BeforeEach + public void init() { + mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); + } + + @Test + void testCaseInsensitivity() throws Exception { + String json = "{\"content\": \"foo\", \"options\": {\"modelType\": \"dEfAuLT\"}}"; + Request request = mapper.readValue(json, new TypeReference>() { }); + assertTrue(request instanceof DocumentRequest); + DocumentRequest docRequest = (DocumentRequest) request; + MorphologyOptions options = (MorphologyOptions) docRequest.getOptions(); + assertEquals(MorphologyModelType.DEFAULT, options.getModelType()); + } +} diff --git a/json/src/test/java/com/basistech/rosette/apimodel/ModelTest.java b/json/src/test/java/com/basistech/rosette/apimodel/ModelTest.java index 50a94ae0b8..03a68eda03 100644 --- a/json/src/test/java/com/basistech/rosette/apimodel/ModelTest.java +++ b/json/src/test/java/com/basistech/rosette/apimodel/ModelTest.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,22 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.basistech.rosette.apimodel.jackson.DocumentRequestMixin; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.google.common.collect.Lists; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.reflections.Reflections; +import org.reflections.scanners.SubTypesScanner; + +import java.io.ByteArrayInputStream; import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -27,35 +43,41 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Stream; -import org.junit.Before; -import org.junit.Test; -import org.reflections.Reflections; -import org.reflections.scanners.SubTypesScanner; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; -import com.fasterxml.jackson.databind.ObjectMapper; - -import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +@SuppressWarnings("PMD.UnusedPrivateMethod") // Parameterized Tests +class ModelTest { + private ObjectMapper mapper; -import static org.junit.Assert.assertEquals; - -public class ModelTest { + private static Stream packageTestParameters() { + return Stream.of( + Arguments.of(true), + Arguments.of(false) + ); + } - ObjectMapper mapper; - - @Before + @BeforeEach public void init() { mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); } - @Test - public void packageTest() throws ClassNotFoundException, IllegalAccessException, InvocationTargetException, - InstantiationException, IOException { + @ParameterizedTest(name = "inputStreamContent: {0}") + @MethodSource("packageTestParameters") + void packageTest(boolean inputStreams) throws ClassNotFoundException, IOException { Reflections reflections = new Reflections(this.getClass().getPackage().getName(), new SubTypesScanner(false)); - - Set> allClasses = reflections.getSubTypesOf(Object.class); + Set> allClasses = reflections.getSubTypesOf(Object.class); for (Object clazz : allClasses) { String className = ((Class) clazz).getName(); + if (className.contains("com.basistech.rosette.dm")) { + continue; + } + if (className.contains("Adm")) { + continue; // these are too hard. + } if (className.endsWith(".ModelTest")) { continue; } @@ -65,6 +87,25 @@ public void packageTest() throws ClassNotFoundException, IllegalAccessException, if (className.endsWith("Mixin")) { continue; } + + if (className.endsWith("Builder")) { + continue; + } + if (className.contains(".batch.")) { + // there are polymorphism issues in here for this test strategy. + continue; + } + + if (className.contains("ConfigurationRequest")) { + continue; + } + if (className.contains("RecordSimilarityRequest")) { + continue; + } + if (className.contains("UnknownField")) { + continue; + } + Class c = Class.forName(className); if (Modifier.isAbstract(c.getModifiers())) { continue; @@ -79,32 +120,76 @@ public void packageTest() throws ClassNotFoundException, IllegalAccessException, } Object o1; if (Modifier.isPublic(ctor.getModifiers())) { - o1 = createObject(ctor); + + boolean oldInputStreams = inputStreams; + try { + if (className.endsWith("ConstantsResponse")) { + inputStreams = false; // special case due to Object in there. + } + o1 = createObject(ctor, inputStreams); + } finally { + inputStreams = oldInputStreams; + } + + // serialize - byte[] bytes = mapper.writeValueAsBytes(o1); + // for a request, we might need a view + ObjectWriter writer = mapper.writerWithView(Object.class); + if (o1 instanceof DocumentRequest) { + DocumentRequest r = (DocumentRequest) o1; + if (r.getRawContent() instanceof String || r.getContentUri() != null) { + writer = mapper.writerWithView(DocumentRequestMixin.Views.Content.class); + // need to get rid of contentType for non-multipart request or it will fail comparison + o1 = DocumentRequest.builder() + .profileId(r.getProfileId()) + .language(r.getLanguage()) + .content(r.getContent()) + .contentUri(r.getContentUri()) + .options(r.getOptions()) + .build(); + } + } + String json = writer.writeValueAsString(o1); // deserialize - Object o2 = mapper.readValue(bytes, (Class) clazz); + Object o2 = mapper.readValue(json, (Class) clazz); // verify assertEquals(o1, o2); } } } - private Object createObject(Constructor ctor) throws IllegalAccessException, InvocationTargetException, - InstantiationException { + + private Object createObject(Constructor ctor, boolean inputStreams) { Object o; int argSize = ctor.getParameterTypes().length; Class[] parameterTypes = ctor.getParameterTypes(); Object[] args = new Object[argSize]; + for (int i = 0; i < argSize; i++) { - args[i] = createObjectForType(parameterTypes[i], ctor.getGenericParameterTypes()[i]); + try { + args[i] = createObjectForType(parameterTypes[i], ctor.getGenericParameterTypes()[i], inputStreams); + } catch (Throwable e) { + e.printStackTrace(); + fail(String.format("Unable to create object %s %d %s %s", ctor, i, parameterTypes[i], ctor.getGenericParameterTypes()[i])); + return null; + } + + } + try { + o = ctor.newInstance(args); + } catch (Throwable t) { + if (!Options.class.equals(ctor.getDeclaringClass())) { + t.printStackTrace(); + fail(String.format("Unable to create object for %s", ctor)); + } + return null; } - o = ctor.newInstance(args); return o; } - private Object createObjectForType(Class type, Type genericParameterType) throws IllegalAccessException, - InstantiationException, InvocationTargetException { + //CHECKSTYLE:OFF + private Object createObjectForType(Class type, Type genericParameterType, boolean inputStreams) + throws IllegalAccessException, InstantiationException, InvocationTargetException { Object o = null; Class firstComponentType = type.isArray() ? type.getComponentType() : type; String typeName = firstComponentType.getSimpleName(); @@ -115,9 +200,18 @@ private Object createObjectForType(Class type, Type genericParameterType) throws ParameterizedType aType = (ParameterizedType) genericParameterType; parameterArgTypes = aType.getActualTypeArguments(); for (Type parameterArgType : parameterArgTypes) { - parameterArgClass = (Class) parameterArgType; - if ("Map".equals(typeName)) { - break; + if (parameterArgType instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType)parameterArgType; + if (isListString(parameterizedType)) { + List> rv = Lists.newArrayList(); + rv.add(Lists.newArrayList("string")); + return rv; + } + } else { + parameterArgClass = (Class) parameterArgType; + if ("Map".equals(typeName)) { + break; + } } } } @@ -126,97 +220,123 @@ private Object createObjectForType(Class type, Type genericParameterType) throws return firstComponentType.getEnumConstants()[0]; } switch (typeName) { - case "byte": { - if (type.isArray()) { - o = "somebytes".getBytes(); - } else { - o = (byte) '8'; - } - break; - } - case "String": { - o = "foo"; - break; - } - case "long": - case "Long": { - o = (long) 123456789; - break; - } - case "Double": - case "double" : { - o = 1.0; - break; + case "byte": { + if (type.isArray()) { + o = "somebytes".getBytes(); + } else { + o = (byte) '8'; } - case "int": - case "Integer": { - o = 98761234; - break; + break; + } + case "String": + case "CharSequence": { + o = "foo"; + break; + } + case "long": + case "Long": { + o = (long) 123456789; + break; + } + case "Double": + case "double": { + o = 1.0; + break; + } + case "int": + case "Integer": { + o = 98761234; + break; + } + case "boolean": + case "Boolean": { + o = false; + break; + } + + case "Collection": + case "List": { + if (parameterArgClass != null) { + Object o1 = createObjectForType(parameterArgClass, null, inputStreams); + List list = new ArrayList<>(); + list.add(o1); + o = list; } - case "boolean": - case "Boolean": { - o = false; - break; + break; + } + case "Object": + if (inputStreams) { + o = new ByteArrayInputStream(new byte[0]); + } else { + o = "foo"; } - case "List": { - if (parameterArgClass != null) { - Object o1 = createObjectForType(parameterArgClass, null); - List list = new ArrayList<>(); - list.add(o1); - o = list; - } - break; + break; + case "EnumSet": + break; + case "Set": { + if (parameterArgClass != null) { + Object o1 = createObjectForType(parameterArgClass, null, inputStreams); + Set set = new HashSet<>(); + set.add(o1); + o = set; } - case "Object": - case "EnumSet": - break; - case "Set": { - if (parameterArgClass != null) { - Object o1 = createObjectForType(parameterArgClass, null); - Set set = new HashSet<>(); - set.add(o1); - o = set; + break; + } + case "Map": { + if (parameterArgTypes != null && parameterArgTypes.length == 2) { + Class keyClass = (Class) parameterArgTypes[0]; + Object keyObject = createObject(keyClass); + if (keyObject != null) { + HashMap map = new HashMap<>(); + map.put(keyObject, null); + o = map; } - break; } - case "Map": { - if (parameterArgTypes != null && parameterArgTypes.length == 2) { - Class keyClass = (Class) parameterArgTypes[0]; - Object keyObject = createObject(keyClass); - if (keyObject != null) { - HashMap map = new HashMap<>(); - map.put(keyObject, null); - o = map; - } - } - break; + break; + } + case "IAddress": { + o = new UnfieldedAddress("foo"); + break; + } + default: + if (parameterArgClass != null) { + Constructor[] ctors = parameterArgClass.getDeclaredConstructors(); + o = createObject(ctors[0], inputStreams); + } else { + Constructor[] ctors = firstComponentType.getDeclaredConstructors(); + o = createObject(ctors[0], inputStreams); } - default: - if (parameterArgClass != null) { - Constructor[] ctors = parameterArgClass.getDeclaredConstructors(); - o = createObject(ctors[0]); - } else { - Constructor[] ctors = firstComponentType.getDeclaredConstructors(); - o = createObject(ctors[0]); - } } return o; } + //CHECKSTYLE:ON + + private boolean isListString(ParameterizedType parameterizedType) { + return List.class.equals(parameterizedType.getRawType()) + && parameterizedType.getActualTypeArguments().length == 1 + && String.class.equals(parameterizedType.getActualTypeArguments()[0]); + } private Object createObject(Class clazz) throws IllegalAccessException, InstantiationException, InvocationTargetException { - Constructor[] ctors = clazz.newInstance().getClass().getDeclaredConstructors(); - Object o = null; - for (Constructor ctor : ctors) { - if (ctor.getGenericParameterTypes().length == 1) { - Object objectOfType = createObjectOfType(ctor.getGenericParameterTypes()[0]); - if (objectOfType != null) { - o = ctor.newInstance(objectOfType); - break; + if (Enum.class.isAssignableFrom(clazz)) { + // pick a value, any value. + return clazz.getEnumConstants()[0]; + } else { + Constructor[] ctors = clazz.newInstance().getClass().getDeclaredConstructors(); + + Object o = null; + for (Constructor ctor : ctors) { + if (ctor.getGenericParameterTypes().length == 1) { + Object objectOfType = createObjectOfType(ctor.getGenericParameterTypes()[0]); + if (objectOfType != null) { + o = ctor.newInstance(objectOfType); + break; + } } } + return o; } - return o; } private Object createObjectOfType(Type type) { @@ -265,4 +385,12 @@ private Object createObjectOfType(Type type) { } return object; } + + @Test + void doNotDeserializeGenre() throws JsonProcessingException { + String json = "{\"content\": \"foo\", \"genre\":\"foo\"}"; + // Ensure that the document request no longer deserializes genre + Request request = mapper.readValue(json, new TypeReference>() { }); + assertTrue(mapper.writeValueAsString(request).indexOf("genre") == -1); + } } diff --git a/json/src/test/java/com/basistech/rosette/apimodel/NonNullTest.java b/json/src/test/java/com/basistech/rosette/apimodel/NonNullTest.java index 3e0fd24534..fc9b793fad 100644 --- a/json/src/test/java/com/basistech/rosette/apimodel/NonNullTest.java +++ b/json/src/test/java/com/basistech/rosette/apimodel/NonNullTest.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,65 +18,53 @@ import java.io.File; import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collection; +import java.util.stream.Stream; import org.apache.commons.io.FileUtils; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; -@RunWith(Parameterized.class) -public class NonNullTest extends Assert { +import static org.junit.jupiter.api.Assertions.assertFalse; - private final String className; - private final File testFile; +@SuppressWarnings("PMD.UnusedPrivateMethod") // Parameterized Tests +class NonNullTest { private ObjectMapper mapper; - public NonNullTest(String className, File testFile) { - this.className = className; - this.testFile = testFile; - } - // All test resource filename has .json pattern. They contain null requestId and timers fields. - @Parameterized.Parameters - public static Collection data() throws URISyntaxException, IOException { - URL url = NonNullTest.class.getClassLoader().getResource("."); - File dir = new File(url.toURI()); - Collection params = new ArrayList<>(); + private static Stream testNonNullParameters() throws IOException { + File dir = new File("src/test/data"); + Stream.Builder streamBuilder = Stream.builder(); try (DirectoryStream paths = Files.newDirectoryStream(dir.toPath())) { for (Path file : paths) { if (file.toString().endsWith(".json")) { String className = file.getFileName().toString().replace(".json", ""); - params.add(new Object[]{NonNullTest.class.getPackage().getName() + "." + className, file.toFile()}); + streamBuilder.add(Arguments.of(NonNullTest.class.getPackage().getName() + "." + className, file.toFile())); } } } - return params; + return streamBuilder.build(); } - @Before + @BeforeEach public void init() { mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); } - @Test - public void testNonNull() throws IOException, ClassNotFoundException { + @ParameterizedTest(name = "{0}; {1}") + @MethodSource("testNonNullParameters") + void testNonNull(String className, File testFile) throws IOException, ClassNotFoundException { Class c = Class.forName(className); String s = FileUtils.readFileToString(testFile, StandardCharsets.UTF_8); String s2 = mapper.writeValueAsString(mapper.readValue(s, c)); assertFalse(s2.contains("requestId")); - assertFalse(s2.contains("timers")); } } diff --git a/json/src/test/java/com/basistech/rosette/apimodel/PolymorphicRequestTest.java b/json/src/test/java/com/basistech/rosette/apimodel/PolymorphicRequestTest.java new file mode 100644 index 0000000000..c4cc156d9e --- /dev/null +++ b/json/src/test/java/com/basistech/rosette/apimodel/PolymorphicRequestTest.java @@ -0,0 +1,105 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class PolymorphicRequestTest { + private static final String DOC_REQUEST = DocumentRequest.class.getName(); + private ObjectMapper mapper; + + @BeforeEach + public void init() { + mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); + } + + @Test + void testRequestTypes() throws Exception { + + String json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"genre\": \"news\"}"; + Request request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"calculateConfidence\": true}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"includeDBpediaTypes\": true, \"calculateConfidence\": true}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + assertNull(((DocumentRequest) request).getOptions().getIncludePermID()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"includeDBpediaTypes\": true, \"calculateConfidence\": true, \"includePermID\": true}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + assertTrue(((DocumentRequest) request).getOptions().getIncludePermID()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"includeDBpediaTypes\": true, \"calculateConfidence\": true, \"includePermID\": false}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + assertFalse(((DocumentRequest) request).getOptions().getIncludePermID()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"enableStructuredRegion\": true}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + assertTrue(((DocumentRequest) request).getOptions().getEnableStructuredRegion()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"enableStructuredRegion\": false}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + assertFalse(((DocumentRequest) request).getOptions().getEnableStructuredRegion()); + + json = "{\"name1\": {\"text\": \"Joe\"}, \"name2\": {\"text\": \"Geo\"}}"; + request = mapper.readValue(json, NameSimilarityRequest.class); + assertEquals(NameSimilarityRequest.class.getName(), request.getClass().getName()); + + json = "{\"name\": \"Joe\", \"targetLanguage\": \"ara\"}"; + request = mapper.readValue(json, NameTranslationRequest.class); + assertEquals(NameTranslationRequest.class.getName(), request.getClass().getName()); + + json = "{\"names\": [{\"text\": \"Joe\"}, {\"text\": \"Smith\"}], \"threshold\": 0.8}"; + request = mapper.readValue(json, NameDeduplicationRequest.class); + assertEquals(NameDeduplicationRequest.class.getName(), request.getClass().getName()); + + json = "{\"names\": [\"Joe\", \"Smith\"], \"threshold\": 0.8}"; + request = mapper.readValue(json, NameDeduplicationRequest.class); + assertEquals(NameDeduplicationRequest.class.getName(), request.getClass().getName()); + + json = "{\"language\": \"xxx\", \"configuration\": {\"entities\": { \"LOCATION\": [\"Boston\", \"Mos Eisley\"] } } }"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(ConfigurationRequest.class.getName(), request.getClass().getName()); + } + + @Test + void eventsRequests() throws Exception { + String json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"workspaceId\": \"ws1\"}}"; + Request request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + + json = "{\"content\": \"what is my type\", \"language\": \"eng\", \"options\": {\"plan\": {\"eng\": [\"abc123\"]}}}"; + request = mapper.readValue(json, new TypeReference>() { }); + assertEquals(DOC_REQUEST, request.getClass().getName()); + } +} diff --git a/json/src/test/java/com/basistech/rosette/apimodel/RecordSimilarityRequestTest.java b/json/src/test/java/com/basistech/rosette/apimodel/RecordSimilarityRequestTest.java new file mode 100644 index 0000000000..254a60998a --- /dev/null +++ b/json/src/test/java/com/basistech/rosette/apimodel/RecordSimilarityRequestTest.java @@ -0,0 +1,247 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityFieldInfo; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityProperties; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRecords; +import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRequest; +import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField; +import com.basistech.rosette.apimodel.recordsimilarity.records.BooleanField; +import com.basistech.rosette.apimodel.recordsimilarity.records.DateField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NameField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NumberField; +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordFieldType; +import com.basistech.rosette.apimodel.recordsimilarity.records.StringField; +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class RecordSimilarityRequestTest { + + private static final ObjectMapper MAPPER = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); + private static final String EXPECTED_JSON = "{\"fields\":{\"num\":{\"type\":\"rni_number\",\"weight\":0.25},\"dob2\":{\"type\":\"rni_date\",\"weight\":0.1},\"bool\":{\"type\":\"rni_boolean\",\"weight\":0.05},\"addr\":{\"type\":\"rni_address\",\"weight\":0.5,\"scoreIfNull\":0.8},\"str\":{\"type\":\"rni_string\",\"weight\":0.8},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2}},\"properties\":{\"threshold\":0.7,\"includeExplainInfo\":true},\"records\":{\"left\":[{\"primaryName\":{\"text\":\"Ethan R\",\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\"},\"num\":42.0,\"dob\":\"1993-04-16\",\"dob2\":{\"date\":\"1993/04/16\",\"format\":\"yyyy/MM/dd\"},\"addr\":\"123 Roadlane Ave\"},{\"primaryName\":{\"text\":\"Evan R\"},\"dob\":{\"date\":\"1993-04-16\"},\"str\":\"some string\",\"bool\":false}],\"right\":[{\"primaryName\":{\"text\":\"Seth R\",\"language\":\"eng\"},\"num\":74301945813095,\"dob\":{\"date\":\"1993-04-16\"},\"bool\":true},{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"str\":\"some other string\",\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":\"Ivan R\",\"bool\":true,\"dob\":{\"date\":\"1993-04-16\"}}]}}"; + private static final String EXPECTED_JSON_WITH_PARAMS = "{\"fields\":{\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5},\"str\":{\"type\":\"rni_string\",\"weight\":0.8},\"addr\":{\"type\":\"rni_address\",\"weight\":0.5},\"bool\":{\"type\":\"rni_boolean\",\"weight\":0.05},\"dob2\":{\"type\":\"rni_date\",\"weight\":0.1},\"num\":{\"type\":\"rni_number\",\"weight\":0.25}},\"properties\":{\"threshold\":0.7,\"includeExplainInfo\":true,\"parameters\":{\"stringDistanceWeight\":\"0.1\",\"timeDistanceWeight\":\"0.8\"}},\"records\":{\"left\":[{\"addr\":\"123 Roadlane Ave\",\"dob2\":{\"date\":\"1993/04/16\"},\"dob\":\"1993-04-16\",\"num\":42.0,\"primaryName\":{\"text\":\"Ethan R\",\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\"}},{\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"text\":\"Evan R\"},\"bool\":false,\"str\":\"some string\"}],\"right\":[{\"dob\":{\"date\":\"1993-04-16\"},\"num\":74301945813095,\"primaryName\":{\"text\":\"Seth R\",\"language\":\"eng\"},\"bool\":true},{\"primaryName\":\"Ivan R\",\"dob2\":{\"date\":\"1993/04/16\"},\"str\":\"some other string\",\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"bool\":true}]}}"; + private static final String EXPECTED_JSON_WITH_UNIVERSE = "{\"fields\":{\"num\":{\"type\":\"rni_number\",\"weight\":0.25},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"str\":{\"type\":\"rni_string\",\"weight\":0.8},\"addr\":{\"type\":\"rni_address\",\"weight\":0.5},\"bool\":{\"type\":\"rni_boolean\",\"weight\":0.05},\"dob2\":{\"type\":\"rni_date\",\"weight\":0.1}},\"properties\":{\"threshold\":0.7,\"includeExplainInfo\":true,\"parameterUniverse\":\"myParameterUniverse\"},\"records\":{\"left\":[{\"num\":42.0,\"primaryName\":{\"text\":\"Ethan R\",\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\"},\"addr\":\"123 Roadlane Ave\",\"dob2\":{\"date\":\"1993/04/16\"},\"dob\":\"1993-04-16\"},{\"primaryName\":{\"text\":\"Evan R\"},\"bool\":false,\"str\":\"some string\",\"dob\":{\"date\":\"1993-04-16\"}}],\"right\":[{\"primaryName\":{\"text\":\"Seth R\",\"language\":\"eng\"},\"bool\":true,\"dob\":{\"date\":\"1993-04-16\"},\"num\":74301945813095},{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"bool\":true,\"primaryName\":\"Ivan R\",\"dob2\":{\"date\":\"1993/04/16\"},\"str\":\"some other string\"}]}}"; + + private static final RecordSimilarityRequest EXPECTED_REQUEST = RecordSimilarityRequest.builder() + .fields(Map.of( + "addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_ADDRESS).weight(0.5).scoreIfNull(0.8).build(), + "dob2", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.1).scoreIfNull(null).build(), + "primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NAME).weight(0.5).build(), + "dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.2).build(), + "str", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_STRING).weight(0.8).build(), + "num", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NUMBER).weight(0.25).build(), + "bool", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_BOOLEAN).weight(0.05).build())) + .properties(RecordSimilarityProperties.builder().threshold(0.7).includeExplainInfo(true).build()) + .records(RecordSimilarityRecords.builder() + .left( + List.of( + Map.of( + "primaryName", NameField.FieldedName.builder() + .text("Ethan R").entityType("PERSON") + .language(LanguageCode.ENGLISH) + .languageOfOrigin(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .build(), + "dob", DateField.UnfieldedDate.builder().date("1993-04-16").build(), + "dob2", DateField.FieldedDate.builder().date("1993/04/16").format("yyyy/MM/dd").build(), + "addr", AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build(), + "num", NumberField.builder().data(42.0).build() + ), + Map.of( + "primaryName", NameField.FieldedName.builder().text("Evan R").build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "str", StringField.builder().data("some string").build(), + "bool", BooleanField.builder().data(false).build() + ) + ) + ).right( + List.of( + Map.of( + "primaryName", NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "num", NumberField.builder().data(74301945813095L).build(), + "bool", BooleanField.builder().data(true).build() + ), + Map.of( + "primaryName", NameField.UnfieldedName.builder().text("Ivan R").build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "dob2", DateField.FieldedDate.builder().date("1993/04/16").build(), + "addr", AddressField.FieldedAddress.builder().houseNumber("123").road("Roadlane Ave").build(), + "str", StringField.builder().data("some other string").build(), + "bool", BooleanField.builder().data(true).build() + ) + ) + ).build() + ).build(); + + private static final RecordSimilarityRequest EXPECTED_REQUEST_WITH_PARAMS = RecordSimilarityRequest.builder() + .fields(Map.of( + "dob2", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.1).build(), + "primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NAME).weight(0.5).build(), + "dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.2).build(), + "addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_ADDRESS).weight(0.5).build(), + "str", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_STRING).weight(0.8).build(), + "num", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NUMBER).weight(0.25).build(), + "bool", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_BOOLEAN).weight(0.05).build())) + .properties(RecordSimilarityProperties.builder() + .threshold(0.7) + .includeExplainInfo(true) + .parameters( + Map.of( + "timeDistanceWeight", "0.8", + "stringDistanceWeight", "0.1" + ) + ) + .build()) + .records(RecordSimilarityRecords.builder() + .left( + List.of( + Map.of( + "primaryName", NameField.FieldedName.builder() + .text("Ethan R").entityType("PERSON") + .language(LanguageCode.ENGLISH) + .languageOfOrigin(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .build(), + "dob", DateField.UnfieldedDate.builder().date("1993-04-16").build(), + "dob2", DateField.FieldedDate.builder().date("1993/04/16").build(), + "addr", AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build(), + "num", NumberField.builder().data(42.0).build() + ), + Map.of( + "primaryName", NameField.FieldedName.builder().text("Evan R").build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "str", StringField.builder().data("some string").build(), + "bool", BooleanField.builder().data(false).build() + ) + ) + ).right( + List.of( + Map.of( + "primaryName", NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "num", NumberField.builder().data(74301945813095L).build(), + "bool", BooleanField.builder().data(true).build() + ), + Map.of( + "primaryName", NameField.UnfieldedName.builder().text("Ivan R").build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "dob2", DateField.FieldedDate.builder().date("1993/04/16").build(), + "addr", AddressField.FieldedAddress.builder().houseNumber("123").road("Roadlane Ave").build(), + "str", StringField.builder().data("some other string").build(), + "bool", BooleanField.builder().data(true).build() + ) + ) + ).build() + ).build(); + + private static final RecordSimilarityRequest EXPECTED_REQUEST_WITH_UNIVERSE = RecordSimilarityRequest.builder() + .fields(Map.of( + "dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.2).build(), + "primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NAME).weight(0.5).build(), + "dob2", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.1).build(), + "addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_ADDRESS).weight(0.5).build(), + "str", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_STRING).weight(0.8).build(), + "num", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NUMBER).weight(0.25).build(), + "bool", RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_BOOLEAN).weight(0.05).build())) + .properties(RecordSimilarityProperties.builder() + .threshold(0.7) + .includeExplainInfo(true) + .parameterUniverse("myParameterUniverse") + .build()) + .records(RecordSimilarityRecords.builder() + .left( + List.of( + Map.of( + "primaryName", NameField.FieldedName.builder() + .text("Ethan R").entityType("PERSON") + .language(LanguageCode.ENGLISH) + .languageOfOrigin(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .build(), + "dob", DateField.UnfieldedDate.builder().date("1993-04-16").build(), + "dob2", DateField.FieldedDate.builder().date("1993/04/16").build(), + "addr", AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build(), + "num", NumberField.builder().data(42.0).build() + ), + Map.of( + "primaryName", NameField.FieldedName.builder().text("Evan R").build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "str", StringField.builder().data("some string").build(), + "bool", BooleanField.builder().data(false).build() + ) + ) + ).right( + List.of( + Map.of( + "primaryName", NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "num", NumberField.builder().data(74301945813095L).build(), + "bool", BooleanField.builder().data(true).build() + ), + Map.of( + "primaryName", NameField.UnfieldedName.builder().text("Ivan R").build(), + "dob", DateField.FieldedDate.builder().date("1993-04-16").build(), + "dob2", DateField.FieldedDate.builder().date("1993/04/16").build(), + "addr", AddressField.FieldedAddress.builder().houseNumber("123").road("Roadlane Ave").build(), + "str", StringField.builder().data("some other string").build(), + "bool", BooleanField.builder().data(true).build() + ) + ) + ).build() + ).build(); + + @Test + void testDeserialization() throws JsonProcessingException { + final RecordSimilarityRequest request = MAPPER.readValue(EXPECTED_JSON, new TypeReference<>() { }); + assertEquals(EXPECTED_REQUEST, request); + + final RecordSimilarityRequest requestParams = MAPPER.readValue(EXPECTED_JSON_WITH_PARAMS, new TypeReference<>() { }); + assertEquals(EXPECTED_REQUEST_WITH_PARAMS, requestParams); + + final RecordSimilarityRequest requestUniverse = MAPPER.readValue(EXPECTED_JSON_WITH_UNIVERSE, new TypeReference<>() { }); + assertEquals(EXPECTED_REQUEST_WITH_UNIVERSE, requestUniverse); + } + + @Test + void testSerialization() throws JsonProcessingException { + final JsonNode expectedJson = MAPPER.readTree(EXPECTED_JSON); + final JsonNode actualJson = MAPPER.valueToTree(EXPECTED_REQUEST); + assertEquals(expectedJson, actualJson); + + final JsonNode expectedParamJson = MAPPER.readTree(EXPECTED_JSON_WITH_PARAMS); + final JsonNode actualParamJson = MAPPER.valueToTree(EXPECTED_REQUEST_WITH_PARAMS); + assertEquals(expectedParamJson, actualParamJson); + + final JsonNode expectedUniverseJson = MAPPER.readTree(EXPECTED_JSON_WITH_UNIVERSE); + final JsonNode actualUniverseJson = MAPPER.valueToTree(EXPECTED_REQUEST_WITH_UNIVERSE); + assertEquals(expectedUniverseJson, actualUniverseJson); + } + +} diff --git a/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java b/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java new file mode 100644 index 0000000000..f09b090562 --- /dev/null +++ b/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java @@ -0,0 +1,155 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel.recordsimilarity; + + +import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule; +import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField; +import com.basistech.rosette.apimodel.recordsimilarity.records.BooleanField; +import com.basistech.rosette.apimodel.recordsimilarity.records.DateField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NameField; +import com.basistech.rosette.apimodel.recordsimilarity.records.NumberField; +import com.basistech.rosette.apimodel.recordsimilarity.records.StringField; +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; +import com.basistech.util.NEConstants; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class RecordSimilarityResponseTest { + + private static final ObjectMapper MAPPER = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); + private static final String EXPECTED_JSON = "{\"info\":[\"Field threshold not found in properties! Defaulting to 0.0\",\"Field weight not found in fields! Defaulting to 1.0 for all entries\"],\"results\":[{\"explainInfo\":{\"leftOnlyFields\":[\"addr\"],\"rightOnlyFields\":[\"bool\"],\"scoredFields\":{\"dob\":{\"calculatedWeight\":0.2857142857142857,\"finalScore\":0.74,\"rawScore\":0.8,\"weight\":0.33},\"primaryName\":{\"calculatedWeight\":0.7142857142857143,\"details\":\"any details\",\"finalScore\":0.85,\"rawScore\":0.99,\"weight\":0.33},\"str\":{\"calculatedWeight\":0.0,\"finalScore\":0.5,\"rawScore\":0.5,\"weight\":0.33}}},\"left\":{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"num\":2342.15,\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"},\"str\":\"some string\"},\"right\":{\"bool\":false,\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"},\"str\":\"some other string\"},\"score\":0.87},{\"error\":[\"Field foo not found in field mapping\"],\"info\":[\"Some info message\",\"Some other info message\"],\"left\":{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}}}]}"; + + private static final RecordSimilarityResponse EXPECTED_RESPONSE; + + static { + RecordSimilarityResponse temp; + try { + temp = RecordSimilarityResponse.builder() + .results(List.of(RecordSimilarityResult.builder() + .score(0.87) + .left(Map.of("primaryName", NameField.FieldedName.builder() + .text("Ethan R") + .language(LanguageCode.ENGLISH) + .entityType(NEConstants.toString(NEConstants.NE_TYPE_PERSON)) + .languageOfOrigin(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .build(), + "dob", DateField.FieldedDate.builder() + .date("1993-04-16") + .build(), + "addr", AddressField.FieldedAddress.builder() + .houseNumber("123").road("Roadlane Ave") + .build(), + "str", StringField.builder().data("some string").build(), + "num", NumberField.builder().data(2342.15).build())) + .right(Map.of("primaryName", NameField.FieldedName.builder() + .text("Seth R") + .build(), + "dob", DateField.UnfieldedDate.builder() + .date("1993-04-16") + .build(), + "str", StringField.builder().data("some other string").build(), + "bool", BooleanField.builder().data(false).build())) + .explainInfo(RecordSimilarityExplainInfo.builder() + .leftOnlyFields(List.of("addr")) + .rightOnlyFields(List.of("bool")) + .scoredFields(Map.of("dob", RecordSimilarityFieldExplainInfo.builder() + .weight(0.33) + .calculatedWeight(0.2857142857142857) + .rawScore(0.8) + .finalScore(0.74) + .build(), + "primaryName", + RecordSimilarityFieldExplainInfo.builder() + .weight(0.33) + .calculatedWeight(0.7142857142857143) + .rawScore(0.99) + .finalScore(0.85) + .details(MAPPER.readTree("\"any details\"")) + .build(), + "str", + RecordSimilarityFieldExplainInfo.builder() + .weight(0.33) + .calculatedWeight(0.0) + .rawScore(0.5) + .finalScore(0.5) + .build() + )) + .build()) + .build(), + RecordSimilarityResult.builder() + .left(Map.of("primaryName", NameField.FieldedName.builder() + .text("Ethan R") + .language(LanguageCode.ENGLISH) + .entityType(NEConstants.toString(NEConstants.NE_TYPE_PERSON)) + .languageOfOrigin(LanguageCode.ENGLISH) + .script(ISO15924.Latn) + .build(), + "dob", DateField.FieldedDate.builder() + .date("1993-04-16") + .build(), + "addr", AddressField.FieldedAddress.builder() + .houseNumber("123").road("Roadlane Ave") + .build())) + .right(Map.of("primaryName", NameField.FieldedName.builder() + .text("Seth R") + .build(), + "dob", DateField.UnfieldedDate.builder() + .date("1993-04-16") + .build())) + .error(List.of("Field foo not found in field mapping")) + .info(List.of("Some info message", "Some other info message")) + .build())) + .info(List.of( + "Field threshold not found in properties! Defaulting to 0.0", + "Field weight not found in fields! Defaulting to 1.0 for all entries") + ) + .build(); + } catch (JsonProcessingException e) { + temp = RecordSimilarityResponse.builder().build(); + } + EXPECTED_RESPONSE = temp; + } + + @Test + public void testDeserialization() throws JsonProcessingException { + // For testing, force ordering + MAPPER.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY); + MAPPER.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS); + final RecordSimilarityResponse response = MAPPER.readValue(EXPECTED_JSON, RecordSimilarityResponse.class); + //Can't compare response objects directly since fields within names and other RecordSimilarityField may + // change order, so compare the content of their json strings with fields sorted alphabetically + assertEquals(MAPPER.writeValueAsString(response), MAPPER.writeValueAsString(EXPECTED_RESPONSE)); + } + + @Test + public void testSerialization() throws JsonProcessingException { + // For testing, force ordering + MAPPER.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY); + MAPPER.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS); + assertEquals(EXPECTED_JSON, MAPPER.writeValueAsString(EXPECTED_RESPONSE)); + } +} diff --git a/json/src/test/resources/EntitiesResponse.json b/json/src/test/resources/EntitiesResponse.json deleted file mode 100644 index 200e85f88e..0000000000 --- a/json/src/test/resources/EntitiesResponse.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "entities": [ - { - "confidence": 1.0, - "count": 17, - "indocChainId": 0, - "mention": "Samsung", - "normalized": "Samsung", - "type": "ORGANIZATION" - } - ], - "requestId": null, - "timers": null -} \ No newline at end of file diff --git a/json/src/test/resources/PingResponse.json b/json/src/test/resources/PingResponse.json deleted file mode 100644 index 9d3c028129..0000000000 --- a/json/src/test/resources/PingResponse.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "message":"Rosette API at your service", - "time":1433962008758, - "requestId": null, - "timers": null -} diff --git a/model/pom.xml b/model/pom.xml index 97148c2142..6992e0cfbe 100644 --- a/model/pom.xml +++ b/model/pom.xml @@ -1,46 +1,127 @@ - +--> 4.0.0 com.basistech.rosette rosette-api-java-binding - 0.7.100-SNAPSHOT + 1.36.1-SNAPSHOT rosette-api-model rosette-api-model - bundle - Rosette API data models + Babel Street Analytics API data models + + ${project.build.directory}/delombok + + + com.basistech.rosette + rosette-api-annotations + ${project.version} + provided + com.basistech common-api + + jakarta.validation + jakarta.validation-api + ${jakarta-validation-api.version} + + + com.basistech + adm-model + + + org.projectlombok + lombok + ${lombok.version} + provided + + + com.squareup + javapoet + ${java-poet.version} + provided + + + com.fasterxml.jackson.core + jackson-annotations + provided + + + com.fasterxml.jackson.core + jackson-databind + provided + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + - org.apache.felix - maven-bundle-plugin + org.projectlombok + lombok-maven-plugin + ${lombok-maven-plugin.version} + + + org.projectlombok + lombok + ${lombok.version} + + + + + generate-sources + + delombok + + + + false + src/main/java + ${delombok.output.directory} + + skip + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + attach-javadocs + + jar + + + - - com.basistech.rosette.apimodel - + ${delombok.output.directory} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/AccuracyMode.java b/model/src/main/java/com/basistech/rosette/apimodel/AccuracyMode.java index dff2ee83d1..374dc49634 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/AccuracyMode.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/AccuracyMode.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,13 +19,13 @@ import java.util.EnumSet; /** - * Rosette API relationship accuracy mode + * Analytics API relationship accuracy mode */ public enum AccuracyMode { PRECISION("precision"), RECALL("recall"); - private String label; + private final String label; /** * constructor for {@code AccuracyMode} which sets a label for reference @@ -42,14 +42,6 @@ public String getLabel() { return label; } - /** - * set the label - * @param label the label - */ - public void setLabel(String label) { - this.label = label; - } - /** * checks if value is a valid {@code AccuracyMode} enum * @param value input value diff --git a/model/src/main/java/com/basistech/rosette/apimodel/AddressSimilarityRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/AddressSimilarityRequest.java new file mode 100644 index 0000000000..9e7b526a8d --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/AddressSimilarityRequest.java @@ -0,0 +1,59 @@ +/* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + + +import java.util.Map; + +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Value; + +/** + * Request object for address-similarity. + * + * This class carries the two addresses to compare. + */ +@Value +public final class AddressSimilarityRequest extends Request { + + /** + * @return first address + */ + @NotNull + private IAddress address1; + + /** + * @return second address + */ + @NotNull + private IAddress address2; + + /** + * @return parameters to use in the request + */ + private Map parameters; + + @Builder + public AddressSimilarityRequest(String profileId, IAddress address1, IAddress address2, + Map parameters) { + super(profileId); + this.address1 = address1; + this.address2 = address2; + this.parameters = parameters; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/AddressSimilarityResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/AddressSimilarityResponse.java new file mode 100644 index 0000000000..f745c3d944 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/AddressSimilarityResponse.java @@ -0,0 +1,37 @@ +/* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import com.basistech.rosette.annotations.JacksonMixin; + +/** + * Response data model for comparison of two addresses. + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class AddressSimilarityResponse extends Response { + /** + * @return address similarity result score (0.0-1.0) + */ + private final Double score; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/AdmRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/AdmRequest.java new file mode 100644 index 0000000000..2ff03054d7 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/AdmRequest.java @@ -0,0 +1,57 @@ +/* + * Copyright 2017 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.dm.AnnotatedText; +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +/** + * A request to a document-processing endpoint that supplies the input as partially-annotated + * input in a {@link com.basistech.rosette.dm.AnnotatedText} object. + */ +@Value +public final class AdmRequest extends Request { + public static final String ADM_CONTENT_TYPE = "model/vnd.rosette.annotated-data-model"; + + /** + * @return {@link com.basistech.rosette.dm.AnnotatedText} + */ + private final AnnotatedText text; + + /** + * @return options + */ + private final O options; + + /** + * @return language + */ + private final LanguageCode language; + + + @Builder // workaround for inheritance https://github.com/rzwitserloot/lombok/issues/853 + public AdmRequest(String profileId, + AnnotatedText text, + O options, + LanguageCode language) { + super(profileId); + this.text = text; + this.options = options; + this.language = language; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/ExtractionMethod.java b/model/src/main/java/com/basistech/rosette/apimodel/AdmResponse.java similarity index 50% rename from model/src/main/java/com/basistech/rosette/apimodel/ExtractionMethod.java rename to model/src/main/java/com/basistech/rosette/apimodel/AdmResponse.java index 89856355c5..e34018464b 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/ExtractionMethod.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/AdmResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,19 +16,23 @@ package com.basistech.rosette.apimodel; -public enum ExtractionMethod { - /** The statistical entity extractor. */ - statistical, - /** The gazetteer based entity extractor. */ - acceptGazetteer, - /** The regular expression based entity extractor. */ - acceptRegex, - /** The gazetteer based entity rejector. */ - rejectGazetteer, - /** The regular expression based entity rejector. */ - rejectRegex, - /** The entity redactor, which disambiguates overlapping entities. */ - redactor, - /** The entity joiner, which joins adjacent entities. */ - joiner +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.rosette.dm.AnnotatedText; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +/** + * An {@link com.basistech.rosette.dm.AnnotatedText} response from a document-processing endpoint. + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class AdmResponse extends Response { + + /** + * @return {@link com.basistech.rosette.dm.AnnotatedText} + */ + private final AnnotatedText text; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CategoriesOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/CategoriesOptions.java index 29ba8c7813..658136104a 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/CategoriesOptions.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/CategoriesOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,101 +16,41 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import jakarta.validation.constraints.Min; +import lombok.Builder; +import lombok.Value; + /** * Categorization options */ -public final class CategoriesOptions { - - private String model; - private Boolean explain; - private Integer numCategories; - - /** - * constructor for {@code CategoriesOptions} - * @param model model to use for categorization - * @param explain whether to return explanation strings for each category returned - * @param numCategories max number of categories - */ - public CategoriesOptions( - String model, - Boolean explain, - Integer numCategories - ) { - this.model = model; - this.explain = explain; - this.numCategories = numCategories; - } - - /** - * get the model to use for categorization - * @return the model - */ - public String getModel() { - return model; - } - - /** - * get whether to return explanation strings for each category returned - * @return whether to return explanation strings - */ - public Boolean getExplain() { - return explain; - } +@Value +@Builder +@JacksonMixin +public class CategoriesOptions extends Options { /** - * get max number of categories + * @deprecated + * Users should use {@link singleLabel} to return only one result + * or {@link scoreThreshold} to filter results based on raw score * @return number of categories */ - public Integer getNumCategories() { - return numCategories; - } + @Deprecated + @Min(1) + private final Integer numCategories; /** - * set the model to use for categorization - * @param model the model + * Single label mode will return only the highest scoring category, regardless of score + * If singleLabel is false, every category whose score exceeds the default + * (or specified) {@link scoreThreshold} value will be returned + * @return whether or not we are in single label mode */ - public void setModel(String model) { - this.model = model; - } + private final Boolean singleLabel; /** - * set whether to return explanation strings for each category returned - * @param explain whether to return explanation strings + * threshold against the category's raw score, whose value + * can be any real number. + * @return the score threshold */ - public void setExplain(Boolean explain) { - this.explain = explain; - } - - /** - * set max number of categories - * @param numCategories number of categories - */ - public void setNumCategories(Integer numCategories) { - this.numCategories = numCategories; - } - - @Override - public int hashCode() { - int result = model != null ? model.hashCode() : 0; - result = 31 * result + (explain != null ? explain.hashCode() : 0); - result = 31 * result + (numCategories != null ? numCategories.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code CategoriesOptions}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof CategoriesOptions)) { - return false; - } - - CategoriesOptions that = (CategoriesOptions) o; - return model != null ? model.equals(that.getModel()) : that.model == null - && explain != null ? explain.equals(that.getExplain()) : that.explain == null - && numCategories != null ? numCategories.equals(that.getNumCategories()) : that.numCategories == null; - } + private final Float scoreThreshold; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CategoriesRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/CategoriesRequest.java deleted file mode 100644 index fe6026623b..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/CategoriesRequest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import com.basistech.util.LanguageCode; - -/** - * Class that represents the data from a categorization request - */ -public final class CategoriesRequest extends Request { - - private CategoriesOptions options; - - /** - * Constructor for {@code CategoriesRequest} - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - * @param options categorization options - */ - public CategoriesRequest( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit, - CategoriesOptions options - ) { - super(language, content, contentUri, contentType, unit); - this.options = options; - } - - /** - * get the categorization options - * @return the categorization options - */ - public CategoriesOptions getOptions() { - return options; - } - - /** - * set the categorization options - * @param options the options - */ - public void setOptions(CategoriesOptions options) { - this.options = options; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (options != null ? options.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code CategoriesRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof CategoriesRequest)) { - return false; - } - - CategoriesRequest that = (CategoriesRequest) o; - return super.equals(o) - && options != null ? options.equals(that.getOptions()) : that.options == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CategoriesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/CategoriesResponse.java index 36646d371e..b7abd9590b 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/CategoriesResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/CategoriesResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,54 +16,24 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + import java.util.List; /** * Simple api response data model for categorization **/ -public final class CategoriesResponse extends Response { +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class CategoriesResponse extends Response { - private final List categories; - /** - * Constructor for {@code CategoriesResponse} - * @param requestId request id - * @param categories list of categories + * @return a list of categories */ - public CategoriesResponse(String requestId, - List categories) { - super(requestId); - this.categories = categories; - } - - /** - * get the list of categories - * @return the list of categories - */ - public List getCategories() { - return categories; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (categories != null ? categories.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code CategoriesResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof CategoriesResponse)) { - return false; - } - - CategoriesResponse that = (CategoriesResponse) o; - return super.equals(o) - && categories != null ? categories.equals(that.getCategories()) : that.categories == null; - } + private final List categories; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Category.java b/model/src/main/java/com/basistech/rosette/apimodel/Category.java deleted file mode 100644 index 25091a3359..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/Category.java +++ /dev/null @@ -1,93 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * model for categorization - */ -public final class Category { - - private final String label; - private final Double confidence; - private final List explanations; - - /** - * Constructor for {@code Category} - * @param label label for contextual category - * @param confidence confidence score (0.0-1.0) - * @param explanations list of input text elements - */ - public Category(String label, Double confidence, List explanations) { - this.label = label; - this.confidence = confidence; - this.explanations = explanations; - } - - /** - * get the label for contextual category - * @return the label - */ - public String getLabel() { - return label; - } - - /** - * get the confidence score (0.0-1.0) - * @return the confidence score - */ - public Double getConfidence() { - return confidence; - } - - /** - * get the list of text elements contributing to identification of this category - * @return the list of text elements - */ - public List getExplanations() { - return explanations; - } - - @Override - public int hashCode() { - int result; - long temp; - result = label != null ? label.hashCode() : 0; - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + (explanations != null ? explanations.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code Category}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Category)) { - return false; - } - - Category that = (Category) o; - return label != null ? label.equals(that.label) : that.label == null - && confidence.equals(that.confidence) - && explanations != null ? explanations.equals(that.getExplanations()) : that.explanations == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CategoryLabel.java b/model/src/main/java/com/basistech/rosette/apimodel/CategoryLabel.java new file mode 100644 index 0000000000..61badbbe4d --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/CategoryLabel.java @@ -0,0 +1,41 @@ +/* +* Copyright 2018 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +@Value +@Builder +@JacksonMixin +public class CategoryLabel { + + /** + * @return the label. + */ + private final String label; + + /** + * @return the confidence score (0.0-1.0) + */ + private final Double confidence; + + /** + * @return the raw score (-INF-INF) + */ + private final Double score; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CommonRosetteAPIException.java b/model/src/main/java/com/basistech/rosette/apimodel/CommonRosetteAPIException.java new file mode 100644 index 0000000000..78cf49966f --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/CommonRosetteAPIException.java @@ -0,0 +1,48 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.RosetteRuntimeException; + +/** + * Exception from the Analytics API inherit from this exception. + */ +public class CommonRosetteAPIException extends RosetteRuntimeException { + private final transient ErrorResponse errorResponse; + + public CommonRosetteAPIException(ErrorResponse errorResponse) { + this.errorResponse = errorResponse; + } + + public CommonRosetteAPIException(String message, Throwable cause, ErrorResponse errorResponse) { + super(message, cause); + this.errorResponse = errorResponse; + } + + public CommonRosetteAPIException(String message, ErrorResponse errorResponse) { + super(message); + this.errorResponse = errorResponse; + } + + public CommonRosetteAPIException(Throwable cause, ErrorResponse errorResponse) { + super(cause); + this.errorResponse = errorResponse; + } + + public ErrorResponse getErrorResponse() { + return errorResponse; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CompoundComponents.java b/model/src/main/java/com/basistech/rosette/apimodel/CompoundComponents.java deleted file mode 100644 index 71409875e2..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/CompoundComponents.java +++ /dev/null @@ -1,80 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * Decompounded components of a compound word - */ -public final class CompoundComponents { - - private final String text; - private final List compoundComponents; - - /** - * Constructor for {@code CompoundComponents} - * @param text compound word - * @param compoundComponents list of compound components - */ - public CompoundComponents( - String text, - List compoundComponents - ) { - this.text = text; - this.compoundComponents = compoundComponents; - } - - /** - * get the compound word - * @return the compound word - */ - public String getText() { - return text; - } - - /** - * get the list of compound components - * @return the list of compound components - */ - public List getCompoundComponents() { - return compoundComponents; - } - - @Override - public int hashCode() { - int result = text != null ? text.hashCode() : 0; - result = 31 * result + (compoundComponents != null ? compoundComponents.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code CompoundComponents}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof CompoundComponents)) { - return false; - } - - CompoundComponents that = (CompoundComponents) o; - return text != null ? text.equals(that.getText()) : that.text == null - && compoundComponents != null ? compoundComponents.equals(that.getCompoundComponents()) : that.compoundComponents == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Concept.java b/model/src/main/java/com/basistech/rosette/apimodel/Concept.java new file mode 100644 index 0000000000..7605b01f19 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/Concept.java @@ -0,0 +1,45 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +/** + * Concepts found in a document. + */ +@Value +@Builder +@JacksonMixin +public class Concept { + + /** + * @return the concept text + */ + private final String phrase; + + /** + * @return the concept salience + */ + private final Double salience; + + /** + * @return the concept id + */ + private final String conceptId; +} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Configuration.java b/model/src/main/java/com/basistech/rosette/apimodel/Configuration.java new file mode 100644 index 0000000000..2dd418d694 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/Configuration.java @@ -0,0 +1,24 @@ +/******************************************************************************* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +package com.basistech.rosette.apimodel; + +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode +public abstract class Configuration { +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/ConfigurationRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/ConfigurationRequest.java new file mode 100644 index 0000000000..d55b67c588 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/ConfigurationRequest.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +package com.basistech.rosette.apimodel; + +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +@Value +public final class ConfigurationRequest extends Request { + private final LanguageCode language; + private final T configuration; + + @Builder + public ConfigurationRequest(String profileId, LanguageCode language, T configuration) { + super(profileId); + this.language = language; + this.configuration = configuration; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/ConfigurationResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/ConfigurationResponse.java new file mode 100644 index 0000000000..df149d965b --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/ConfigurationResponse.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +/** + * Response to configuration request + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class ConfigurationResponse extends Response { + /** + * @return the result code + */ + private final String code; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/ConstantsResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/ConstantsResponse.java index 5b8f5463e8..398f124205 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/ConstantsResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/ConstantsResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,77 +16,32 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + /** * Data from informational request such as version, build, and support info */ -public final class ConstantsResponse extends Response { - - private final String version; - private final String build; - private final Object support; - - /** - * Constructor for {@code ConstantsResponse} - * @param requestId request id - * @param version Rosette API endpoint version - * @param build Rosette API endpoint build - * @param support support (reserved for future feature) - */ - public ConstantsResponse(String requestId, String version, String build, Object support) { - super(requestId); - this.version = version; - this.build = build; - this.support = support; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class ConstantsResponse extends Response { /** - * get the Rosette API endpoint version - * @return the Rosette API endpoint version + * @return the version of Analytics API */ - public String getVersion() { - return version; - } + private final String version; /** - * get the Rosette API endpoint build - * @return the Rosette API endpoint build + * @return the Analytics API build info */ - public String getBuild() { - return build; - } + private final String build; /** - * get support * @return support (reserved for future feature) */ - public Object getSupport() { - return support; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (version != null ? version.hashCode() : 0); - result = 31 * result + (build != null ? build.hashCode() : 0); - result = 31 * result + (support != null ? support.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code ConstantsResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof ConstantsResponse)) { - return false; - } - - ConstantsResponse that = (ConstantsResponse) o; - return super.equals(o) - && version != null ? version.equals(that.getVersion()) : that.version == null - && build != null ? build.equals(that.getBuild()) : that.build == null - && support != null ? support.equals(that.getSupport()) : that.support == null; - } + private final Object support; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Dependency.java b/model/src/main/java/com/basistech/rosette/apimodel/Dependency.java new file mode 100644 index 0000000000..5c38c52f71 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/Dependency.java @@ -0,0 +1,45 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +/** + * Syntactic dependency + */ +@Value +@Builder +@JacksonMixin +public class Dependency { + + /** + * @return the dependency type + */ + private final String dependencyType; + + /** + * @return the governor token index + */ + private final Integer governorTokenIndex; + + /** + * @return the dependent token index + */ + private final Integer dependentTokenIndex; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/DisambiguatorType.java b/model/src/main/java/com/basistech/rosette/apimodel/DisambiguatorType.java new file mode 100644 index 0000000000..dcf962eac1 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/DisambiguatorType.java @@ -0,0 +1,27 @@ +/* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +/** + * A type of disambiguator. + */ +public enum DisambiguatorType { + DICTIONARY, + DNN, + PERCEPTRON, + /**/; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/DocumentRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/DocumentRequest.java new file mode 100644 index 0000000000..811c84adba --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/DocumentRequest.java @@ -0,0 +1,167 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +/** + * This class represents the common information for all document processing requests to the Analytics API. + * Most applications do not use this class directly; the methods of the {@code RosetteAPI} class + * create request objects. More complex applications may create objects of + * this class for themselves via the {@link DocumentRequest.DocumentRequestBuilder}. + *
+ * On the wire, a request is a json object. All the endpoints accept the same set of items, + * represented here, that describe the input document. + *
+ * Applications specify the text to process in three ways: + *
    + *
  1. Plain text, as the {@code content} item in the Json object.
  2. + *
  3. A binary file image, attached as an additional MIME part to the request. + * The application provides a MIME content type in {@code contentType}.
  4. + *
  5. A URL of a data to download. The application provides the URL in + * {@code contentUri}. Note that the Analytics API respects the content type + * returned by the server for downloaded data.
  6. + *
+ * In this object the 'content' item is an {@link Object}; it contains a {@link String} + * for plain text, or an {@link java.io.InputStream} for binary data. {@link DocumentRequest.DocumentRequestBuilder} + * provides several alternative methods for setting this information. + */ +@Value +public final class DocumentRequest extends Request { + + /** + * @return the language code + */ + private final LanguageCode language; + + /** + * @return the request content + */ + private final Object content; + + /** + * @return the URI of request content + */ + private final String contentUri; + + /** + * @return request content type + */ + private final String contentType; + + /** + * @return request options + */ + private final O options; + + @Builder // workaround for inheritance https://github.com/rzwitserloot/lombok/issues/853 + public DocumentRequest(String profileId, + LanguageCode language, + Object content, + String contentUri, + String contentType, + O options) { + super(profileId); + this.language = language; + this.content = content; + this.contentUri = contentUri; + this.contentType = contentType; + this.options = options; + } + + /** + * get content to process if it's a String. + * + * @return the content if a String, else null. + */ + public String getContent() { + if (content instanceof String) { + return (String) content; + } else { + return null; + } + } + + /** + * get the content as an array of bytes + * + * @return the content as bytes + */ + public InputStream getContentBytes() { + if (content instanceof InputStream) { + return (InputStream) content; + } else { + return null; + } + } + + /** + * get content as an object + * + * @return the content as object + */ + public Object getRawContent() { + return content; + } + + // need more fluent builder methods in addition to lombok defaults + public static class DocumentRequestBuilder { + /** + * Specify the content as String. Use this for plain text. + * + * @param data The data. + * @return this. + */ + public DocumentRequestBuilder content(String data) { + this.content = data; + return this; + } + + /** + * Specify the content as bytes with a content type. Use this for + * formats other than plain text. + * + * @param bytes The data. + * @param contentType the content type. + * @return this. + */ + public DocumentRequestBuilder content(byte[] bytes, String contentType) { + this.content = new ByteArrayInputStream(bytes); + this.contentType = contentType; + return this; + } + + /** + * Specify the content as bytes with a content type. Use this for + * formats other than plain text. + * + * @param bytes The data. + * @param contentType the content type. + * @return this. + */ + public DocumentRequestBuilder content(InputStream bytes, String contentType) { + this.content = bytes; + this.contentType = contentType; + return this; + } + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/EmbeddingsMode.java b/model/src/main/java/com/basistech/rosette/apimodel/EmbeddingsMode.java new file mode 100644 index 0000000000..bb8d19f196 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/EmbeddingsMode.java @@ -0,0 +1,28 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +/** + * The generation of embeddings to use for all languages. Defaults to second generation unless the language only + * supports first generation embeddings + */ +public enum EmbeddingsMode { + DEFAULT, + GEN_1, + GEN_2, + /**/; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/EntitiesOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/EntitiesOptions.java index 1422eded90..693c6f7201 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/EntitiesOptions.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/EntitiesOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,148 +16,95 @@ package com.basistech.rosette.apimodel; -import java.util.EnumSet; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; /** - * Entity extraction options + * EntityMention extraction options */ -public final class EntitiesOptions { - - public static final EntitiesOptions DEFAULT_OPTIONS = new EntitiesOptions(true, 8, EnumSet.allOf(ExtractionMethod.class), false, false); +@Value +@Builder +@JacksonMixin +public class EntitiesOptions extends Options { + /** + * Default options + */ + public static final EntitiesOptions DEFAULT = EntitiesOptions.builder() + .calculateConfidence(false) + .calculateSalience(false) + .linkEntities(true) + .modelType("statistical") + .enableStructuredRegion(false) + .build(); - private Boolean resolveNamedEntities; - private Integer maxEntityTokens; - private EnumSet extractionMethods; - private Boolean allowPartialGazetteerMatches; - private Boolean redactorPreferLength; + /** + * @return the calculateConfidence flag. + */ + Boolean calculateConfidence; /** - * Constructor for {@code EntitiesOptions} - * @param resolveNamedEntities resolve in-document named entities - * @param maxEntityTokens max number of tokens allowed in an entity - * @param extractionMethods get the set of active extraction methods - * @param allowPartialGazetteerMatches whether to allow partial gazetteer matches - * @param redactorPreferLength whether to prefer length over weights for redaction + * @return the calculateSalience flag. */ - public EntitiesOptions( - Boolean resolveNamedEntities, - Integer maxEntityTokens, - EnumSet extractionMethods, - Boolean allowPartialGazetteerMatches, - Boolean redactorPreferLength) { - this.resolveNamedEntities = resolveNamedEntities; - this.maxEntityTokens = maxEntityTokens; - this.extractionMethods = extractionMethods; - this.allowPartialGazetteerMatches = allowPartialGazetteerMatches; - this.redactorPreferLength = redactorPreferLength; - } + Boolean calculateSalience; /** - * get the resolve in-document named entities - * @return the resolve in-document named entities + * @return the linkEntities flag. */ - public Boolean getResolveNamedEntities() { - return resolveNamedEntities; - } + Boolean linkEntities; /** - * get the max number of tokens allowed in an entity - * @return the max number of tokens allowed in an entity + * @return the linkMentionMode mode. */ - public Integer getMaxEntityTokens() { - return maxEntityTokens; - } + String linkMentionMode; /** - * get the set of active extraction methods - * @return the set of active extraction methods + * @return the modelType to use. */ - public EnumSet getExtractionMethods() { - return extractionMethods; - } + String modelType; /** - * get whether to allow partial gazetteer matches - * @return whether to allow partial gazetteer matches + * @since 1.14.0 (19.08) + * @return the includeDBpediaType flag. */ - public Boolean getAllowPartialGazetteerMatches() { - return allowPartialGazetteerMatches; - } + Boolean includeDBpediaTypes; /** - * get whether to prefer length over weights for redaction - * @return whether to prefer length over weights for redaction + * @return the includePermID flag. */ - public Boolean getRedactorPreferLength() { - return redactorPreferLength; - } + Boolean includePermID; /** - * set the resolve in-document named entities - * @param resolveNamedEntities the resolve in-document named entities + * @return the RTS workspace id. */ - public void setResolveNamedEntities(Boolean resolveNamedEntities) { - this.resolveNamedEntities = resolveNamedEntities; - } + String rtsDecoder; /** - * set the max number of tokens allowed in an entity - * @param maxEntityTokens the max number of tokens allowed in an entity + * @return case sensitivity of model to use. Can be one of caseSensitive, caseInsensitive or automatic. */ - public void setMaxEntityTokens(Integer maxEntityTokens) { - this.maxEntityTokens = maxEntityTokens; - } + String caseSensitivity; /** - * set the set of active extraction methods - * @param extractionMethods the set of active extraction methods + * @return the enableStructuredRegion flag. */ - public void setExtractionMethods(EnumSet extractionMethods) { - this.extractionMethods = extractionMethods; - } + Boolean enableStructuredRegion; /** - * set whether to allow partial gazetteer matches - * @param allowPartialGazetteerMatches whether to allow partial gazetteer matches + * @return the structuredRegionProcessingType flag. Can be one of none, nerModel, nameClassifier */ - public void setAllowPartialGazetteerMatches(Boolean allowPartialGazetteerMatches) { - this.allowPartialGazetteerMatches = allowPartialGazetteerMatches; - } + String structuredRegionProcessingType; /** - * set whether to prefer length over weights for redaction - * @param redactorPreferLength whether to prefer length over weights for redaction + * @return the regexCurrencySplit flag. + * If enabled, will cause MONEY regular expression entity extractions to be split into two: + * CURRENCY:AMT and CURRENCY:TYPE */ - public void setRedactorPreferLength(Boolean redactorPreferLength) { - this.redactorPreferLength = redactorPreferLength; - } - - @Override - public int hashCode() { - int result = resolveNamedEntities != null ? resolveNamedEntities.hashCode() : 0; - result = 31 * result + (maxEntityTokens != null ? maxEntityTokens.hashCode() : 0); - result = 31 * result + (extractionMethods != null ? extractionMethods.hashCode() : 0); - result = 31 * result + (allowPartialGazetteerMatches != null ? allowPartialGazetteerMatches.hashCode() : 0); - result = 31 * result + (redactorPreferLength != null ? redactorPreferLength.hashCode() : 0); - return result; - } + Boolean regexCurrencySplit; /** - * if the param is a {@code EntitiesOptions}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return useIndocServer flag. If true, REX will make request to indoc-coref-server and merge + * results with existing entities. + * default false */ - @Override - public boolean equals(Object o) { - if (!(o instanceof EntitiesOptions)) { - return false; - } - - EntitiesOptions that = (EntitiesOptions) o; - return resolveNamedEntities != null ? resolveNamedEntities.equals(that.getResolveNamedEntities()) : that.resolveNamedEntities == null - && maxEntityTokens != null ? maxEntityTokens.equals(that.getMaxEntityTokens()) : that.maxEntityTokens == null - && extractionMethods != null ? extractionMethods.equals(that.getExtractionMethods()) : that.extractionMethods == null - && allowPartialGazetteerMatches != null ? allowPartialGazetteerMatches.equals(that.getAllowPartialGazetteerMatches()) : that.allowPartialGazetteerMatches == null - && redactorPreferLength != null ? redactorPreferLength.equals(that.getRedactorPreferLength()) : that.redactorPreferLength == null; - } + Boolean useIndocServer; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/EntitiesRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/EntitiesRequest.java deleted file mode 100644 index 0e5a6e6489..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/EntitiesRequest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import com.basistech.util.LanguageCode; - -/** - * Class that represents the data from an entity extraction request - */ -public final class EntitiesRequest extends Request { - - private EntitiesOptions options; - - /** - * Constructor for {@code EntitiesRequest} - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - * @param options entity extraction options - */ - public EntitiesRequest( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit, - EntitiesOptions options - ) { - super(language, content, contentUri, contentType, unit); - this.options = options; - } - - /** - * get the entity extraction options - * @return the entity extraction options - */ - public EntitiesOptions getOptions() { - return options; - } - - /** - * set the entity extraction options - * @param options the entity extraction options - */ - public void setOptions(EntitiesOptions options) { - this.options = options; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (options != null ? options.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code EntitiesRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof EntitiesRequest)) { - return false; - } - - EntitiesRequest that = (EntitiesRequest) o; - return super.equals(o) - && options != null ? getOptions().equals(that.getOptions()) : that.options == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/EntitiesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/EntitiesResponse.java index ea2330d714..ed747f5d92 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/EntitiesResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/EntitiesResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,56 +16,24 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + import java.util.List; /** - * Simple api response data model for entity extraction + * Simple api response data model for extracted entities */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin public final class EntitiesResponse extends Response { - private final List entities; - - /** - * Constructor for {@code EntitiesResponse} - * @param requestId request id - * @param entities list of extracted entities - */ - public EntitiesResponse( - String requestId, - List entities - ) { - super(requestId); - this.entities = entities; - } - /** - * get the list of extracted entities * @return the list of extracted entities */ - public List getEntities() { - return entities; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (entities != null ? entities.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code EntitiesResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof EntitiesResponse)) { - return false; - } - - EntitiesResponse that = (EntitiesResponse) o; - return super.equals(o) - && entities != null ? entities.equals(that.getEntities()) : that.entities == null; - } + private final List entities; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Entity.java b/model/src/main/java/com/basistech/rosette/apimodel/Entity.java index f62807cc75..34d750a653 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/Entity.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Entity.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,122 +16,82 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.Valid; +import java.util.List; + /** - * Entity extracted by the entity extractor + * Extracted entity */ -public final class Entity { +@Value +@Builder +@JacksonMixin +public class Entity { - private final int indocChainId; - private final String type; - private final String mention; - private final String normalized; - private final int count; - private final Double confidence; + /** + * @return the entity type + */ + String type; /** - * constructor for {@code Entity} - * @param indocChainId in-document entity chain id - * @param type entity type - * @param mention mention text - * @param normalized normalized mention text - * @param count mention count - * @param confidence confidence + * @return the entity mention text */ - public Entity( - int indocChainId, - String type, - String mention, - String normalized, - int count, - Double confidence - ) { - this.indocChainId = indocChainId; - this.type = type; - this.mention = mention; - this.normalized = normalized; - this.count = count; - this.confidence = confidence; - } + String mention; /** - * get the in-document entity chain id - * @return the id + * @return the normalized entity mention text */ - public int getIndocChainId() { - return indocChainId; - } + String normalized; /** - * get the entity type - * @return the entity type + * @return the entity mention count + */ + Integer count; + + /** + * @return the list of offsets for all mentions + */ + @Valid + List mentionOffsets; + + /** + * @return the ID of this entity. If this entity was linked to a knowledge base, + * the resulting string will begin with 'Q'. If it was not linked to a knowledge base, + * it will begin with a 'T'. 'T' identifiers represent intra-document co-references. + */ + String entityId; + + /** + * @return the confidence score for the entity (0.0-1.0) */ - public String getType() { - return type; - } + Double confidence; /** - * get the mention text - * @return the mention text + * @return the confidence score for linking the entity to the knowledge base (0.0-1.0) */ - public String getMention() { - return mention; - } + Double linkingConfidence; /** - * get the normalized mention text - * @return the normalized mention text + * @return the salience score for the entity (0.0|1.0) */ - public String getNormalized() { - return normalized; - } + Double salience; /** - * get the mention count - * @return the mention count + * @return the sentiment information. */ - public int getCount() { - return count; - } + Label sentiment; /** - * get the confidence - * @return the confidence + * @since 1.14.0 (19.08) + * @return the DBpediaTypes */ - public Double getConfidence() { - return confidence; - } - - @Override - public int hashCode() { - int result; - long temp; - result = indocChainId; - result = 31 * result + (type != null ? type.hashCode() : 0); - result = 31 * result + (mention != null ? mention.hashCode() : 0); - result = 31 * result + (normalized != null ? normalized.hashCode() : 0); - result = 31 * result + count; - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } + List dbpediaTypes; /** - * if the param is a {@code Entity}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the PermID */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Entity)) { - return false; - } - - Entity that = (Entity) o; - return indocChainId == that.getIndocChainId() - && type != null ? type.equals(that.getType()) : that.type == null - && mention != null ? mention.equals(that.getMention()) : that.mention == null - && normalized != null ? normalized.equals(that.getNormalized()) : that.normalized == null - && count == that.getCount() - && confidence.equals(that.getConfidence()); - } + String permId; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/ErrorResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/ErrorResponse.java index c403b332dd..f24905ae17 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/ErrorResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/ErrorResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,65 +16,27 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + /** - * Rosette API response error data + * Analytics API response error data */ -public final class ErrorResponse extends Response { - - private final String code; - private final String message; - - /** - * constructor for {@code ErrorResponse} - * @param requestId request id - * @param code error code - * @param message error message - */ - public ErrorResponse(String requestId, - String code, - String message) { - super(requestId); - this.code = code; - this.message = message; - } +@Data +@EqualsAndHashCode +@Builder +@JacksonMixin +public class ErrorResponse extends Response { /** - * get the error code * @return the error code */ - public String getCode() { - return code; - } + private String code; /** - * get the error message * @return the error message */ - public String getMessage() { - return message; - } - - @Override - public int hashCode() { - int result = code != null ? code.hashCode() : 0; - result = 31 * result + (message != null ? message.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code ErrorResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof ErrorResponse)) { - return false; - } - - ErrorResponse that = (ErrorResponse) o; - return super.equals(o) - && code != null ? code.equals(that.getCode()) : that.code == null - && message != null ? message.equals(that.getMessage()) : that.message == null; - } + private String message; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/EventsNegationOption.java b/model/src/main/java/com/basistech/rosette/apimodel/EventsNegationOption.java new file mode 100644 index 0000000000..63e69594b9 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/EventsNegationOption.java @@ -0,0 +1,54 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +public enum EventsNegationOption { + IGNORE("Ignore"), + BOTH("Both"), + ONLY_POSITIVE("Only positive"), + ONLY_NEGATIVE("Only negative"); + + private static final Map STRING_KEYS; + + static { + STRING_KEYS = Arrays.stream(EventsNegationOption.values()) + .collect(Collectors.toMap( + value -> value.toString().toLowerCase(), + Function.identity() + )); + } + + private final String label; + + EventsNegationOption(String label) { + this.label = label; + } + + public static EventsNegationOption forValue(String value) { + return STRING_KEYS.get(value.toLowerCase()); + } + + @Override + public String toString() { + return label; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/EventsOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/EventsOptions.java new file mode 100644 index 0000000000..2b81f6c633 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/EventsOptions.java @@ -0,0 +1,47 @@ +/* + * Copyright 2021 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +import java.util.EnumMap; +import java.util.List; + +/** + * Events options + */ +@Value +@Builder +@JacksonMixin +public class EventsOptions extends Options { + /** + * Default options + */ + public static final EventsOptions DEFAULT = EventsOptions.builder().negation(EventsNegationOption.IGNORE).build(); + + /** + * workspaceId to use. + */ + String workspaceId; + + EnumMap> plan; + + EventsNegationOption negation; +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryResponseMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/EventsResponse.java similarity index 53% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryResponseMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/EventsResponse.java index c030134fa6..13c17a7612 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryResponseMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/EventsResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2021 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,20 +14,27 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.basistech.rosette.apimodel.Category; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.rosette.dm.Event; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; import java.util.List; -public class CategoryResponseMixin extends BaseMixin { - @JsonCreator - public CategoryResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("categories") List categories - ) { - // - } +/** + * Simple api response data model for events + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public final class EventsResponse extends Response { + + /** + * @return the list of events + */ + private final List events; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/FieldedAddress.java b/model/src/main/java/com/basistech/rosette/apimodel/FieldedAddress.java new file mode 100644 index 0000000000..fb1c6d5117 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/FieldedAddress.java @@ -0,0 +1,119 @@ +/* + * Copyright 2020 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import lombok.Builder; +import lombok.Value; + +@Value +@Builder +public class FieldedAddress implements IAddress { + /** + * @return the address house + */ + private final String house; + + /** + * @return the address house number + */ + private final String houseNumber; + + /** + * @return the address road + */ + private final String road; + + /** + * @return the address unit + */ + private final String unit; + + /** + * @return the address level + */ + private final String level; + + /** + * @return the address staircase + */ + private final String staircase; + + /** + * @return the address entrance + */ + private final String entrance; + + /** + * @return the address suburb + */ + private final String suburb; + + /** + * @return the address city district + */ + private final String cityDistrict; + + /** + * @return the address city + */ + private final String city; + + /** + * @return the address island + */ + private final String island; + + /** + * @return the address state district + */ + private final String stateDistrict; + + /** + * @return the address state + */ + private final String state; + + /** + * @return the address country region + */ + private final String countryRegion; + + /** + * @return the address country + */ + private final String country; + + /** + * @return the address world region + */ + private final String worldRegion; + + /** + * @return the address postal code + */ + private final String postCode; + + /** + * @return the address P.O. Box + */ + private final String poBox; + + @Override + public boolean fielded() { + return true; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/GazetteerConfiguration.java b/model/src/main/java/com/basistech/rosette/apimodel/GazetteerConfiguration.java new file mode 100644 index 0000000000..3d40fa3fe8 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/GazetteerConfiguration.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright 2019 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +import java.util.Collection; +import java.util.Map; + +@Value +@Builder +@JacksonMixin +public class GazetteerConfiguration extends Configuration { + // list of gazetteer entities keyed by entity type + Map> entities; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Gender.java b/model/src/main/java/com/basistech/rosette/apimodel/Gender.java new file mode 100644 index 0000000000..a51e4487bb --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/Gender.java @@ -0,0 +1,33 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel; + +public enum Gender { + + FEMALE(0.99), + NONBINARY(0.5), + MALE(0.01); + + private final double value; + + Gender(double value) { + this.value = value; + } + + public double getValue() { + return value; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/GenericResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/GenericResponse.java new file mode 100644 index 0000000000..9c3387fb87 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/GenericResponse.java @@ -0,0 +1,30 @@ +/* + * Copyright 2021 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode +@Builder +@JacksonMixin +public class GenericResponse extends Response { + private Object data; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/HanReadings.java b/model/src/main/java/com/basistech/rosette/apimodel/HanReadings.java deleted file mode 100644 index 52199d8a64..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/HanReadings.java +++ /dev/null @@ -1,80 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * Han morphological analysis readings - */ -public final class HanReadings { - - private final String text; - private final List hanReadings; - - /** - * Constructor for {@code HanReadings} - * @param text text - * @param hanReadings list of han readings - */ - public HanReadings( - String text, - List hanReadings - ) { - this.text = text; - this.hanReadings = hanReadings; - } - - /** - * get the text - * @return the text - */ - public String getText() { - return text; - } - - /** - * get the list of han readings - * @return the list of han readings - */ - public List getHanReadings() { - return hanReadings; - } - - @Override - public int hashCode() { - int result = text != null ? text.hashCode() : 0; - result = 31 * result + (hanReadings != null ? hanReadings.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code HanReadings}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof HanReadings)) { - return false; - } - - HanReadings that = (HanReadings) o; - return text != null ? text.equals(that.getText()) : that.text == null - && hanReadings != null ? hanReadings.equals(that.getHanReadings()) : that.hanReadings == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/IAddress.java b/model/src/main/java/com/basistech/rosette/apimodel/IAddress.java new file mode 100644 index 0000000000..329ce80d62 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/IAddress.java @@ -0,0 +1,22 @@ +/* + * Copyright 2020 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +public interface IAddress { + + boolean fielded(); +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/InfoResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/InfoResponse.java index 8d3cf97d7b..705772b7d4 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/InfoResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/InfoResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,101 +16,47 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + /** - * Rosette API information + * Analytics API information */ -public final class InfoResponse extends Response { - - private final String name; - private final String version; - private final String buildNumber; - private final String buildTime; - private final Boolean versionChecked; +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class InfoResponse extends Response { /** - * constructor for {@code InfoResponse} - * @param name name - * @param version version - * @param buildNumber build number - * @param buildTime build time - * @param versionChecked client version checked - */ - public InfoResponse(String name, String version, String buildNumber, String buildTime, Boolean versionChecked) { - super(null); - this.name = name; - this.version = version; - this.buildNumber = buildNumber; - this.buildTime = buildTime; - this.versionChecked = versionChecked; - } - - /** - * get the name * @return the name */ - public String getName() { - return name; - } + private final String name; /** - * get the version * @return the version */ - public String getVersion() { - return version; - } + private final String version; /** - * get the build number * @return the build number */ - public String getBuildNumber() { - return buildNumber; - } + private final String buildNumber; /** - * get the build time * @return the build time */ - public String getBuildTime() { - return buildTime; - } + private final String buildTime; /** - * is client version checked to be compatible * @return client version checked */ - public Boolean isVersionChecked() { - return versionChecked; - } - - @Override - public int hashCode() { - int result = name != null ? name.hashCode() : 0; - result = 31 * result + (version != null ? version.hashCode() : 0); - result = 31 * result + (buildNumber != null ? buildNumber.hashCode() : 0); - result = 31 * result + (buildTime != null ? buildTime.hashCode() : 0); - result = 31 * result + (versionChecked != null ? versionChecked.hashCode() : 0); - return result; - } + private final Boolean versionChecked; /** - * if the param is a {@code InfoResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the license expiration date */ - @Override - public boolean equals(Object o) { - if (!(o instanceof InfoResponse)) { - return false; - } - - InfoResponse that = (InfoResponse) o; - return super.equals(o) - && name != null ? name.equals(that.getName()) : that.name == null - && version != null ? version.equals(that.getVersion()) : that.version == null - && buildNumber != null ? buildNumber.equals(that.getBuildNumber()) : that.buildNumber == null - && buildTime != null ? buildTime.equals(that.getBuildTime()) : that.buildTime == null - && versionChecked != null ? versionChecked.equals(that.isVersionChecked()) : that.versionChecked == null; - } + private final String licenseExpiration; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/InputUnit.java b/model/src/main/java/com/basistech/rosette/apimodel/InputUnit.java deleted file mode 100644 index 391011957e..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/InputUnit.java +++ /dev/null @@ -1,79 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.EnumSet; - -/** - * Unit of input - */ -public enum InputUnit { - //CHECKSTYLE:OFF - doc("doc"), - sentence("sentence"), - words("words"), - query("query"); - //CHECKSTYLE:ON - - private String label; - - /** - * constructor for {@code InputUnit} which sets a label for reference - */ - InputUnit(String label) { - this.label = label; - } - - /** - * get the label - * @return the label - */ - public String getLabel() { - return label; - } - - /** - * set the label - * @param label the label - */ - public void setLabel(String label) { - this.label = label; - } - - /** - * checks if value is a valid {@code InputUnit} enum - * @param value input value - * @return {@code InputUnit corresponding to input value} - * @throws IllegalArgumentException invalid input string. - */ - public static InputUnit forValue(String value) throws IllegalArgumentException { - for (InputUnit unit : EnumSet.allOf(InputUnit.class)) { - if (unit.getLabel().equalsIgnoreCase(value)) { - return unit; - } - } - throw new IllegalArgumentException("invalid doc unit: " + value); - } - - /** - * get the label - * @return the label - */ - public String toValue() { - return label; - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/HanReadingsMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/Keyphrase.java similarity index 54% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/HanReadingsMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/Keyphrase.java index 9553bd8026..2b436bc165 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/HanReadingsMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Keyphrase.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,19 +14,27 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; -import java.util.List; +/** + * Keyphrases found in a document. + */ +@Value +@Builder +@JacksonMixin +public class Keyphrase { -public class HanReadingsMixin extends BaseMixin { - @JsonCreator - public HanReadingsMixin( - @JsonProperty("text") String text, - @JsonProperty("hanReadings") List hanReadings - ) { - // - } -} + /** + * @return the keyphrase text + */ + private final String phrase; + + /** + * @return the keyphrase salience (0.0-1.0) + */ + private final Double salience; +} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Label.java b/model/src/main/java/com/basistech/rosette/apimodel/Label.java new file mode 100644 index 0000000000..773e7001c1 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/Label.java @@ -0,0 +1,44 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +/** + * Sentiment Analysis and Categorization return labels. A label is + * a category name, a confidence value, + * that contributed to the determination. + * For Sentiment, the label strings are items like 'pos' or 'neg'; + * for Categorization, 'sports' or 'news'. + */ +@Value +@Builder +@JacksonMixin +public class Label { + + /** + * @return the label. + */ + private final String label; + + /** + * @return the confidence score (0.0-1.0) + */ + private final Double confidence; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LanguageDetectionResult.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageDetectionResult.java index f106bb0fe5..b27765e47f 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/LanguageDetectionResult.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/LanguageDetectionResult.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,68 +17,26 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; /** * Language detection result */ -public final class LanguageDetectionResult { - - private final LanguageCode language; - private final Double confidence; - - /** - * Constructor for {@code LanguageDetectionResult} - * @param language detected language - * @param confidence detection confidence - */ - public LanguageDetectionResult( - LanguageCode language, - Double confidence - ) { - this.language = language; - this.confidence = confidence; - } +@Value +@Builder +@JacksonMixin +public class LanguageDetectionResult { /** - * get the detected language - * @return the language + * @return the language code */ - public LanguageCode getLanguage() { - return language; - } + private final LanguageCode language; /** - * get the detection confidence * @return the confidence */ - public Double getConfidence() { - return confidence; - } - - @Override - public int hashCode() { - int result; - long temp; - result = language != null ? language.hashCode() : 0; - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - /** - * if the param is a {@code LanguageDetectionResult}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LanguageDetectionResult)) { - return false; - } - - LanguageDetectionResult that = (LanguageDetectionResult) o; - return language != null ? language.equals(that.getLanguage()) : that.language == null - && confidence.equals(that.getConfidence()); - } + private final Double confidence; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LanguageInfoResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageInfoResponse.java deleted file mode 100644 index 1d694cb679..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/LanguageInfoResponse.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.Map; -import java.util.Set; - -/** - * API response data model for language identification support info - */ -public final class LanguageInfoResponse extends Response { - - private final Map> supportedLanguages; - private final Map> supportedScripts; - - /** - * constructor for {@code LanguageInfoResponse} - * @param requestId request id - * @param supportedLanguages list of supported languages - * @param supportedScripts list of supported scripts - */ - public LanguageInfoResponse(String requestId, - Map> supportedLanguages, - Map> supportedScripts) { - super(requestId); - this.supportedLanguages = supportedLanguages; - this.supportedScripts = supportedScripts; - } - - /** - * get the list of supported languages - * @return the list of supported languages - */ - public Map> getSupportedLanguages() { - return supportedLanguages; - } - - /** - * get the list of supported scripts - * @return the list of supported scripts - */ - public Map> getSupportedScripts() { - return supportedScripts; - } - - @Override - public int hashCode() { - int result = supportedLanguages != null ? supportedLanguages.hashCode() : 0; - result = 31 * result + (supportedScripts != null ? supportedScripts.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code LanguageInfoResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LanguageInfoResponse)) { - return false; - } - - LanguageInfoResponse that = (LanguageInfoResponse) o; - return super.equals(o) - && supportedLanguages != null ? supportedLanguages.equals(that.getSupportedLanguages()) : that.supportedLanguages == null - && supportedScripts != null ? supportedScripts.equals(that.getSupportedScripts()) : that.supportedScripts == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LanguageOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageOptions.java index 5b22be63c0..e7b48b537d 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/LanguageOptions.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/LanguageOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,269 +16,97 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.rosette.util.EncodingCode; import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; +import jakarta.validation.Valid; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.Min; import java.util.Set; /** * Languages detection options */ -public final class LanguageOptions { +@Value +@Builder +@JacksonMixin +public class LanguageOptions extends Options { - private Integer minValidChars; - private Integer profileDepth; - private Double ambiguityThreshold; - private Double invalidityThreshold; - private LanguageCode languageHint; - private Double languageHintWeight; - private String encodingHint; - private Double encodingHintWeight; - private Set languageWeightAdjustments; - /** - * constructor for {@code LanguageOptions} - * @param minValidChars minimum number of valid characters required for identification - * @param profileDepth number of n-grams to consider in detection - * @param ambiguityThreshold number of n-gram distance ambiguity threshold - * @param invalidityThreshold number of n-gram distance invalidity threshold - * @param languageHint language hint used to resolve ambiguous results - * @param languageHintWeight language hint weight used to resolve ambiguous results - * @param encodingHint encoding hint used to resolve ambiguous results - * @param encodingHintWeight encoding hint weight used to resolve ambiguous results - * @param languageWeightAdjustments language weight adjustment + * @return whether to detect language regions */ - public LanguageOptions( - Integer minValidChars, - Integer profileDepth, - Double ambiguityThreshold, - Double invalidityThreshold, - LanguageCode languageHint, - Double languageHintWeight, - String encodingHint, - Double encodingHintWeight, - Set languageWeightAdjustments - ) { - this.minValidChars = minValidChars; - this.profileDepth = profileDepth; - this.ambiguityThreshold = ambiguityThreshold; - this.invalidityThreshold = invalidityThreshold; - this.languageHint = languageHint; - this.languageHintWeight = languageHintWeight; - this.encodingHint = encodingHint; - this.encodingHintWeight = encodingHintWeight; - this.languageWeightAdjustments = languageWeightAdjustments; - } + Boolean multilingual; /** - * get minimum number of valid characters needed for identification * @return minimum number of valid characters */ - public Integer getMinValidChars() { - return minValidChars; - } + @Min(1) + Integer minValidChars; /** - * get the most frequent n-grams to consider in detection. - + Smaller depth results in faster operation but lower detection accuracy. - * @return number of n-grams + * @return the most frequent n-grams to consider in detection, smaller depth results in faster operation but + * lower detection accuracy */ - public Integer getProfileDepth() { - return profileDepth; - } + @Min(1) + Integer profileDepth; /** - * get the n-gram distance ambiguity threshold, value range [0-100]. - + Input profile distances closer to each other than this threshold are deemed ambiguous. - * @return number of n-gram distance ambiguity threshold + * @return number of n-gram distance ambiguity threshold (0.0-100.0), input profile distances closer to each + * other than this threshold are deemed ambiguous */ - public Double getAmbiguityThreshold() { - return ambiguityThreshold; - } + @DecimalMin("0.0") + @DecimalMax("100.0") + Double ambiguityThreshold; /** - * get the n-gram distance invalidity threshold, value range [0-100]. - * Input profile distance exceeding this threshold will be deemed invalid . - * @return number of n-gram distance invalidity threshold + * @return number of n-gram distance invalidity threshold (0.0-100.0), input profile distance exceeding this + * threshold will be deemed invalid */ - public Double getInvalidityThreshold() { - return invalidityThreshold; - } + @DecimalMin("0.0") + @DecimalMax("100.0") + Double invalidityThreshold; /** - * get the language hint * @return language hint */ - public LanguageCode getLanguageHint() { - return languageHint; - } + LanguageCode languageHint; /** - * get the language hint weight used to help resolve ambiguous results. - + A value of N reduces the distance of correctly hinted ambiguous result by N%. - + Weight Value range [1-99]. Value of 1 is the lightest hint, value of 99 the strongest. - * @return the language hint weight + * @return the language hint weight (1.0-99.0) used to help resolve ambiguous results. + * A value of N reduces the distance of correctly hinted ambiguous result by N%. + * Value of 1.0 is the lightest hint, value of 99.0 the strongest. */ - public Double getLanguageHintWeight() { - return languageHintWeight; - } + @DecimalMin("1.0") + @DecimalMax("99.0") + Double languageHintWeight; /** - * get encoding hint used to help resolve ambiguous results - * @return the encoding hint + * @return the encoding hint used to help resolve ambiguous results */ - public String getEncodingHint() { - return encodingHint; - } + EncodingCode encodingHint; /** - * get the encoding hint weight used to help resolve ambiguous results, value range [1-100]. - + A value of N reduces the distance of correctly hinted result by N%. - + A value of 1 is the lightest hint. - + A value of 100 forces the detector to consider only the results with the hinted encoding. - * @return the encoding hint weight + * @return the encoding hint weight (1.0-100.0) used to help resolve ambiguous results. + * A value of N reduces the distance of correctly hinted result by N%. + * A value of 100 forces the detector to consider only the results with the hinted encoding. */ - public Double getEncodingHintWeight() { - return encodingHintWeight; - } + @DecimalMin("1.0") + @DecimalMax("100.0") + Double encodingHintWeight; /** - * get the set of language weight adjustments - * @return the set of language weight adjustments + * @return languageWeightAdjustments the set of language weight adjustments */ - public Set getLanguageWeightAdjustments() { - return languageWeightAdjustments; - } + @Valid + Set languageWeightAdjustments; /** - * set minimum number of valid characters needed for identification - * @param minValidChars minimum number of valid characters + * @return whether to distinguish between North Korean and South Korean */ - public void setMinValidChars(Integer minValidChars) { - this.minValidChars = minValidChars; - } + Boolean koreanDialects; - /** - * set the most frequent n-grams to consider in detection. - + Smaller depth results in faster operation but lower detection accuracy. - * @param profileDepth number of n-grams - */ - public void setProfileDepth(Integer profileDepth) { - this.profileDepth = profileDepth; - } - - /** - * set the n-gram distance ambiguity threshold, value range [0-100]. - + Input profile distances closer to each other than this threshold are deemed ambiguous. - * @param ambiguityThreshold number of n-grams distance ambiguity threshold - */ - public void setAmbiguityThreshold(Double ambiguityThreshold) { - if (ambiguityThreshold >= 0 && ambiguityThreshold <= 100) { - this.ambiguityThreshold = ambiguityThreshold; - } else { - throw new IllegalArgumentException("ambiguity threshold value range 0-100"); - } - } - - /** - * get the n-gram distance invalidity threshold, value range [0-100]. - * Input profile distance exceeding this threshold will be deemed invalid. - * @param invalidityThreshold number of n-grams distance invalidity threshold - */ - public void setInvalidityThreshold(Double invalidityThreshold) { - if (invalidityThreshold >= 0 && invalidityThreshold <= 100) { - this.invalidityThreshold = invalidityThreshold; - } else { - throw new IllegalArgumentException("invalidity threshold value range 0-100"); - } - } - - /** - * set the language hint - * @param languageHint the language hint - */ - public void setLanguageHint(LanguageCode languageHint) { - this.languageHint = languageHint; - } - - /** - * set the language hint weight used to help resolve ambiguous results. - + A value of N reduces the distance of correctly hinted ambiguous result by N%. - + Weight Value range [1-99]. Value of 1 is the lightest hint, value of 99 the strongest. - * @param languageHintWeight hint weight. - */ - public void setLanguageHintWeight(double languageHintWeight) { - if (languageHintWeight >= 1 && languageHintWeight <= 99) { - this.languageHintWeight = languageHintWeight; - } else { - throw new IllegalArgumentException("language hint weight value range 1-99"); - } - } - - /** - * set encoding hint used to help resolve ambiguous results - * @param encodingHint the encoding hint - */ - public void setEncodingHint(String encodingHint) { - this.encodingHint = encodingHint; - } - - /** - * set the encoding hint weight used to help resolve ambiguous results, value range [1-100]. - + A value of N reduces the distance of correctly hinted result by N%. - + A value of 1 is the lightest hint. - + A value of 100 forces the detector to consider only the results with the hinted encoding. - * @param encodingHintWeight the encoding hint weight - */ - public void setEncodingHintWeight(double encodingHintWeight) { - if (encodingHintWeight >= 1 && encodingHintWeight <= 100) { - this.encodingHintWeight = encodingHintWeight; - } else { - throw new IllegalArgumentException("encoding hint weight range 1-100"); - } - } - - /** - * set the set of language weight adjustments - * @param languageWeightAdjustments the set of language weight adjustments - */ - public void setLanguageWeightAdjustments(Set languageWeightAdjustments) { - this.languageWeightAdjustments = languageWeightAdjustments; - } - - @Override - public int hashCode() { - int result = minValidChars != null ? minValidChars.hashCode() : 0; - result = 31 * result + (profileDepth != null ? profileDepth.hashCode() : 0); - result = 31 * result + (ambiguityThreshold != null ? ambiguityThreshold.hashCode() : 0); - result = 31 * result + (invalidityThreshold != null ? invalidityThreshold.hashCode() : 0); - result = 31 * result + (languageHint != null ? languageHint.hashCode() : 0); - result = 31 * result + (languageHintWeight != null ? languageHintWeight.hashCode() : 0); - result = 31 * result + (encodingHint != null ? encodingHint.hashCode() : 0); - result = 31 * result + (encodingHintWeight != null ? encodingHintWeight.hashCode() : 0); - result = 31 * result + (languageWeightAdjustments != null ? languageWeightAdjustments.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code LanguageOptions}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LanguageOptions)) { - return false; - } - - LanguageOptions that = (LanguageOptions) o; - return minValidChars != null ? minValidChars.equals(that.getMinValidChars()) : that.minValidChars == null - && profileDepth != null ? profileDepth.equals(that.getProfileDepth()) : that.profileDepth == null - && ambiguityThreshold != null ? ambiguityThreshold.equals(that.getAmbiguityThreshold()) : that.ambiguityThreshold == null - && invalidityThreshold != null ? invalidityThreshold.equals(that.getInvalidityThreshold()) : that.invalidityThreshold == null - && languageHint != null ? languageHint.equals(that.getLanguageHint()) : that.languageHint == null - && languageHintWeight != null ? languageHintWeight.equals(that.getLanguageHintWeight()) : that.languageHintWeight == null - && encodingHint != null ? encodingHint.equals(that.getEncodingHint()) : that.encodingHint == null - && encodingHintWeight != null ? encodingHintWeight.equals(that.getEncodingHintWeight()) : that.encodingHintWeight == null - && languageWeightAdjustments != null ? languageWeightAdjustments.equals(that.getLanguageWeightAdjustments()) : that.languageWeightAdjustments == null; - } } diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageRegionDetectionResult.java similarity index 53% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/LanguageRegionDetectionResult.java index da24f25ef4..8c27e08bc0 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/LanguageRegionDetectionResult.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,20 +14,29 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; import java.util.List; -public class CategoryMixin extends BaseMixin { - @JsonCreator - public CategoryMixin( - @JsonProperty("label") String label, - @JsonProperty("confidence") Double confidence, - @JsonProperty("explanations") List explanations - ) { - // - } +/** + * Language region detection result + */ +@Value +@Builder +@JacksonMixin +public class LanguageRegionDetectionResult { + + /** + * @return the region text + */ + private final String region; + + /** + * @return the detected languages + */ + private final List languages; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LanguageRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageRequest.java deleted file mode 100644 index 57178658b9..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/LanguageRequest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * Data from a RosetteAPI client languages detection request - */ -public final class LanguageRequest extends Request { - - private LanguageOptions options; - - /** - * constructor for {@code LanguageRequest} - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - * @param options languages detection options - */ - public LanguageRequest( - String content, - String contentUri, - String contentType, - InputUnit unit, - LanguageOptions options - ) { - super(null, content, contentUri, contentType, unit); - this.options = options; - } - - /** - * get the languages detection options - * @return the languages detection options - */ - public LanguageOptions getOptions() { - return options; - } - - /** - * set the languages detection options - * @param options the languages detection options - */ - public void setOptions(LanguageOptions options) { - this.options = options; - } - - @Override - public int hashCode() { - return options != null ? options.hashCode() : 0; - } - - /** - * if the param is a {@code LanguageRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LanguageRequest)) { - return false; - } - - LanguageRequest that = (LanguageRequest) o; - return super.equals(o) - && options != null ? options.equals(that.options) : that.options == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LanguageResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageResponse.java index 7b6b97ad34..1efd8108d0 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/LanguageResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/LanguageResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,52 +16,29 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + import java.util.List; /** * Simple api response data model for Rli */ -public final class LanguageResponse extends Response { - - private final List languageDetections; +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class LanguageResponse extends Response { /** - * constructor for {@code LanguageResponse} - * @param requestId request id - * @param languageDetections list of detected languages + * @return the list of detected whole-document languages */ - public LanguageResponse(String requestId, - List languageDetections) { - super(requestId); - this.languageDetections = languageDetections; - } - - /** - * get the list of detected languages - * @return the list of detected languages - */ - public List getLanguageDetections() { - return languageDetections; - } - - @Override - public int hashCode() { - return languageDetections != null ? languageDetections.hashCode() : 0; - } + private final List languageDetections; /** - * if the param is a {@code CategoriesResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the list of detected language regions */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LanguageResponse)) { - return false; - } - - LanguageResponse that = (LanguageResponse) o; - return super.equals(o) - && languageDetections != null ? languageDetections.equals(that.getLanguageDetections()) : that.languageDetections == null; - } + private final List regionalDetections; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LanguageWeight.java b/model/src/main/java/com/basistech/rosette/apimodel/LanguageWeight.java index 180dd586c6..72e472466c 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/LanguageWeight.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/LanguageWeight.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,94 +16,37 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; import com.basistech.util.ISO15924; import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; /** * language weight used to resolve ambiguous results */ -public final class LanguageWeight { - - private final LanguageCode language; - private final ISO15924 script; - private final Integer weight; +@Value +@Builder +@JacksonMixin +public class LanguageWeight { /** - * constructor for {@code LanguageWeight} - * @param language language - * @param script script - * @param weight weight used to resolve ambiguous results - */ - public LanguageWeight( - LanguageCode language, - ISO15924 script, - Integer weight - ) { - this.language = language; - this.script = script; - this.weight = weight; - } - - /** - * constructor for {@code LanguageWeight} - * @param language language - * @param weight weight used to resolve ambiguous results - */ - public LanguageWeight( - LanguageCode language, - Integer weight - ) { - this.language = language; - this.script = null; - this.weight = weight; - } - - /** - * get the language * @return the language */ - public LanguageCode getLanguage() { - return language; - } + private final LanguageCode language; /** - * get the script * @return the script */ - public ISO15924 getScript() { - return script; - } - - /** - * get the weight used to resolve ambiguous results - * @return the weight - */ - public Integer getWeight() { - return weight; - } - - @Override - public int hashCode() { - int result = language != null ? language.hashCode() : 0; - result = 31 * result + (script != null ? script.hashCode() : 0); - result = 31 * result + (weight != null ? weight.hashCode() : 0); - return result; - } + private final ISO15924 script; /** - * if the param is a {@code LanguageWeight}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the weight used to resolve ambiguous results */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LanguageWeight)) { - return false; - } - - LanguageWeight that = (LanguageWeight) o; - return language != null ? language.equals(that.getLanguage()) : that.language == null - && weight != null ? weight.equals(that.getWeight()) : that.weight == null - && script != null ? script.equals(that.getScript()) : that.script == null; - } + @Min(0) + @Max(100) + private final Integer weight; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Lemma.java b/model/src/main/java/com/basistech/rosette/apimodel/Lemma.java deleted file mode 100644 index 50303ec3ab..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/Lemma.java +++ /dev/null @@ -1,78 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * lemma (canonical form) of the word - */ -public final class Lemma { - - private final String text; - private final String lemma; - - /** - * constructor for {@code lemma} - * @param text text - * @param lemma lemma - */ - public Lemma( - String text, - String lemma - ) { - this.text = text; - this.lemma = lemma; - } - - /** - * get the text - * @return the text - */ - public String getText() { - return text; - } - - /** - * get the lemma - * @return the lemma - */ - public String getLemma() { - return lemma; - } - - @Override - public int hashCode() { - int result = text != null ? text.hashCode() : 0; - result = 31 * result + (lemma != null ? lemma.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code Lemma}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Lemma)) { - return false; - } - - Lemma that = (Lemma) o; - return text != null ? text.equals(that.getText()) : that.text == null - && lemma != null ? lemma.equals(that.getLemma()) : that.lemma == null; - } -} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntitiesRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntitiesRequest.java deleted file mode 100644 index 932221cad6..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntitiesRequest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import com.basistech.util.LanguageCode; - -/** - * Class that represents the data from an entity resolution request - */ -public final class LinkedEntitiesRequest extends Request { - - /** - * constructor for {@code LinkedEntityRequest} - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - */ - public LinkedEntitiesRequest( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit - ) { - super(language, content, contentUri, contentType, unit); - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - /** - * if the param is a {@code MorphologyRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LinkedEntitiesRequest)) { - return false; - } - - return super.equals(o); - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntitiesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntitiesResponse.java deleted file mode 100644 index 87880bcc04..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntitiesResponse.java +++ /dev/null @@ -1,68 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * Simple api response data model for entity resolver - */ -public final class LinkedEntitiesResponse extends Response { - - private final List entities; - - /** - * constructor for {@code LinkedEntityResponse} - * @param requestId request id - * @param entities list of resolved entities - */ - public LinkedEntitiesResponse( - String requestId, - List entities) { - super(requestId); - this.entities = entities; - } - - /** - * get the list of resolved (against the knowledgebase) entites - * @return the list of resolved entities - */ - public List getEntities() { - return entities; - } - - @Override - public int hashCode() { - return entities != null ? entities.hashCode() : 0; - } - - /** - * if the param is a {@code LinkedEntityResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LinkedEntitiesResponse)) { - return false; - } - - LinkedEntitiesResponse that = (LinkedEntitiesResponse) o; - return super.equals(o) - && entities != null ? entities.equals(that.getEntities()) : entities == that.getEntities(); - } -} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntity.java b/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntity.java deleted file mode 100644 index b9d3eaeb4e..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/LinkedEntity.java +++ /dev/null @@ -1,108 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * Entity linked against a knowledge base (default is Wikipedia) - */ -public final class LinkedEntity { - - private final String entityId; - private final int indocChainId; - private final String mention; - private final Double confidence; - - /** - * constructor for {@code LinkedEntity} - * @param entityId resolved entity id - * @param indocChainId in-document chain id - * @param mention mention text - * @param confidence confidence - */ - public LinkedEntity( - String entityId, - int indocChainId, - String mention, - Double confidence) { - this.entityId = entityId; - this.indocChainId = indocChainId; - this.mention = mention; - this.confidence = confidence; - } - - /** - * get the resolved entity id - * @return the entity id - */ - public String getEntityId() { - return entityId; - } - - /** - * get the in-document chain id - * @return the in-document chain id - */ - public int getIndocChainId() { - return indocChainId; - } - - /** - * get the mention text - * @return the mention text - */ - public String getMention() { - return mention; - } - - /** - * get the confidence - * @return the confidence - */ - public Double getConfidence() { - return confidence; - } - - @Override - public int hashCode() { - int result; - long temp; - result = entityId != null ? entityId.hashCode() : 0; - result = 31 * result + indocChainId; - result = 31 * result + (mention != null ? mention.hashCode() : 0); - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - /** - * if the param is a {@code LinkedEntity}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof LinkedEntity)) { - return false; - } - - LinkedEntity that = (LinkedEntity) o; - return entityId != null ? entityId.equals(that.getEntityId()) : that.entityId == null - && indocChainId == that.getIndocChainId() - && mention != null ? mention.equals(that.getMention()) : that.mention == null - && confidence.equals(that.getConfidence()); - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/MentionOffsets.java b/model/src/main/java/com/basistech/rosette/apimodel/MentionOffsets.java new file mode 100644 index 0000000000..846be6258b --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/MentionOffsets.java @@ -0,0 +1,45 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.constraints.Min; + +/** + * The start and end offset/index for a given mention in a string of text + */ +@Value +@Builder +@JacksonMixin +public class MentionOffsets { + + /** + * @return the offset for the first character of a mention, based on UTF-16 code page + */ + @Min(0) + private final Integer startOffset; + + /** + * @return the offset for the last character of a mention, based on UTF-16 code page + */ + @Min(0) + private final Integer endOffset; + +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyModelType.java b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyModelType.java new file mode 100644 index 0000000000..feeae3d73f --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyModelType.java @@ -0,0 +1,27 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +/** + * A model type for morphological analysis. + */ +public enum MorphologyModelType { + DEFAULT, + DNN, + PERCEPTRON, + /**/; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyOptions.java index fa05e88475..c2a40d46f8 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyOptions.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2018 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,219 +16,47 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.PartOfSpeechTagSet; +import lombok.Builder; +import lombok.Value; + /** - * Linguistics analysis options + * Morphology options */ -public final class MorphologyOptions { - - private Boolean disambiguate; - private Boolean query; - private Boolean tokenizeForScript; - private Integer minNonPrimaryScriptRegionLength; - private Boolean includeHebrewRoots; - private Boolean nfkcNormalize; - private Boolean fstTokenize; - private String defaultTokenizationLanguage; - - /** - * constructor for {@code MorphologyOptions} - * @param disambiguate whether the linguistics analysis should disambiguate results - * @param query request query processing - * @param tokenizeForScript whether to use different tokenizers for different scripts - * @param minNonPrimaryScriptRegionLength minimum non-primary scripting region length - * @param includeHebrewRoots whether to include Hebrew roots - * @param nfkcNormalize whether to enable Unicode normalization before tokenization - * @param fstTokenize whether to enable tokenization for supported languages - * @param defaultTokenizationLanguage default tokenization language - */ - public MorphologyOptions( - Boolean disambiguate, - Boolean query, - Boolean tokenizeForScript, - Integer minNonPrimaryScriptRegionLength, - Boolean includeHebrewRoots, - Boolean nfkcNormalize, - Boolean fstTokenize, - String defaultTokenizationLanguage - ) { - this.disambiguate = disambiguate; - this.query = query; - this.tokenizeForScript = tokenizeForScript; - this.minNonPrimaryScriptRegionLength = minNonPrimaryScriptRegionLength; - this.includeHebrewRoots = includeHebrewRoots; - this.nfkcNormalize = nfkcNormalize; - this.fstTokenize = fstTokenize; - this.defaultTokenizationLanguage = defaultTokenizationLanguage; - } +@Value +@Builder +@JacksonMixin +public class MorphologyOptions extends Options { /** - * get whether the linguistics analysis should disambiguate results * @return whether the linguistics analysis should disambiguate results */ - public Boolean getDisambiguate() { - return disambiguate; - } + private final Boolean disambiguate; /** - * Request query processing. Linguistics analysis may change its behavior + * DocumentRequest query processing. Linguistics analysis may change its behavior * to reflect the fact that query input is often not in full sentences; - * typically, this disables disambiguation + * Typically, this disables disambiguation. * @return request query processing + * Linguistics analysis may change its behavior to reflect the fact that query input is often + * not in full sentences; Typically, this disables disambiguation. */ - public Boolean getQuery() { - return query; - } - - /** - * Get whether to use different tokenizers for different scripts. - * If false, uses the tokenizer for the {@code defaultTokenizationLanguage}. - * Applies only to statistical segmentation languages - * @return whether to use different tokenizers for different scripts - */ - public Boolean getTokenizeForScript() { - return tokenizeForScript; - } - - /** - * get the minimum non-primary scripting region length - * @return minimum non-primary scripting region length - */ - public Integer getMinNonPrimaryScriptRegionLength() { - return minNonPrimaryScriptRegionLength; - } - - /** - * get whether to include Hebrew roots - * @return whether to include Hebrew roots - */ - public Boolean getIncludeHebrewRoots() { - return includeHebrewRoots; - } - - /** - * get whether to enable Unicode normalization before tokenization - * @return whether to enable Unicode normalization before tokenization - */ - public Boolean getNfkcNormalize() { - return nfkcNormalize; - } - - /** - * get whether to enable tokenization for supported languages - * @return whether to enable tokenization for supported languages - */ - public Boolean getFstTokenize() { - return fstTokenize; - } - - /** - * get the default tokenization language - * @return the default tokenization language - */ - public String getDefaultTokenizationLanguage() { - return defaultTokenizationLanguage; - } - - /** - * set whether the linguistics analysis should disambiguate results - * @param disambiguate whether the linguistics analysis should disambiguate results - */ - public void setDisambiguate(Boolean disambiguate) { - this.disambiguate = disambiguate; - } - - /** - * Request query processing. Linguistics analysis may change its behavior - * to reflect the fact that query input is often not in full sentences; - * typically, this disables disambiguation - * @param query request query processing - */ - public void setQuery(Boolean query) { - this.query = query; - } - - /** - * Set whether to use different tokenizers for different scripts. - * If false, uses the tokenizer for the {@code defaultTokenizationLanguage}. - * Applies only to statistical segmentation languages - * @param tokenizeForScript whether to use different tokenizers for different scripts - */ - public void setTokenizeForScript(Boolean tokenizeForScript) { - this.tokenizeForScript = tokenizeForScript; - } + private final Boolean query; /** - * set the minimum non-primary scripting region length - * @param minNonPrimaryScriptRegionLength the minimum non-primary scripting region length + * @return the tag set used when returning part of speech tags. A {@code null} value + * indicates the default. */ - public void setMinNonPrimaryScriptRegionLength(Integer minNonPrimaryScriptRegionLength) { - this.minNonPrimaryScriptRegionLength = minNonPrimaryScriptRegionLength; - } + private final PartOfSpeechTagSet partOfSpeechTagSet; /** - * set whether to include Hebrew roots - * @param includeHebrewRoots whether to include Hebrew roots + * @return the model type */ - public void setIncludeHebrewRoots(Boolean includeHebrewRoots) { - this.includeHebrewRoots = includeHebrewRoots; - } + private final MorphologyModelType modelType; /** - * set whether to enable Unicode normalization before tokenization - * @param nfkcNormalize whether to enable Unicode normalization before tokenization + * @return the disambiguator type */ - public void setNfkcNormalize(Boolean nfkcNormalize) { - this.nfkcNormalize = nfkcNormalize; - } - - /** - * set whether to enable tokenization for supported languages - * @param fstTokenize whether to enable tokenization for supported languages - */ - public void setFstTokenize(Boolean fstTokenize) { - this.fstTokenize = fstTokenize; - } - - /** - * set the default tokenization language - * @param defaultTokenizationLanguage the default tokenization language - */ - public void setDefaultTokenizationLanguage(String defaultTokenizationLanguage) { - this.defaultTokenizationLanguage = defaultTokenizationLanguage; - } - - @Override - public int hashCode() { - int result = disambiguate != null ? disambiguate.hashCode() : 0; - result = 31 * result + (query != null ? query.hashCode() : 0); - result = 31 * result + (tokenizeForScript != null ? tokenizeForScript.hashCode() : 0); - result = 31 * result + (minNonPrimaryScriptRegionLength != null ? minNonPrimaryScriptRegionLength.hashCode() : 0); - result = 31 * result + (includeHebrewRoots != null ? includeHebrewRoots.hashCode() : 0); - result = 31 * result + (nfkcNormalize != null ? nfkcNormalize.hashCode() : 0); - result = 31 * result + (fstTokenize != null ? fstTokenize.hashCode() : 0); - result = 31 * result + (defaultTokenizationLanguage != null ? defaultTokenizationLanguage.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code MorphologyOptions}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof MorphologyOptions)) { - return false; - } - - MorphologyOptions that = (MorphologyOptions) o; - return disambiguate != null ? disambiguate.equals(that.getDisambiguate()) : that.disambiguate == null - && query != null ? query.equals(that.getQuery()) : that.query == null - && tokenizeForScript != null ? tokenizeForScript.equals(that.getTokenizeForScript()) : that.tokenizeForScript == null - && minNonPrimaryScriptRegionLength != null ? minNonPrimaryScriptRegionLength.equals(that.getMinNonPrimaryScriptRegionLength()) : that.minNonPrimaryScriptRegionLength == null - && includeHebrewRoots != null ? includeHebrewRoots.equals(that.getIncludeHebrewRoots()) : that.includeHebrewRoots == null - && nfkcNormalize != null ? nfkcNormalize.equals(that.getNfkcNormalize()) : that.nfkcNormalize == null - && fstTokenize != null ? fstTokenize.equals(that.getNfkcNormalize()) : that.fstTokenize == null - && defaultTokenizationLanguage != null ? defaultTokenizationLanguage.equals(that.getDefaultTokenizationLanguage()) : that.defaultTokenizationLanguage == null; - } + private final DisambiguatorType disambiguatorType; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyRequest.java deleted file mode 100644 index ed8a4da307..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyRequest.java +++ /dev/null @@ -1,85 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import com.basistech.util.LanguageCode; - -/** - * Class that represents the data from a linguistics request - */ -public final class MorphologyRequest extends Request { - - private MorphologyOptions options; - - /** - * constructor for {@code MorphologyRequest} - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - * @param options base linguistics options - */ - public MorphologyRequest( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit, - MorphologyOptions options - ) { - super(language, content, contentUri, contentType, unit); - this.options = options; - } - - /** - * get the base linguistics options - * @return the base linguistics options - */ - public MorphologyOptions getOptions() { - return options; - } - - /** - * set the base linguistics options - * @param options the base linguistics options - */ - public void setOptions(MorphologyOptions options) { - this.options = options; - } - - @Override - public int hashCode() { - return options != null ? options.hashCode() : 0; - } - - /** - * if the param is a {@code MorphologyRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof MorphologyRequest)) { - return false; - } - - MorphologyRequest that = (MorphologyRequest) o; - return super.equals(o) - && options != null ? options.equals(that.getOptions()) : that.options == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyResponse.java index 999d61b347..47a7574d92 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/MorphologyResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/MorphologyResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,98 +16,44 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + import java.util.List; /** * Simple API response data model returned by MorphologyRequest - * - * See {@code LinguisticRequest} and {@code MorphologicalFeature} for details. */ -public final class MorphologyResponse extends Response { - - private final List posTags; - private final List lemmas; - private final List compounds; - private final List hanReadings; - - /** - * constructor for {@code MorphologyResponse} - * @param requestId request id - * @param posTags list of part of speech tags - * @param lemmas list of lemmas - * @param compounds list of compounds - * @param hanReadings list of Han readings - */ - public MorphologyResponse( - String requestId, - List posTags, - List lemmas, - List compounds, - List hanReadings) { - super(requestId); - this.posTags = posTags; - this.lemmas = lemmas; - this.compounds = compounds; - this.hanReadings = hanReadings; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class MorphologyResponse extends Response { /** - * get the list of part of speech tags - * @return the list of part of speech tags + * @return list of tokens */ - public List getPosTags() { - return posTags; - } + private final List tokens; /** - * get the list of lemmas - * @return the list of lemmas + * @return list of part of speech tags, 1:1 with tokens, or {@code null} */ - public List getLemmas() { - return lemmas; - } + private final List posTags; /** - * get the list of compounds - * @return the list of compounds + * @return list of lemmas, 1:1 with tokens, or {@code null} */ - public List getCompounds() { - return compounds; - } + private final List lemmas; /** - * get the list of Han readings - * @return the list of Han readings + * @return list of compound components, 1:1 with tokens, or {@code null} */ - public List getHanReadings() { - return hanReadings; - } - - @Override - public int hashCode() { - int result = posTags != null ? posTags.hashCode() : 0; - result = 31 * result + (lemmas != null ? lemmas.hashCode() : 0); - result = 31 * result + (compounds != null ? compounds.hashCode() : 0); - result = 31 * result + (hanReadings != null ? hanReadings.hashCode() : 0); - return result; - } + private final List> compoundComponents; /** - * if the param is a {@code MorphologyResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return list of Han readings, 1:1 with tokens, or {@code null} */ - @Override - public boolean equals(Object o) { - if (!(o instanceof MorphologyResponse)) { - return false; - } - - MorphologyResponse that = (MorphologyResponse) o; - return super.equals(o) - && posTags != null ? posTags.equals(that.getPosTags()) : that.posTags == null - && lemmas != null ? lemmas.equals(that.getLemmas()) : that.lemmas == null - && compounds != null ? compounds.equals(that.getCompounds()) : that.compounds == null - && hanReadings != null ? hanReadings.equals(that.getHanReadings()) : that.hanReadings == null; - } + private final List> hanReadings; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Name.java b/model/src/main/java/com/basistech/rosette/apimodel/Name.java index af7ed87a7b..cf32c32170 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/Name.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Name.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2022 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,133 +18,90 @@ import com.basistech.util.ISO15924; import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.constraints.NotNull; /** * Class that represents a name. */ -public final class Name { - - private String text; - private String entityType; - private ISO15924 script; - private LanguageCode language; +@Value +@Builder +public class Name { /** - * Constructor for {@code Name} - * @param name a name - * @param entityType entity type of the name - * @param script script of the name - * @param language language of the name + * @return text of the name */ - public Name(String name, - String entityType, - ISO15924 script, - LanguageCode language) { - this.text = name; - this.entityType = entityType; - this.script = script; - this.language = language; - } + @NotNull + String text; /** - * Constructor for {@code Name} with default entityType PERSON, unknown script and unknown language - * @param name a name + * @return entity type of the name */ - public Name(String name) { - this.text = name; - this.entityType = "PERSON"; - this.script = ISO15924.Zyyy; - this.language = LanguageCode.UNKNOWN; - } + String entityType; /** - * Gets the name - * @return Text of the name + * @return script of the name, {@link ISO15924} */ - public String getText() { - return text; - } + ISO15924 script; /** - * Gets the entity type of the name - * @return entity type of the name + * @return language of the name, {@link LanguageCode} */ - public String getEntityType() { - return entityType; - } + LanguageCode language; - /** - * Gets the script of the name, {@link ISO15924} - * @return script of the name - */ - public ISO15924 getScript() { - return script; - } /** - * Gets the language of the name, {@link LanguageCode} - * @return language of the name + * @return gender of the name, {@link Gender} */ - public LanguageCode getLanguage() { - return language; - } + Gender gender; - /** - * Sets the name text - * @param text name text - */ - public void setText(String text) { - this.text = text; - } /** - * Sets the entity type of a name - * @param entityType entity type of a name + * Default constructor for lombok (gender is optional) + * + * @param name + * @param entityType + * @param script + * @param language */ - public void setEntityType(String entityType) { + public Name(String name, String entityType, ISO15924 script, LanguageCode language) { + this.text = name; this.entityType = entityType; - } - - /** - * Sets the script of a name - * @param script script of a name - */ - public void setScript(ISO15924 script) { this.script = script; + this.language = language; + this.gender = null; } /** - * Sets the language of a name - * @param language language of a name + * Default constructor for lombok with gender + * + * @param name + * @param entityType + * @param script + * @param language + * @param gender */ - public void setLanguage(LanguageCode language) { + public Name(String name, String entityType, ISO15924 script, LanguageCode language, Gender gender) { + this.text = name; + this.entityType = entityType; + this.script = script; this.language = language; - } - - @Override - public int hashCode() { - int result = text != null ? text.hashCode() : 0; - result = 31 * result + (entityType != null ? entityType.hashCode() : 0); - result = 31 * result + (script != null ? script.hashCode() : 0); - result = 31 * result + (language != null ? language.hashCode() : 0); - return result; + this.gender = gender; } /** - * if the param is a {@code Name}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * Constructor for {@code Name} with default entityType PERSON, unknown script and unknown language + * This allows Jackson to use the single arg constructor to deserialize a short-hand value + * like {"name": "Mike"} instead of the full fledged {"name": {"text": "Mike"}} + * @param name a name */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Name)) { - return false; - } - - Name that = (Name) o; - return text != null ? text.equals(that.getText()) : that.text == null - && entityType != null ? entityType.equals(that.getEntityType()) : that.entityType == null - && script != null ? script.equals(that.getScript()) : that.script == null - && language != null ? language.equals(that.getScript()) : that.language == null; + public Name(String name) { + this.text = name; + this.entityType = "PERSON"; + this.script = ISO15924.Zyyy; + this.language = LanguageCode.UNKNOWN; + this.gender = null; } } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameDeduplicationRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/NameDeduplicationRequest.java new file mode 100644 index 0000000000..2165d3b0b9 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameDeduplicationRequest.java @@ -0,0 +1,55 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +/** + * Request object for name-deduplication. + * + * This class carries the list of names to dedupe as well as the score threshold. + */ +@Value +public class NameDeduplicationRequest extends Request { + + /** + * @return the list of names + */ + @NotNull + @Valid + List names; + + /** + * @return the threshold + */ + Double threshold; + + @Builder // workaround for inheritance https://github.com/projectlombok/lombok/issues/853 + public NameDeduplicationRequest(String profileId, + List names, + Double threshold) { + super(profileId); + this.names = new ArrayList<>(names); + this.threshold = threshold; + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/DecompoudingMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/NameDeduplicationResponse.java similarity index 53% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/DecompoudingMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/NameDeduplicationResponse.java index 009eb275d0..3915f7bf16 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/DecompoudingMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameDeduplicationResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,19 +14,26 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; import java.util.List; -public class DecompoudingMixin extends BaseMixin { - @JsonCreator - public DecompoudingMixin( - @JsonProperty("text") String text, - @JsonProperty("compoundComponents") List compoundComponents - ) { - // - } +/** + * Response data model for the deduplication of a list of names + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class NameDeduplicationResponse extends Response { + + /** + * @return name deduplication results + */ + private final List results; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingRequest.java deleted file mode 100644 index f5aa992879..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingRequest.java +++ /dev/null @@ -1,94 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * Class that represents a name matcher request. - * - * Request to match 2 names. - */ -public final class NameMatchingRequest { - - private Name name1; - private Name name2; - - /** - * Constructor for {@code NameMatchingRequest} - * @param name1 First name to be matched against second name - * @param name2 Second name to be matched against first name - */ - public NameMatchingRequest(Name name1, - Name name2) { - this.name1 = name1; - this.name2 = name2; - } - - /** - * Gets the first name - * @return first name - */ - public Name getName1() { - return name1; - } - - /** - * Gets the second name - * @return second name - */ - public Name getName2() { - return name2; - } - - /** - * Sets the first name - * @param name the name object. - */ - public void setName1(Name name) { - name1 = name; - } - - /** - * Sets the second name - * @param name the name object. - */ - public void setName2(Name name) { - name1 = name; - } - - @Override - public int hashCode() { - int result = name1 != null ? name1.hashCode() : 0; - result = 31 * result + (name2 != null ? name2.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code NameMatchingRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof NameMatchingRequest)) { - return false; - } - - NameMatchingRequest that = (NameMatchingRequest) o; - return name1 != null ? name1.equals(that.getName1()) : that.name1 == null - && name2 != null ? name2.equals(that.getName1()) : that.name2 == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingResponse.java deleted file mode 100644 index cbb1785767..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingResponse.java +++ /dev/null @@ -1,65 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * Response data model for name matcher - */ -public final class NameMatchingResponse extends Response { - - private final NameMatchingResult result; - - /** - * Constructor for {@code NameMatchingResponse} - * @param requestId request id - * @param result name matcher result - */ - public NameMatchingResponse(String requestId, - NameMatchingResult result - ) { - super(requestId); - this.result = result; - } - - /** - * Gets the name matcher result - * @return name matcher result - */ - public NameMatchingResult getResult() { - return result; - } - - @Override - public int hashCode() { - return result != null ? result.hashCode() : 0; - } - - /** - * if the param is a {@code NameMatchingResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof NameMatchingResponse)) { - return false; - } - - NameMatchingResponse that = (NameMatchingResponse) o; - return result != null ? result.equals(that.getResult()) : that.result == null; - } -} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingResult.java b/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingResult.java deleted file mode 100644 index f31ffb3037..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/NameMatchingResult.java +++ /dev/null @@ -1,65 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.Objects; - -/** - * Name matcher result - */ -public final class NameMatchingResult { - - private final Double score; - - /** - * Constructor for {@code NameMatchingResult} - * @param score score of matching 2 names - */ - public NameMatchingResult( - Double score) { - this.score = score; - } - - /** - * Gets the score of matching 2 names - * @return score - */ - public Double getScore() { - return score; - } - - @Override - public int hashCode() { - long temp = Double.doubleToLongBits(score); - return (int) (temp ^ (temp >>> 32)); - } - - /** - * if the param is a {@code NameMatchingResult}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof NameMatchingResult)) { - return false; - } - - NameMatchingResult that = (NameMatchingResult) o; - return Objects.equals(score, that.getScore()); - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameSimilarityRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/NameSimilarityRequest.java new file mode 100644 index 0000000000..64d396ad95 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameSimilarityRequest.java @@ -0,0 +1,64 @@ +/* +* Copyright 2022 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import java.util.Map; + +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +/** + * Request object for name-similarity. + * + * This class carries the two names to compare. + */ +@Value +public class NameSimilarityRequest extends Request { + + /** + * @return first name + */ + @NotNull + @Valid + Name name1; + + /** + * @return second name + */ + @NotNull + @Valid + Name name2; + + /** + * @return parameters to use + */ + Map parameters; + + @Builder // workaround for inheritance https://github.com/rzwitserloot/lombok/issues/853 + public NameSimilarityRequest(String profileId, + Name name1, + Name name2, + Map parameters) { + super(profileId); + this.name1 = name1; + this.name2 = name2; + this.parameters = parameters; + } +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ScriptResponseMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/NameSimilarityResponse.java similarity index 53% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/ScriptResponseMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/NameSimilarityResponse.java index 54f0397454..410e36977a 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/ScriptResponseMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameSimilarityResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,19 +14,24 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; -import java.util.List; +/** + * Response data model for comparison of two names. + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class NameSimilarityResponse extends Response { -public class ScriptResponseMixin extends BaseMixin { - @JsonCreator - public ScriptResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("scripts") List scripts - ) { - // - } + /** + * @return name similarity result score (0.0-1.0) + */ + private final Double score; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslation.java b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslation.java new file mode 100644 index 0000000000..1964050802 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslation.java @@ -0,0 +1,37 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import com.basistech.rosette.annotations.JacksonMixin; + +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class NameTranslation { + String translation; + Double confidence; + + public NameTranslation(String translation, Double confidence) { + this.translation = translation; + this.confidence = confidence; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationRequest.java index 94254e9072..e1c3be6a91 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationRequest.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationRequest.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,211 +16,99 @@ package com.basistech.rosette.apimodel; +import com.basistech.util.ISO15924; import com.basistech.util.LanguageCode; +import com.basistech.util.TransliterationScheme; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.constraints.NotNull; /** - * Class that represents the data from a name translation request + * Request for name translation. */ -public final class NameTranslationRequest { - - private String name; - private String entityType; - private String sourceScript; - private LanguageCode sourceLanguageOfOrigin; - private LanguageCode sourceLanguageOfUse; - private LanguageCode targetLanguage; - private String targetScript; - private String targetScheme; +@Value +public final class NameTranslationRequest extends Request { /** - * constructor for {@code NameTranslationRequest} - * @param name name to be translated - * @param entityType name's entity type - * @param sourceScript name's script code - * @param sourceLanguageOfOrigin name's language of origin - * @param sourceLanguageOfUse name's language of use - * @param targetLanguage target language code - * @param targetScript target script code - * @param targetScheme target transliteration scheme + * @return the name to be translated */ - public NameTranslationRequest(String name, - String entityType, - String sourceScript, - LanguageCode sourceLanguageOfOrigin, - LanguageCode sourceLanguageOfUse, - LanguageCode targetLanguage, - String targetScript, - String targetScheme) { - this.name = name; - this.entityType = entityType; - this.sourceScript = sourceScript; - this.sourceLanguageOfOrigin = sourceLanguageOfOrigin; - this.sourceLanguageOfUse = sourceLanguageOfUse; - this.targetLanguage = targetLanguage; - this.targetScript = targetScript; - this.targetScheme = targetScheme; - } + @NotNull + private final String name; /** - * get the name to be translated - * @return the name to be translated - */ - public String getName() { - return name; - } - - /** - * get the entity type of the name * @return the entity type of the name */ - public String getEntityType() { - return entityType; - } + private final String entityType; /** - * get the code for the name's script * @return code for the name's script */ - public String getSourceScript() { - return sourceScript; - } + private final ISO15924 sourceScript; /** - * get the code for the name's language of origin * @return code for the name's language of origin */ - public LanguageCode getSourceLanguageOfOrigin() { - return sourceLanguageOfOrigin; - } + private final LanguageCode sourceLanguageOfOrigin; /** - * get the code for the name's language of use * @return code for the name's language of use */ - public LanguageCode getSourceLanguageOfUse() { - return sourceLanguageOfUse; - } + private final LanguageCode sourceLanguageOfUse; /** - * get code for the translation language - * @return code for the translation language + * @return code for the language to translate to */ - public LanguageCode getTargetLanguage() { - return targetLanguage; - } + @NotNull + private final LanguageCode targetLanguage; /** - * get the code for the target script * @return code for the target script */ - public String getTargetScript() { - return targetScript; - } + private final ISO15924 targetScript; /** - * get the transliteration scheme for the translation * @return the transliteration scheme for the translation */ - public String getTargetScheme() { - return targetScheme; - } + private final TransliterationScheme targetScheme; /** - * set the name to be translated - * @param name the name to be translated + * @return the maximum number of translation results to return */ - public void setName(String name) { - this.name = name; - } + private final Integer maximumResults; - /** - * set the entity type of the name - * @param entityType the entity type of the name - */ - public void setEntityType(String entityType) { - this.entityType = entityType; + public NameTranslationRequest(String profileId, + String name, + String entityType, + ISO15924 sourceScript, + LanguageCode sourceLanguageOfOrigin, + LanguageCode sourceLanguageOfUse, + LanguageCode targetLanguage, + ISO15924 targetScript, + TransliterationScheme targetScheme) { + this(profileId, name, entityType, sourceScript, sourceLanguageOfOrigin, sourceLanguageOfUse, targetLanguage, targetScript, targetScheme, null); } - /** - * set the code for the name's script - * @param sourceScript code for the name's script - */ - public void setSourceScript(String sourceScript) { + @Builder // workaround for inheritance https://github.com/rzwitserloot/lombok/issues/853 + public NameTranslationRequest(String profileId, + String name, + String entityType, + ISO15924 sourceScript, + LanguageCode sourceLanguageOfOrigin, + LanguageCode sourceLanguageOfUse, + LanguageCode targetLanguage, + ISO15924 targetScript, + TransliterationScheme targetScheme, + Integer maximumResults) { + super(profileId); + this.name = name; + this.entityType = entityType; this.sourceScript = sourceScript; - } - - /** - * set the code for the name's language of origin - * @param sourceLanguageOfOrigin the name's language of origin - */ - public void setSourceLanguageOfOrigin(LanguageCode sourceLanguageOfOrigin) { this.sourceLanguageOfOrigin = sourceLanguageOfOrigin; - } - - /** - * set the code for the name's language of use - * @param sourceLanguageOfUse code for the name's language of use - */ - public void setSourceLanguageOfUse(LanguageCode sourceLanguageOfUse) { this.sourceLanguageOfUse = sourceLanguageOfUse; - } - - /** - * set code for the translation language - * @param targetLanguage code for the translation language - */ - public void setTargetLanguage(LanguageCode targetLanguage) { this.targetLanguage = targetLanguage; - } - - /** - * set the code for the target script - * @param targetScript code for the target script - */ - public void setTargetScript(String targetScript) { this.targetScript = targetScript; - } - - /** - * set the transliteration scheme for the translation - * @param targetScheme the transliteration scheme for the translation - */ - public void setTargetScheme(String targetScheme) { this.targetScheme = targetScheme; - } - - @Override - public int hashCode() { - int result = name != null ? name.hashCode() : 0; - result = 31 * result + (entityType != null ? entityType.hashCode() : 0); - result = 31 * result + (sourceScript != null ? sourceScript.hashCode() : 0); - result = 31 * result + (sourceLanguageOfOrigin != null ? sourceLanguageOfOrigin.hashCode() : 0); - result = 31 * result + (sourceLanguageOfUse != null ? sourceLanguageOfUse.hashCode() : 0); - result = 31 * result + (targetLanguage != null ? targetLanguage.hashCode() : 0); - result = 31 * result + (targetScript != null ? targetScript.hashCode() : 0); - result = 31 * result + (targetScheme != null ? targetScheme.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code NameTranslationRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof NameTranslationRequest)) { - return false; - } - - NameTranslationRequest that = (NameTranslationRequest) o; - return name != null ? name.equals(that.getName()) : that.name == null - && entityType != null ? entityType.equals(that.getEntityType()) : that.entityType == null - && sourceScript != null ? sourceScript.equals(that.getSourceScript()) : that.sourceScript == null - && sourceLanguageOfOrigin != null ? sourceLanguageOfOrigin.equals(that.getSourceLanguageOfOrigin()) : that.sourceLanguageOfOrigin == null - && sourceLanguageOfUse != null ? sourceLanguageOfUse.equals(that.getSourceLanguageOfUse()) : that.sourceLanguageOfUse == null - && targetLanguage != null ? targetLanguage.equals(that.getTargetLanguage()) : that.targetLanguage == null - && targetScript != null ? targetScript.equals(that.getTargetScript()) : that.targetScript == null - && targetScheme != null ? targetScheme.equals(that.getTargetScheme()) : that.targetScheme == null; + this.maximumResults = maximumResults; } } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResponse.java index 7ad6accb45..67899b4a51 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,50 +16,93 @@ package com.basistech.rosette.apimodel; +import java.util.List; +import java.util.Map; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; +import com.basistech.util.TransliterationScheme; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + /** - * Simple api response data model for name translation + * name translation result */ -public final class NameTranslationResponse extends Response { +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class NameTranslationResponse extends Response { - private final NameTranslationResult result; - /** - * constructor for {@code NameTranslationResponse} - * @param requestId request id - * @param result name translation result + * @return the code for the script of the name to translate */ - public NameTranslationResponse(String requestId, - NameTranslationResult result) { - super(requestId); - this.result = result; - } + private final ISO15924 sourceScript; /** - * get the name translation result - * @return the name translation result + * @return the source name's language of origin code */ - public NameTranslationResult getResult() { - return result; - } + private final LanguageCode sourceLanguageOfOrigin; - @Override - public int hashCode() { - return result != null ? result.hashCode() : 0; - } + /** + * @return the source name's language of use code + */ + private final LanguageCode sourceLanguageOfUse; + + /** + * @return the target name's language code + */ + private final LanguageCode targetLanguage; + + /** + * @return the target name's script code + */ + private final ISO15924 targetScript; /** - * if the param is a {@code NameTranslationResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the transliteration scheme used */ - @Override - public boolean equals(Object o) { - if (!(o instanceof NameTranslationResponse)) { - return false; + private final TransliterationScheme targetScheme; + + /** + * @return the translation + */ + private final String translation; + + /** + * @return the translation confidence (0.0-1.0) + */ + private final Double confidence; + + /** + * @return the translation + */ + private final List translations; + + public static class NameTranslationResponseBuilder { + protected Map extendedInformation; + + public NameTranslationResponseBuilder extendedInformation(Map extendedInformation) { + this.extendedInformation = extendedInformation; + return this; } - NameTranslationResponse that = (NameTranslationResponse) o; - return super.equals(o) - && result != null ? result.equals(that.getResult()) : that.result == null; + + public NameTranslationResponse build() { + NameTranslationResponse response = new NameTranslationResponse( + this.sourceScript, + this.sourceLanguageOfOrigin, + this.sourceLanguageOfUse, + this.targetLanguage, + this.targetScript, + this.targetScheme, + this.translation, + this.confidence, + this.translations); + response.addExtendedInformation(extendedInformation); + return response; + } } -} \ No newline at end of file +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResult.java b/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResult.java deleted file mode 100644 index 800ca5b0bb..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/NameTranslationResult.java +++ /dev/null @@ -1,163 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * name translation result - */ -public final class NameTranslationResult { - - private final String sourceScript; - private final String sourceLanguageOfOrigin; - private final String sourceLanguageOfUse; - private final String targetLanguage; - private final String targetScript; - private final String targetScheme; - private final String translation; - private final Double confidence; - - /** - * constructor for {@code TranslatedNamesResult} - * @param sourceScript name's script code - * @param sourceLanguageOfOrigin name's language of origin - * @param sourceLanguageOfUse name's language of use - * @param translation translation - * @param targetLanguage target language code - * @param targetScript target script code - * @param targetScheme target transliteration scheme - * @param confidence confidence score for result - */ - public NameTranslationResult( - String sourceScript, - String sourceLanguageOfOrigin, - String sourceLanguageOfUse, - String translation, - String targetLanguage, - String targetScript, - String targetScheme, - Double confidence) { - this.sourceScript = sourceScript; - this.sourceLanguageOfOrigin = sourceLanguageOfOrigin; - this.sourceLanguageOfUse = sourceLanguageOfUse; - this.translation = translation; - this.targetLanguage = targetLanguage; - this.targetScript = targetScript; - this.targetScheme = targetScheme; - this.confidence = confidence; - } - - /** - * get the code for the script of the name to translate - * @return the source script code - */ - public String getSourceScript() { - return sourceScript; - } - - /** - * get the code for the name's language of origin - * @return the source language of origin code - */ - public String getSourceLanguageOfOrigin() { - return sourceLanguageOfOrigin; - } - - /** - * get the code for the name's language of use - * @return the source language of use code - */ - public String getSourceLanguageOfUse() { - return sourceLanguageOfUse; - } - - /** - * get the code for the translation language - * @return code for the translation language - */ - public String getTargetLanguage() { - return targetLanguage; - } - - /** - * get the code for the translation script - * @return code for the translation script - */ - public String getTargetScript() { - return targetScript; - } - - /** - * get the transliteration scheme for the translation - * @return code for the transliteration scheme - */ - public String getTargetScheme() { - return targetScheme; - } - - /** - * get the translation - * @return the translation - */ - public String getTranslation() { - return translation; - } - - /** - * get the confidence of the translation - * @return the confidence of the translation - */ - public Double getConfidence() { - return confidence; - } - - @Override - public int hashCode() { - int result; - long temp; - result = sourceScript != null ? sourceScript.hashCode() : 0; - result = 31 * result + (sourceLanguageOfOrigin != null ? sourceLanguageOfOrigin.hashCode() : 0); - result = 31 * result + (sourceLanguageOfUse != null ? sourceLanguageOfUse.hashCode() : 0); - result = 31 * result + (targetLanguage != null ? targetLanguage.hashCode() : 0); - result = 31 * result + (targetScript != null ? targetScript.hashCode() : 0); - result = 31 * result + (targetScheme != null ? targetScheme.hashCode() : 0); - result = 31 * result + (translation != null ? translation.hashCode() : 0); - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - /** - * if the param is a translated name result, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof NameTranslationResult)) { - return false; - } - - NameTranslationResult that = (NameTranslationResult) o; - return sourceScript != null ? sourceScript.equals(that.getSourceScript()) : that.sourceScript == null - && sourceLanguageOfOrigin != null ? sourceLanguageOfOrigin.equals(that.getSourceLanguageOfOrigin()) : that.sourceLanguageOfOrigin == null - && sourceLanguageOfUse != null ? sourceLanguageOfUse.equals(that.getSourceLanguageOfUse()) : that.sourceLanguageOfUse == null - && targetLanguage != null ? targetLanguage.equals(that.getTargetLanguage()) : that.targetLanguage == null - && targetScript != null ? targetScript.equals(that.getTargetScript()) : that.targetScript == null - && targetScheme != null ? targetScheme.equals(that.getTargetScheme()) : that.targetScheme == null - && confidence.equals(that.getConfidence()); - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/BaseMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/Options.java similarity index 76% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/BaseMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/Options.java index cf96320c5d..ca12804e4f 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/BaseMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Options.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.EqualsAndHashCode; -@JsonInclude(JsonInclude.Include.NON_NULL) -public abstract class BaseMixin { +@EqualsAndHashCode +public abstract class Options { + // } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/PartOfSpeech.java b/model/src/main/java/com/basistech/rosette/apimodel/PartOfSpeech.java deleted file mode 100644 index e25fcfeeea..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/PartOfSpeech.java +++ /dev/null @@ -1,75 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * Token's part of speech - */ -public final class PartOfSpeech { - - private final String text; - private final String pos; - - /** - * constructor for {@code PartOfSpeech} - * @param text text - * @param pos part of speech - */ - public PartOfSpeech(String text, String pos) { - this.text = text; - this.pos = pos; - } - - /** - * get the text - * @return the text - */ - public String getText() { - return text; - } - - /** - * get the part of speech - * @return the part of speech - */ - public String getPos() { - return pos; - } - - @Override - public int hashCode() { - int result = text != null ? text.hashCode() : 0; - result = 31 * result + (pos != null ? pos.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code PartOfSpeech}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof PartOfSpeech)) { - return false; - } - - PartOfSpeech that = (PartOfSpeech) o; - return text != null ? text.equals(that.getText()) : that.text == null - && pos != null ? pos.equals(that.getPos()) : that.pos == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/PingResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/PingResponse.java index 314bb8076d..3cdc1c66c1 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/PingResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/PingResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,62 +16,27 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + /** * Response ping data */ -public final class PingResponse extends Response { - - private final String message; - private final long time; - - /** - * constructor for {@code PingResponse} - * @param message ping response message - * @param time ping response timestamp - */ - public PingResponse(String message, long time) { - super(null); - this.message = message; - this.time = time; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class PingResponse extends Response { /** - * get the ping response message - * @return the message + * @return the ping response message */ - public String getMessage() { - return message; - } + private final String message; /** - * get the ping response timestamp * @return the ping response timestamp */ - public long getTime() { - return time; - } - - @Override - public int hashCode() { - int result = message != null ? message.hashCode() : 0; - result = 31 * result + (int) (time ^ (time >>> 32)); - return result; - } - - /** - * if the param is a {@code PingResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof PingResponse)) { - return false; - } - - PingResponse that = (PingResponse) o; - return super.equals(o) - && message != null ? message.equals(that.getMessage()) : that.message == null - && time == that.getTime(); - } + private final long time; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Relationship.java b/model/src/main/java/com/basistech/rosette/apimodel/Relationship.java index 4e93a87dfa..165c1e893d 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/Relationship.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Relationship.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,148 +16,83 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + import java.util.List; +import java.util.Set; /** * Relationship extracted by the relationship extractor */ -public final class Relationship { +@Value +@Builder +@JacksonMixin +public class Relationship { + /** + * @return the relationship predicate + */ private final String predicate; - private final String arg1; - private final String arg2; - private final String arg3; - private final List temporals; - private final List locatives; - private final List adjuncts; - private final Double confidence; /** - * constructor for {@code Relationship} - * @param predicate relationship predicate - * @param arg1 relationship argument 1 - * @param arg2 relationship argument 2 - * @param arg3 relationship argument 3 - * @param temporals relationship temporals - * @param locatives relationship locatives - * @param adjuncts relationship adjuncts - * @param confidence a measure of quality of relationship extraction + * @return the relationship predicate'sID */ - public Relationship( - String predicate, - String arg1, - String arg2, - String arg3, - List temporals, - List locatives, - List adjuncts, - Double confidence) { - this.predicate = predicate; - this.arg1 = arg1; - this.arg2 = arg2; - this.arg3 = arg3; - this.temporals = temporals; - this.locatives = locatives; - this.adjuncts = adjuncts; - this.confidence = confidence; - } - - @Override - public int hashCode() { - int result; - long temp; - result = predicate != null ? predicate.hashCode() : 0; - result = 31 * result + (arg1 != null ? arg1.hashCode() : 0); - result = 31 * result + (arg2 != null ? arg2.hashCode() : 0); - result = 31 * result + (arg3 != null ? arg3.hashCode() : 0); - result = 31 * result + (temporals != null ? temporals.hashCode() : 0); - result = 31 * result + (locatives != null ? locatives.hashCode() : 0); - result = 31 * result + (adjuncts != null ? adjuncts.hashCode() : 0); - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } + private final String predicateId; /** - * if the param is a {@code Relationship}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the first arg */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Relationship)) { - return false; - } - - Relationship that = (Relationship) o; - return predicate != null ? predicate.equals(that.getPredicate()) : that.predicate == null - && arg1 != null ? arg1.equals(that.getArg1()) : that.arg1 == null - && arg2 != null ? arg2.equals(that.getArg2()) : that.arg2 == null - && arg3 != null ? arg3.equals(that.getArg3()) : that.arg3 == null - && temporals != null ? temporals.equals(that.getTemporals()) : that.temporals == null - && locatives != null ? locatives.equals(that.getLocatives()) : that.locatives == null - && adjuncts != null ? adjuncts.equals(that.getAdjuncts()) : that.adjuncts == null - && confidence == that.getConfidence(); - } + private final String arg1; /** - * get the relationship predicate - * @return the relationship predicate + * @return the first arg's ID */ - public String getPredicate() { - return predicate; - } + private final String arg1Id; /** - * @return the first arg. + * @return the second arg */ - public String getArg1() { - return arg1; - } + private final String arg2; /** - * @return the second arg. + * @return the second arg's ID */ - public String getArg2() { - return arg2; - } + private final String arg2Id; /** - * @return the third arg. + * @return the third arg */ - public String getArg3() { - return arg3; - } + private final String arg3; /** - * get a list of temporals - * @return a list of temporals + * @return the third arg's ID */ - public List getTemporals() { - return temporals; - } + private final String arg3Id; + + /** + * @return a list of adjuncts + */ + private final List adjuncts; /** - * get a list of locatives * @return a list of locatives */ - public List getLocatives() { - return locatives; - } + private final List locatives; + + /** + * @return a list of temporals + */ + private final List temporals; /** - * get a list of adjuncts - * @return a list of adjuncts + * @return modalities */ - public List getAdjuncts() { - return adjuncts; - } + private final Set modalities; /** - * get the confidence - * @return the confidence + * @return the confidence (0.0-1.0) */ - public Double getConfidence() { - return confidence; - } + private final Double confidence; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/RelationshipOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/RelationshipOptions.java deleted file mode 100644 index e7e2576e6b..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/RelationshipOptions.java +++ /dev/null @@ -1,70 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -/** - * Relationship extraction options - */ -public final class RelationshipOptions { - - private AccuracyMode accuracyMode; - - /** - * constructor for {@code RelationshipOptions} - * @param accuracyMode accuracyMode to use for relationship extraction - */ - public RelationshipOptions( - AccuracyMode accuracyMode) { - this.accuracyMode = accuracyMode; - } - - /** - * get the accuracyMode to use for relationship extraction - * @return the accuracyMode to use for relationship extraction - */ - public AccuracyMode getAccuracyMode() { - return accuracyMode; - } - - /** - * set the accuracyMode to use for relationship extraction - * @param accuracyMode the accuracyMode to use for relationship extraction - */ - public void setAccuracyMode(AccuracyMode accuracyMode) { - this.accuracyMode = accuracyMode; - } - - @Override - public int hashCode() { - return accuracyMode != null ? accuracyMode.hashCode() : 0; - } - - /** - * if the param is a {@code RelationshipOptions}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof RelationshipOptions)) { - return false; - } - - RelationshipOptions that = (RelationshipOptions) o; - return accuracyMode != null ? accuracyMode.equals(that.getAccuracyMode()) : that.accuracyMode == null; - } -} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipResponseMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsOptions.java similarity index 51% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipResponseMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/RelationshipsOptions.java index 7fb7596cfa..4e1c487daa 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/RelationshipResponseMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,21 +14,27 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.basistech.rosette.apimodel.Relationship; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; -import java.util.List; +/** + * Relationship extraction options + */ +@Value +@Builder +@JacksonMixin +public class RelationshipsOptions extends Options { -public class RelationshipResponseMixin { - @JsonCreator - public RelationshipResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("relationships") List relationships - ) { - // - } + /** + * @return the accuracyMode to use for relationship extraction + */ + private final AccuracyMode accuracyMode; + /** + * @return the discoveryMode flag + */ + private final Boolean discoveryMode; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsRequest.java deleted file mode 100644 index d97a001243..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsRequest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import com.basistech.util.LanguageCode; - -/** - * Class that represents the data from an relationship extraction request - */ -public final class RelationshipsRequest extends Request { - - private RelationshipOptions options; - - /** - * Constructor for {@code RelationsipsRequest} - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - * @param options relationship options - */ - public RelationshipsRequest( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit, - RelationshipOptions options - ) { - super(language, content, contentUri, contentType, unit); - this.options = options; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (options != null ? options.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code RelationsipsRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof RelationshipsRequest)) { - return false; - } - - RelationshipsRequest that = (RelationshipsRequest) o; - return super.equals(o) - && options != null ? options.equals(that.getOptions()) : that.options == null; - } - - /** - * get the relationship options - * @return the relationship options - */ - public RelationshipOptions getOptions() { - return options; - } - - /** - * set the relationship options - * @param options the relationship options - */ - public void setOptions(RelationshipOptions options) { - this.options = options; - } - -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsResponse.java index d875b2fcdd..d4eccc3ae0 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/RelationshipsResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,56 +16,24 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + import java.util.List; /** * Simple api response data model for relationship extraction */ -public final class RelationshipsResponse extends Response { - - private final List relationships; - - /** - * Constructor for {@code EntitiesResponse} - * @param requestId request id - * @param relationships list of extracted relationships - */ - public RelationshipsResponse( - String requestId, - List relationships - ) { - super(requestId); - this.relationships = relationships; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class RelationshipsResponse extends Response { /** - * get the list of extracted relationships * @return the list of extracted relationships */ - public List getRelationships() { - return relationships; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (relationships != null ? relationships.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code RelationshipsResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof RelationshipsResponse)) { - return false; - } - - RelationshipsResponse that = (RelationshipsResponse) o; - return super.equals(o) - && relationships != null ? relationships.equals(that.getRelationships()) : that.relationships == null; - } + private final List relationships; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Request.java b/model/src/main/java/com/basistech/rosette/apimodel/Request.java index 31cfa2513a..052eabe919 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/Request.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Request.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,178 +16,18 @@ package com.basistech.rosette.apimodel; -import com.basistech.util.LanguageCode; - -import java.util.Arrays; +import lombok.AllArgsConstructor; +import lombok.Data; /** - * Class containing data common to Rosette API client requests + * Common base class of all requests. */ +@Data +@AllArgsConstructor public abstract class Request { - private LanguageCode language; - private String content; - private String contentUri; - private byte[] contentBytes; - private String contentType; - private InputUnit unit; - - /** - * Constructor for {@code Request} - * Fields for the three ways content can come in: - * 1. a "content" raw data - * 2. a "contentUri" pointing to the data - * 3. a "contentBytes" byte array for cases where data comes to us raw as an attachment - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - */ - protected Request( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit - ) { - this.language = language; - this.content = content; - this.contentUri = contentUri; - this.contentType = contentType; - if (unit == null) { - this.unit = InputUnit.doc; - } else { - this.unit = unit; - } - } - - /** - * get the language code - * @return the language code - */ - public LanguageCode getLanguage() { - return language; - } - - /** - * get content to process (JSON string or base64 encoding of non-JSON string) - * @return the content - */ - public String getContent() { - return content; - } - - /** - * get the content as an array of bytes - * @return the content as bytes - */ - public byte[] getContentBytes() { - return contentBytes; - } - - /** - * get the URI to accessible content (content and contentURI are mutually exlcusive) - * @return the content URI - */ - public String getContentUri() { - return contentUri; - } - - /** - * get the content type - * @return the content type - */ - public String getContentType() { - return contentType; - } - - /** - * get the {@code InputUnit} code - * @see InputUnit - * @return the {@code InputUnit} code - */ - public InputUnit getUnit() { - return unit; - } - - /** - * set the language code - * @param language the language code - */ - public void setLanguage(LanguageCode language) { - this.language = language; - } - /** - * set content to process (JSON string or base64 encoding of non-JSON string) - * @param content the content + * @return profile ID */ - public void setContent(String content) { - this.content = content; - } - - /** - * set the URI to accessible content (content and contentURI are mutually exlcusive) - * @param contentUri the content URI - */ - public void setContentUri(String contentUri) { - this.contentUri = contentUri; - } - - /** - * set the content as an array of bytes - * @param contentBytes the content as bytes - */ - public void setContentBytes(byte[] contentBytes) { - this.contentBytes = contentBytes; - } - - /** - * set the content type - * @param contentType the content type - */ - public void setContentType(String contentType) { - this.contentType = contentType; - } - - /** - * set the {@code InputUnit} code - * @see InputUnit - * @param unit the {@code InputUnit} code - */ - public void setUnit(InputUnit unit) { - this.unit = unit; - } - - @Override - public int hashCode() { - int result = language != null ? language.hashCode() : 0; - result = 31 * result + (content != null ? content.hashCode() : 0); - result = 31 * result + (contentUri != null ? contentUri.hashCode() : 0); - result = 31 * result + (contentBytes != null ? Arrays.hashCode(contentBytes) : 0); - result = 31 * result + (contentType != null ? contentType.hashCode() : 0); - result = 31 * result + (unit != null ? unit.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code Request}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Request)) { - return false; - } - - Request that = (Request) o; - return language != null ? language.equals(that.getLanguage()) : that.language == null - && content != null ? content.equals(that.getContent()) : that.content == null - && contentUri != null ? contentUri.equals(that.getContentUri()) : that.contentUri == null - && contentType != null ? contentType.equals(that.getContentType()) : that.contentType == null - && unit != null ? unit.equals(that.getUnit()) : that.unit == null - && contentBytes != null ? Arrays.equals(contentBytes, that.getContentBytes()) : that.contentBytes == null; - } + protected String profileId; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Response.java b/model/src/main/java/com/basistech/rosette/apimodel/Response.java index 3a5257a4d4..f15062f24b 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/Response.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/Response.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,68 +16,42 @@ package com.basistech.rosette.apimodel; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.HashMap; import java.util.Map; /** - * Rosette api response data base + * Base class for all responses. + * In this version, they have nothing in common. */ +@Getter +@EqualsAndHashCode public abstract class Response { - - private String requestId; - private Map timers; - - /** - * abstract constructor for {@code Response} - * @param requestId request id - */ - public Response(String requestId) { - this.requestId = requestId; - } - /** - * get the request id for tracking purposes - * @return the request id + * @return extended information */ - public String getRequestId() { - return requestId; - } + protected Map extendedInformation; /** - * get the debug timing info - * @return the debug timing info + * add more extended information to the response + * @param key + * @param value */ - public Map getTimers() { - return timers; - } - - /** - * set the timing info - * @param timers the timing info - */ - public void setTimers(Map timers) { - this.timers = timers; - } - - @Override - public int hashCode() { - int result = requestId != null ? requestId.hashCode() : 0; - result = 31 * result + (timers != null ? timers.hashCode() : 0); - return result; + public void addExtendedInformation(String key, Object value) { + if (extendedInformation == null) { + extendedInformation = new HashMap<>(); + } + extendedInformation.put(key, value); } - /** - * if the param is a response, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Response)) { - return false; + public void addExtendedInformation(Map extendedInformation) { + if (extendedInformation == null || extendedInformation.isEmpty()) { + return; + } + for (Map.Entry entry : extendedInformation.entrySet()) { + addExtendedInformation(entry.getKey(), entry.getValue()); } - - Response that = (Response) o; - return requestId != null ? requestId.equals(that.getRequestId()) : that.requestId == null - && timers != null ? timers.equals(that.getTimers()) : that.timers == null; } } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SchemesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SchemesResponse.java deleted file mode 100644 index c85ff14028..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/SchemesResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * Response data for schemes - */ -public final class SchemesResponse extends Response { - - private final List schemes; - - /** - * constructor for {@code SchemesResponse} - * @param requestId request id - * @param schemes list of schemes - */ - public SchemesResponse(String requestId, - List schemes) { - super(requestId); - this.schemes = schemes; - } - - /** - * get the list of schemes - * @return the list of schemes - */ - public List getSchemes() { - return schemes; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (schemes != null ? schemes.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code SchemesResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof SchemesResponse)) { - return false; - } - - SchemesResponse that = (SchemesResponse) o; - return super.equals(o) - && schemes != null ? schemes.equals(that.getSchemes()) : that.schemes == null; - } -} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/ScriptResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/ScriptResponse.java deleted file mode 100644 index dc061edb6d..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/ScriptResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * Response data model for scripts - */ -public final class ScriptResponse extends Response { - - private final List scripts; - - /** - * constructor for {@code ScriptResponse} - * @param requestId request id - * @param scripts list of scripts - */ - public ScriptResponse(String requestId, - List scripts) { - super(requestId); - this.scripts = scripts; - } - - /** - * get the list of scripts - * @return the list of scripts - */ - public List getScripts() { - return scripts; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (scripts != null ? scripts.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code ScriptResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof ScriptResponse)) { - return false; - } - - ScriptResponse that = (ScriptResponse) o; - return super.equals(o) - && scripts != null ? scripts.equals(that.getScripts()) : that.scripts == null; - } -} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SemanticVectorsOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/SemanticVectorsOptions.java new file mode 100644 index 0000000000..36162817bf --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SemanticVectorsOptions.java @@ -0,0 +1,40 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +/** + * Semantic Vectors options + */ +@Value +@Builder +@JacksonMixin +public class SemanticVectorsOptions extends Options { + + /** + * @return whether embeddings should be returned for each token in addition to the whole document + */ + private Boolean perToken; + + /** + * @return the generation of embeddings to use for all languages, defaulting to second generation embeddings unless + * the language supports first generation embeddings + */ + private EmbeddingsMode embeddingsMode; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SemanticVectorsResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SemanticVectorsResponse.java new file mode 100644 index 0000000000..dc046b682d --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SemanticVectorsResponse.java @@ -0,0 +1,49 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.List; + +/** + * Simple api response data model for semantic vectors + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SemanticVectorsResponse extends Response { + + /** + * @return the document embedding vector as a list + */ + private final List documentEmbedding; + + /** + * @return list of tokens, or {@code null} + */ + private final List tokens; + + /** + * @return list of per-token embeddings, 1:1 with tokens, or {@code null} + */ + private final List> tokenEmbeddings; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentenceWithDependencies.java b/model/src/main/java/com/basistech/rosette/apimodel/SentenceWithDependencies.java new file mode 100644 index 0000000000..d10f97ce9e --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SentenceWithDependencies.java @@ -0,0 +1,47 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +import java.util.List; + +/** + * Sentences with all extracted syntactical dependencies in it + */ +@Value +@Builder +@JacksonMixin +public class SentenceWithDependencies { + + /** + * @return start token index + */ + private final Integer startTokenIndex; + + /** + * @return end token index + */ + private final Integer endTokenIndex; + + /** + * @return list of syntactical dependencies + */ + private final List dependencies; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentencesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SentencesResponse.java index d6f7087b50..40e2038e11 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/SentencesResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/SentencesResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,55 +16,24 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + import java.util.List; /** * Simple api response data model for sentence determination requests */ -public final class SentencesResponse extends Response { - - private final List sentences; - - /** - * constructor for {@code SentencesResponse} - * @param requestId request id - * @param sentences list of sentences - */ - public SentencesResponse( - String requestId, - List sentences) { - super(requestId); - this.sentences = sentences; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SentencesResponse extends Response { /** - * get the list of sentences * @return the list of sentences */ - public List getSentences() { - return sentences; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (sentences != null ? sentences.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code SentencesResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof SentencesResponse)) { - return false; - } - - SentencesResponse that = (SentencesResponse) o; - return super.equals(o) - && sentences != null ? sentences.equals(that.getSentences()) : that.sentences == null; - } + private final List sentences; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/Sentiment.java b/model/src/main/java/com/basistech/rosette/apimodel/Sentiment.java deleted file mode 100644 index acc175548a..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/Sentiment.java +++ /dev/null @@ -1,96 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.List; - -/** - * Sentiment analyzer sentiment - */ -public final class Sentiment { - - private final String label; - private final Double confidence; - private final List explanations; - - /** - * constructor for {@code Sentiment} - * @param label sentiment label - * @param confidence confidence - * @param explanations list of explanations - */ - public Sentiment( - String label, - Double confidence, - List explanations) { - this.label = label; - this.confidence = confidence; - this.explanations = explanations; - } - - /** - * get the sentiment label - * @return the sentiment label - */ - public String getLabel() { - return label; - } - - /** - * get the confidence - * @return the confidence - */ - public Double getConfidence() { - return confidence; - } - - /** - * get the list of explanations contributing to determination of sentiment - * @return the list of explanations - */ - public List getExplanations() { - return explanations; - } - - @Override - public int hashCode() { - int result; - long temp; - result = label != null ? label.hashCode() : 0; - temp = Double.doubleToLongBits(confidence); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + (explanations != null ? explanations.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code Sentiment}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Sentiment)) { - return false; - } - - Sentiment that = (Sentiment) o; - return label != null ? label.equals(that.getLabel()) : that.label == null - && confidence.equals(that.getConfidence()) - && explanations != null ? explanations.equals(that.getExplanations()) : that.explanations == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentimentModel.java b/model/src/main/java/com/basistech/rosette/apimodel/SentimentModel.java deleted file mode 100644 index 415d916a60..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/SentimentModel.java +++ /dev/null @@ -1,76 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.EnumSet; - -/** - * Rosette API sentiment model - */ -public enum SentimentModel { - REVIEW("review"), - SHORT_STRING("short-string"); - - private String label; - - /** - * constructor for {@code SentimentModel} which sets a label for reference - */ - SentimentModel(String label) { - this.label = label; - } - - /** - * get the label - * @return the label - */ - public String getLabel() { - return label; - } - - /** - * set the label - * @param label the label - */ - public void setLabel(String label) { - this.label = label; - } - - /** - * checks if value is a valid {@code SentimentModel} enum - * @param value input value - * @return {@code SentimentModel corresponding to input value} - * @throws IllegalArgumentException invalid input string. - */ - public static SentimentModel forValue(String value) throws IllegalArgumentException { - for (SentimentModel model : EnumSet.allOf(SentimentModel.class)) { - if (model.getLabel().equalsIgnoreCase(value)) { - return model; - } - } - throw new IllegalArgumentException("invalid sentiment model: " + value); - } - - /** - * get the label - * @return the label - */ - public String toValue() { - return label; - } -} - diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentimentModelType.java b/model/src/main/java/com/basistech/rosette/apimodel/SentimentModelType.java new file mode 100644 index 0000000000..8f17220fb8 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SentimentModelType.java @@ -0,0 +1,57 @@ +/* + * Copyright 2017 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import java.util.EnumSet; + +/** + * A model type for sentiment analysis. + */ +public enum SentimentModelType { + SVM("svm"), + DNN("dnn"), + /**/; + + private final String label; + + SentimentModelType(final String label) { + this.label = label; + } + + /** + * Gets this model type's label. + * @return this model type's label + */ + public String getLabel() { + return label; + } + + /** + * Checks if a value is a valid {@code SentimentModelType} + * @param value an input value + * @return the {@code SentimentModelType} corresponding to the input value + * @throws IllegalArgumentException if the input string is invalid + */ + public static SentimentModelType forValue(final String value) throws IllegalArgumentException { + for (final SentimentModelType sentimentModelType : EnumSet.allOf(SentimentModelType.class)) { + if (sentimentModelType.label.equalsIgnoreCase(value)) { + return sentimentModelType; + } + } + throw new IllegalArgumentException("invalid sentiment model type: " + value); + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentimentOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/SentimentOptions.java index 8dfa8b3f60..0bdb0cb66c 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/SentimentOptions.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/SentimentOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,78 +16,36 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + /** - * Sentiment options + * Sentiment options. */ -public final class SentimentOptions { - - private SentimentModel model; - private Boolean explain; +@Value +@Builder +@JacksonMixin +public class SentimentOptions extends Options { - /** - * constructor for {@code SentimentOptions} - * @param model model to use for sentiment analysis - * @param explain whether to return explanation strings for the sentiment results returned - */ - public SentimentOptions( - SentimentModel model, - Boolean explain) { - this.model = model; - this.explain = explain; - } + public static final SentimentOptions DEFAULT = SentimentOptions.builder() + .calculateEntityConfidence(false) + .calculateEntitySalience(false) + .build(); /** - * get the model to use for sentiment analysis - * @return the model to use for sentiment analysis + * @return the calculateEntityConfidence flag. */ - public SentimentModel getModel() { - return model; - } + private final Boolean calculateEntityConfidence; /** - * get whether to return explanation strings for the sentiment results returned - * @return whether to return explanation strings for the sentiment results returned + * @return the calculateEntitySalience flag. */ - public Boolean getExplain() { - return explain; - } + private final Boolean calculateEntitySalience; - /** - * set the model to use for sentiment analysis - * @param model the model to use for sentiment analysis - */ - public void setModel(SentimentModel model) { - this.model = model; - } /** - * set whether to return explanation strings for the sentiment results returned - * @param explain whether to return explanation strings for the sentiment results returned + * @return the model type. */ - public void setExplain(Boolean explain) { - this.explain = explain; - } - - @Override - public int hashCode() { - int result = model != null ? model.hashCode() : 0; - result = 31 * result + (explain != null ? explain.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code SentimentOptions}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof SentimentOptions)) { - return false; - } - - SentimentOptions that = (SentimentOptions) o; - return model != null ? model.equals(that.getModel()) : that.model == null - && explain != null ? explain.equals(that.getExplain()) : that.explain == null; - } + private SentimentModelType modelType; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentimentRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/SentimentRequest.java deleted file mode 100644 index 660525253a..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/SentimentRequest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import com.basistech.util.LanguageCode; - -/** - * Class that represents the data from a sentiment analysis request - */ -public final class SentimentRequest extends Request { - - private SentimentOptions options; - - /** - * constructor for {@code SentimentRequest} - * @param language language code - * @param content raw data - * @param contentUri uri pointing to the data - * @param contentType byte array of data - * @param unit input unit code - * @param options sentiment options - */ - public SentimentRequest( - LanguageCode language, - String content, - String contentUri, - String contentType, - InputUnit unit, - SentimentOptions options - ) { - super(language, content, contentUri, contentType, unit); - this.options = options; - } - - /** - * get the sentiment options - * @return the sentiment options - */ - public SentimentOptions getOptions() { - return options; - } - - /** - * set the sentiment options - * @param options the sentiment options - */ - public void setOptions(SentimentOptions options) { - this.options = options; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (options != null ? options.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code SentimentRequest}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof SentimentRequest)) { - return false; - } - - SentimentRequest that = (SentimentRequest) o; - return super.equals(o) - && options != null ? options.equals(that.getOptions()) : that.options == null; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SentimentResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SentimentResponse.java index 8ba75ca263..c070bce1da 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/SentimentResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/SentimentResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,54 +16,29 @@ package com.basistech.rosette.apimodel; -import java.util.List; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.Collection; /** - * Simple api response data model for sentiment analysis + * Information returned from the sentiment endpoint. **/ -public final class SentimentResponse extends Response { - - private final List sentiment; - - /** - * constructor for {@code SentimentResponse} - * @param requestId request id - * @param sentiment list of sentiment analysis results - */ - public SentimentResponse(String requestId, - List sentiment) { - super(requestId); - this.sentiment = sentiment; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SentimentResponse extends Response { /** - * get the list of sentiment analysis results - * @return the list of sentiment analysis results + * @return the whole-document sentiment. */ - public List getSentiment() { - return sentiment; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (sentiment != null ? sentiment.hashCode() : 0); - return result; - } + private final Label document; /** - * if the param is a {@code SentimentResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object + * @return the information for individual entities. */ - @Override - public boolean equals(Object o) { - if (!(o instanceof SentimentResponse)) { - return false; - } - - SentimentResponse that = (SentimentResponse) o; - return super.equals(o) - && sentiment != null ? sentiment.equals(that.getSentiment()) : that.sentiment == null; - } + private final Collection entities; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SimilarTerm.java b/model/src/main/java/com/basistech/rosette/apimodel/SimilarTerm.java new file mode 100644 index 0000000000..7bee8d6845 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SimilarTerm.java @@ -0,0 +1,37 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +@Value +@Builder +@JacksonMixin +public class SimilarTerm { + + /** + * @return the term + */ + private final String term; + + /** + * @return the similarity of the term to the query term + */ + private final Double similarity; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SimilarTermsOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/SimilarTermsOptions.java new file mode 100644 index 0000000000..f7baf2005d --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SimilarTermsOptions.java @@ -0,0 +1,51 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Value; + +import java.util.List; + +/** + * Similar terms options + */ +@Value +@Builder +@JacksonMixin +public class SimilarTermsOptions extends Options { + + /** + * The List of languages to find similar terms in + * @return the list of specified result languages + */ + private final List resultLanguages; + + /** + * The number of similar terms to return for each specified language + * @return the number of similar terms requested + */ + private final Integer count; + + /** + * @return the generation of embeddings to use for all languages, defaulting to second generation embeddings unless + * the language supports first generation embeddings + */ + private EmbeddingsMode embeddingsMode; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SimilarTermsResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SimilarTermsResponse.java new file mode 100644 index 0000000000..82289f4df5 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SimilarTermsResponse.java @@ -0,0 +1,41 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.List; +import java.util.Map; + +/** + * simple api response format for similar terms + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SimilarTermsResponse extends Response { + + /** + * @return a mapping of language codes to similar terms + */ + private final Map> similarTerms; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguage.java b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguage.java new file mode 100644 index 0000000000..a8a934beea --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguage.java @@ -0,0 +1,54 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; +import lombok.Value; +import lombok.experimental.NonFinal; +import lombok.extern.jackson.Jacksonized; + +/** + * Supported language/script + */ +@Value +@Builder +@Jacksonized +@JacksonMixin +public class SupportedLanguage { + /** + * @return the language code + */ + private final LanguageCode language; + + /** + * @return the script code + */ + private final ISO15924 script; + + /** + * @return if this language is licensed or not + */ + @NonFinal + @Getter + @Setter + private Boolean licensed; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagePair.java b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagePair.java new file mode 100644 index 0000000000..ce8bdb7e32 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagePair.java @@ -0,0 +1,53 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.util.TextDomain; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; +import lombok.Value; +import lombok.experimental.NonFinal; +import lombok.extern.jackson.Jacksonized; + +/** + * Supported language/script/scheme pairs + */ +@Value +@Builder +@Jacksonized +@JacksonMixin +public class SupportedLanguagePair { + /** + * @return the source TextDomain + */ + private final TextDomain source; + + /** + * @return the target TextDomain + */ + private final TextDomain target; + + /** + * @return if this language pair is licensed or not + */ + @NonFinal + @Getter + @Setter + private Boolean licensed; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagePairsResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagePairsResponse.java new file mode 100644 index 0000000000..94d0278b4f --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagePairsResponse.java @@ -0,0 +1,39 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; + +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.Set; + +/** + * Supported language/script/scheme pairs for name-translation and name-similarity endpoints + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SupportedLanguagePairsResponse extends Response { + /** + * @return the set of supported language pairs + */ + private final Set supportedLanguagePairs; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagesResponse.java new file mode 100644 index 0000000000..152ac7c1b8 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SupportedLanguagesResponse.java @@ -0,0 +1,38 @@ +/* + * Copyright 2018 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.Set; + +/** + * Supported languages/scripts for a given endpoint + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SupportedLanguagesResponse extends Response { + /** + * @return the set of supported languages/scripts + */ + private final Set supportedLanguages; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/SyntaxDependenciesResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/SyntaxDependenciesResponse.java new file mode 100644 index 0000000000..fafe4a664a --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/SyntaxDependenciesResponse.java @@ -0,0 +1,44 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.List; + +/** + * All syntactical dependencies extracted from the document + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class SyntaxDependenciesResponse extends Response { + + /** + * @return list of sentences with syntactical dependencies + */ + private final List sentences; + + /** + * @return list of tokens in the document + */ + private final List tokens; +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/TextEmbeddingOptions.java similarity index 55% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/TextEmbeddingOptions.java index d19232b9fd..035eba4fce 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/TextEmbeddingOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2018 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,13 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.basistech.rosette.apimodel; -package com.basistech.rosette.apimodel.jackson; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +/** + * Text embedding options + */ +@Value +@Builder +@JacksonMixin +public class TextEmbeddingOptions extends Options { + + /** + * @return whether embeddings should be returned for each token in addition to the whole document + */ + private Boolean perToken; -@JsonSerialize(using = AccuracyModeSerializer.class, keyUsing = AccuracyModeSerializer.class) -@JsonDeserialize(using = AccuracyModeDeserializer.class) -public class AccuracyModeMixin extends BaseMixin { } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/TextEmbeddingResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/TextEmbeddingResponse.java new file mode 100644 index 0000000000..6fb8f1d0f8 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/TextEmbeddingResponse.java @@ -0,0 +1,49 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.List; + +/** + * Simple api response data model for text embedding + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class TextEmbeddingResponse extends Response { + + /** + * @return the document embedding vector as a list + */ + private final List documentEmbedding; + + /** + * @return list of tokens, or {@code null} + */ + private final List tokens; + + /** + * @return list of per-token embeddings, 1:1 with tokens, or {@code null} + */ + private final List> tokenEmbeddings; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/TokensResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/TokensResponse.java index 0371f94b5f..50a81d9735 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/TokensResponse.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/TokensResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,56 +16,24 @@ package com.basistech.rosette.apimodel; -import java.util.List; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import java.util.List; /** * Simple api response data model for tokenization requests */ -public final class TokensResponse extends Response { - - private final List tokens; - - /** - * constructor for {@code TokensResponse} - * @param requestId request id - * @param tokens list of tokens - */ - public TokensResponse( - String requestId, - List tokens) { - super(requestId); - this.tokens = tokens; - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class TokensResponse extends Response { /** - * get the list of tokens * @return the list of tokens */ - public List getTokens() { - return tokens; - } - - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (tokens != null ? tokens.hashCode() : 0); - return result; - } - - /** - * if the param is a {@code TokensResponse}, compare contents for equality - * @param o the object - * @return whether or not the param object is equal to this object - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof TokensResponse)) { - return false; - } - - TokensResponse that = (TokensResponse) o; - return super.equals(o) - && tokens != null ? tokens.equals(that.getTokens()) : that.tokens == null; - } + private final List tokens; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/TopicsOptions.java b/model/src/main/java/com/basistech/rosette/apimodel/TopicsOptions.java new file mode 100644 index 0000000000..04ad10f96f --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/TopicsOptions.java @@ -0,0 +1,46 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; + +/** + * Options for topics requests + */ +@Value +@Builder +@JacksonMixin +public class TopicsOptions extends Options { + + /** + * @return concept salience threshold (0.0-1.0) + */ + @DecimalMin("0.0") + @DecimalMax("1.0") + private final Double conceptSalienceThreshold; + + /** + * @return key phrase salience threshold (0.0-1.0) + */ + @DecimalMin("0.0") + @DecimalMax("1.0") + private final Double keyphraseSalienceThreshold; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/TopicsResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/TopicsResponse.java new file mode 100644 index 0000000000..b5e09c8da0 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/TopicsResponse.java @@ -0,0 +1,44 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.basistech.rosette.apimodel; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.util.List; + +/** + * Simple api response data model for entity extraction + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class TopicsResponse extends Response { + + /** + * @return the list of extracted keyphrases + */ + private final List keyphrases; + + /** + * @return the list of extracted concepts + */ + private final List concepts; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/CategoryTaxonomy.java b/model/src/main/java/com/basistech/rosette/apimodel/TransliterationOptions.java similarity index 63% rename from model/src/main/java/com/basistech/rosette/apimodel/CategoryTaxonomy.java rename to model/src/main/java/com/basistech/rosette/apimodel/TransliterationOptions.java index b17a583142..93162cdb92 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/CategoryTaxonomy.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/TransliterationOptions.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,17 +16,20 @@ package com.basistech.rosette.apimodel; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + /** - * Categorization Taxonomy + * Options for transliteration requests */ -public final class CategoryTaxonomy { +@Value +@Builder +@JacksonMixin +public class TransliterationOptions extends Options { + /** - * Use categories from IAB Quality Assurance Guidelines (QAG) Taxonomy + * @return whether to do reverse transliteration */ - public static final String QAG = "QAG"; - - private CategoryTaxonomy() { - // - } - + private final Boolean reversed; } diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SchemeResponseMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/TransliterationResponse.java similarity index 53% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/SchemeResponseMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/TransliterationResponse.java index bd779db440..9212372260 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/SchemeResponseMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/TransliterationResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2017 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,19 +14,24 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; -import java.util.List; +/** + * Simple API response data model for transliteration. + */ +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public class TransliterationResponse extends Response { -public class SchemeResponseMixin extends BaseMixin { - @JsonCreator - public SchemeResponseMixin( - @JsonProperty("requestId") String requestId, - @JsonProperty("scripts") List schemes - ) { - // - } + /** + * @return the transliteration + */ + private final String transliteration; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/TransliterationScheme.java b/model/src/main/java/com/basistech/rosette/apimodel/TransliterationScheme.java deleted file mode 100644 index c572da7095..0000000000 --- a/model/src/main/java/com/basistech/rosette/apimodel/TransliterationScheme.java +++ /dev/null @@ -1,416 +0,0 @@ -/* -* Copyright 2014 Basis Technology Corp. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.basistech.rosette.apimodel; - -import java.util.HashMap; - -/** - * Named constants for the numeric codes for BT_Xlit_Scheme. - * NOTE: see the documentation of specific Basis products to see which schemes they support. - */ -public enum TransliterationScheme { - //CHECKSTYLE:OFF - /** xlit scheme code for FBIS - description: US Foreign Broadcast Information Service */ - FBIS (0, "fbis", "FBIS", - "US Foreign Broadcast Information Service"), - - /** xlit scheme code for BGN - description: US Board on Geographic Names */ - BGN (1, "bgn", "BGN", - "US Board on Geographic Names"), - - /** xlit scheme code for Basis - description: Basis Technology Corp. */ - BASIS (2, "basis", "Basis", - "Basis Technology Corp."), - - /** xlit scheme code for IC - description: US Intelligence Community */ - IC (3, "ic", "IC", - "US Intelligence Community"), - - /** xlit scheme code for SATTS - description: Standard Arabic Technical Transliteration System */ - SATTS (4, "satts", "SATTS", - "Standard Arabic Technical Transliteration System"), - - /** xlit scheme code for Buckwalter - description: Tim Buckwalter/Qamus */ - BUCKWALTER (5, "buckwalter", "Buckwalter", - "Tim Buckwalter/Qamus"), - - /** xlit scheme code for UNRSGN - description: United Nations Romanization System for Geographic Names */ - UNRSGN (6, "unrsgn", "UNRSGN", - "United Nations Romanization System for Geographic Names"), - - /** xlit scheme code for Library of Congress - description: American Library Association/Library of Congress Transliteration */ - ALA_LC (7, "ala_lc", "Library of Congress", - "American Library Association/Library of Congress Transliteration"), - - /** xlit scheme code for I.G.N. System 1973 - description: Also called Variant B of the Amended Beirut System */ - IGN (8, "ign", "I.G.N. System 1973", - "Also called Variant B of the Amended Beirut System"), - - /** xlit scheme code for Royal Jordanian Geographic Centre System - description: Essentially the same as the amended Beirut system. The sub-macron is used instead of the cedilla. */ - RJGC (9, "rjgc", "Royal Jordanian Geographic Centre System", - "Essentially the same as the amended Beirut system. The sub-macron is used instead of the cedilla."), - - /** xlit scheme code for ISO 233:1984 - description: Gives every character and diacritical mark a unique equivalent. */ - ISO233_1984 (10, "iso233_1984", "ISO 233:1984", - "Gives every character and diacritical mark a unique equivalent."), - - /** xlit scheme code for Survey of Egypt System - description: Survey of Egypt System. */ - SES (11, "ses", "Survey of Egypt System", - "Survey of Egypt System."), - - /** xlit scheme code for Deutsche Morgenlandishe Gesellschaft - description: */ - DMG (12, "dmg", "Deutsche Morgenlandishe Gesellschaft", - ""), - - /** xlit scheme code for Encyclopedia of Islam - description: */ - EI (13, "ei", "Encyclopedia of Islam", - ""), - - /** xlit scheme code for Kohanimeandmebaas - description: */ - KNAB (14, "knab", "Kohanimeandmebaas", - ""), - - /** xlit scheme code for Allworth - description: */ - ALLWORTH (15, "allworth", "Allworth", - ""), - - /** xlit scheme code for ISO 9:1995 - description: */ - ISO9_1995 (16, "iso9_1995", "ISO 9:1995", - ""), - - /** xlit scheme code for The World's Writing Systems - description: */ - WWS (17, "wws", "The World's Writing Systems", - ""), - - /** xlit scheme code for JDEC - Afghanistan - description: Joint Document Exploitation Center - Afghanistan */ - JDEC_AF (18, "jdec_af", "JDEC - Afghanistan", - "Joint Document Exploitation Center - Afghanistan"), - - /** xlit scheme code for MELTS - description: Middle East Languages Transliteration Standard */ - MELTS (19, "melts", "MELTS", - "Middle East Languages Transliteration Standard"), - - /** xlit scheme code for ISO 233-2:1993 - description: Establishes a simplified system vs the stringent rules established by ISO 233:1984 for Arabic. */ - ISO233_2_1993 (20, "iso233_2_1993", "ISO 233-2:1993", - "Establishes a simplified system vs the stringent rules established by ISO 233:1984 for Arabic."), - - /** xlit scheme code for ISO 233-3:1999 - description: ISO 233 Part 3, for Persian */ - ISO233_3_1999 (21, "iso233_3_1999", "ISO 233-3:1999", - "ISO 233 Part 3, for Persian"), - - /** xlit scheme code for ASCII-limited Transliteration Scheme used in Wikipedia - description: ASCII restricted; possibly a variation on more formal transliteration schemes. */ - WIKIPEDIA_ASCII (22, "wikipedia_ascii", "ASCII-limited Transliteration Scheme used in Wikipedia", - "ASCII restricted; possibly a variation on more formal transliteration schemes."), - - /** xlit scheme code for ASCII subset of Latin Script - description: Custom scheme to Basis for transliterating characters using a broader portion of the Latin Script to solely ASCII, based on removing diacritics and using the closest letter visually. */ - ASCII (99, "ascii", "ASCII subset of Latin Script", - "Custom scheme to Basis for transliterating characters using a broader portion of the Latin Script to solely ASCII, based on removing diacritics and using the closest letter visually."), - - /** xlit scheme code for IC (+BGN for places) - description: IC for everything but places, BGN for those */ - IC_BGN (100, "ic_bgn", "IC (+BGN for places)", - "IC for everything but places, BGN for those"), - - /** xlit scheme code for Undiacritized BGN - description: US Board on Geographic Names - diacritics removed */ - UND_BGN (101, "und_bgn", "Undiacritized BGN", - "US Board on Geographic Names - diacritics removed"), - - /** xlit scheme code for Extended IC - description: US Intelligence Community - extended */ - EXT_IC (102, "ext_ic", "Extended IC", - "US Intelligence Community - extended"), - - /** xlit scheme code for Basis Diacritization - description: Diacritization according to a private-use standard by Basis Technology Corp. */ - BASIS_DIA (199, "basis_dia", "Basis Diacritization", - "Diacritization according to a private-use standard by Basis Technology Corp."), - - /** xlit scheme code for KORDA - description: Korean Romanization for Data Applications */ - KORDA (200, "korda", "KORDA", - "Korean Romanization for Data Applications"), - - /** xlit scheme code for Morse - description: Morse */ - MORSE (201, "morse", "Morse", - "Morse"), - - /** xlit scheme code for Yale - description: Yale */ - YALE (202, "yale", "Yale", - "Yale"), - - /** xlit scheme code for McCune-Reischauer - description: McCune-Reischauer */ - MCR (203, "mcr", "McCune-Reischauer", - "McCune-Reischauer"), - - /** xlit scheme code for Lukoff - description: Lukoff */ - LUKOFF (204, "lukoff", "Lukoff", - "Lukoff"), - - /** xlit scheme code for 2959-SK - description: 2959-SK, Developed by South Korea's Ministry of Education */ - SK (205, "sk", "2959-SK", - "2959-SK, Developed by South Korea's Ministry of Education"), - - /** xlit scheme code for Joseon Gwahagwon - description: Joseon Gwahagwon */ - JG (206, "jg", "Joseon Gwahagwon", - "Joseon Gwahagwon"), - - /** xlit scheme code for Revised Romanization of Korean - description: 2000 Revised Romanization of Korean by Ministry of Culture and Tourism */ - MOCT (207, "moct", "Revised Romanization of Korean", - "2000 Revised Romanization of Korean by Ministry of Culture and Tourism"), - - /** xlit scheme code for Pinyin - description: Hanyu Pinyin (without tone annotations) */ - HYPY (300, "hypy", "Pinyin", - "Hanyu Pinyin (without tone annotations)"), - - /** xlit scheme code for Hanyu Pinyin Toned - description: Hanyu Pinyin with tone annotations */ - HYPY_TONED (301, "hypy_toned", "Hanyu Pinyin Toned", - "Hanyu Pinyin with tone annotations"), - - /** xlit scheme code for Wade-Giles - description: Wade-Giles */ - WADE_GILES (302, "wade_giles", "Wade-Giles", - "Wade-Giles"), - - /** xlit scheme code for Tongyong Pinyin - description: Tongyong Pinyin (without tone annotations) */ - TYPY (303, "typy", "Tongyong Pinyin", - "Tongyong Pinyin (without tone annotations)"), - - /** xlit scheme code for Tongyong Pinyin Toned - description: Tongyong Pinyin with tone annotations */ - TYPY_TONED (304, "typy_toned", "Tongyong Pinyin Toned", - "Tongyong Pinyin with tone annotations"), - - /** xlit scheme code for Zongwen (Tibetan) Pinyin - description: Zongwen (Tibetan) Pinyin */ - ZWPY (305, "zwpy", "Zongwen (Tibetan) Pinyin", - "Zongwen (Tibetan) Pinyin"), - - /** xlit scheme code for Cantonese Pinyin - description: Standard Cantonese Pinyin */ - CTPY (306, "ctpy", "Cantonese Pinyin", - "Standard Cantonese Pinyin"), - - /** xlit scheme code for POJ - description: Peh-oe-ji (POJ) */ - POJ (307, "poj", "POJ", - "Peh-oe-ji (POJ)"), - - /** xlit scheme code for Guangdong Romanization - description: Guangdong Romanization */ - GAUNGDONG (308, "gaungdong", "Guangdong Romanization", - "Guangdong Romanization"), - - /** xlit scheme code for Chinese Telegraph Code - description: Chinese Telegraph Code */ - CTC (309, "ctc", "Chinese Telegraph Code", - "Chinese Telegraph Code"), - - /** xlit scheme code for ISO :11940 - description: Romanization of the Thai */ - ISO_11940 (310, "iso_11940", "ISO :11940", - "Romanization of the Thai"), - - /** xlit scheme code for Hebon Romaji - description: Hebon-shiki Romaji (or Hepburn) scheme for Japanese */ - HEBON (400, "hebon", "Hebon Romaji", - "Hebon-shiki Romaji (or Hepburn) scheme for Japanese"), - - /** xlit scheme code for Kunrei-shiki Romaji - description: Kunrei-shiki Romaji scheme for Japanese */ - KUNREI (401, "kunrei", "Kunrei-shiki Romaji", - "Kunrei-shiki Romaji scheme for Japanese"), - - /** xlit scheme code for ISCII - description: Indian Script Code for Information Interchange */ - ISCII (500, "iscii", "ISCII", - "Indian Script Code for Information Interchange"), - - /** xlit scheme code for PASCII - description: Perso-Arabic Script Code for Information Interchange */ - PASCII (501, "pascii", "PASCII", - "Perso-Arabic Script Code for Information Interchange"), - - /** xlit scheme code for ArabTeX - description: */ - ARABTEX (502, "arabtex", "ArabTeX", - ""), - - /** xlit scheme code for Linguistic Survey of India - description: */ - LSI (503, "lsi", "Linguistic Survey of India", - ""), - - /** xlit scheme code for National Cartography Center (NCC) of Iran - description: The Transliteration/Transcription system of the National Cartography Center (NCC) of Iran. */ - NCC (600, "ncc", "National Cartography Center (NCC) of Iran", - "The Transliteration/Transcription system of the National Cartography Center (NCC) of Iran."), - - /** xlit scheme code for Folk - description: Folk */ - FOLK (1997, "folk", "Folk", - "Folk"), - - /** xlit scheme code for Unknown - description: Unknown */ - UNKNOWN (1998, "unknown", "Unknown", - "Unknown"), - - /** xlit scheme code for Native - description: Native */ - NATIVE (1999, "native", "Native", - "Native"); - - private final int BT_Xlit_Scheme; - private final String name; - private final String presentationName; - private final String description; - - - /* - * We employ a variation of "Initialization on demand holder" idiom - * http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom - * to implement lazy initialization of the two HashMaps we use. - * The following two small private static classes are for this trick. - */ - private static class CatalogByBTXlitScheme{ - private static final HashMap it; - static{ - it = new HashMap(); - for (TransliterationScheme t : values()) { - it.put(t.BT_Xlit_Scheme, t); - } - } - } - - private static class CatalogByName{ - private static HashMap it; - static{ - it = new HashMap(); - for (TransliterationScheme t : values()) { - it.put(t.name, t); - } - } - } - - private TransliterationScheme(int BT_Xlit_Scheme, String name, String presentationName, - String description){ - this.BT_Xlit_Scheme = BT_Xlit_Scheme; - this.name = name; - this.presentationName = presentationName; - this.description = description; - } - - // want these to not be in the .tpl - // might like these next few to only be Basis accessible (how?) - /** - * Retrieves a static TranslitearationScheme object of the given id. - * @param BT_Xlit_Scheme numeric id of the scheme to get. - * @return TransliterationScheme object corresponding to the param. - */ - public static TransliterationScheme getObjectByBT_Xlit_Scheme(int BT_Xlit_Scheme) { - - TransliterationScheme ts = CatalogByBTXlitScheme.it.get(BT_Xlit_Scheme); - if(ts == null) - throw new IllegalArgumentException("Unknown BT_Xlit_Scheme code: "+BT_Xlit_Scheme); - return ts; - } - - static TransliterationScheme lookupByNativeCode(int nativeCode) { - return getObjectByBT_Xlit_Scheme(nativeCode); - } - - /** - * Returns the numeric code (C++ BT_Xlit_Scheme) for this transliteration scheme. - * @return Numeric code - **/ - - public int getNativeCode() { - return BT_Xlit_Scheme; - } - - /** - * Retrieves a static TransliterationScheme object of the given name. - * @param name Name of the scheme to retrieve. - * @return TransliterationScheme object corresponding to the param. - */ - public static TransliterationScheme getObjectByName(String name) { - - TransliterationScheme ts = CatalogByName.it.get(name); - if(ts == null) - throw new IllegalArgumentException("Unknown TransliterationScheme name: "+name); - return ts; - } - - /** - * Gets the internally recognized name, such as what might be passed into NameTranslator.translateName or would be used to create a new TransliterationScheme - * @return Internal name for the transliteration scheme - */ - public String getName(){ - return name; - } - - /** - * Gets the name as should be presented visibly to a user - * @return Transliteration scheme as should be viewed on a form or in output - */ - public String getPresentationName(){ - return presentationName; - } - - /** - * Gets the description of the transliteration scheme, which generally would be displayed, for example, on a form when a particular scheme is chosen from a dropdown box - * @return Short description of this particular scheme - */ - public String getDescription(){ - return description; - } -} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/UnfieldedAddress.java b/model/src/main/java/com/basistech/rosette/apimodel/UnfieldedAddress.java new file mode 100644 index 0000000000..e2be3e2bd8 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/UnfieldedAddress.java @@ -0,0 +1,39 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import lombok.Builder; +import lombok.Value; + +@Value +@Builder +public class UnfieldedAddress implements IAddress { + + /** + * return the address + */ + String address; + + public UnfieldedAddress(String address) { + this.address = address; + } + + @Override + public boolean fielded() { + return false; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchRequest.java new file mode 100644 index 0000000000..2546ffa0da --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchRequest.java @@ -0,0 +1,107 @@ +/* +* Copyright 2024 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel.batch; + +import com.basistech.rosette.annotations.JacksonMixin; +import lombok.Builder; +import lombok.Value; + +import java.util.List; +import java.util.UUID; + +/** + * Define a batch job. Serialize this object to json to create a file + * that requests a job. + */ +@Value +@Builder +@JacksonMixin +public final class BatchRequest { + + /** + * + * @return id an ID string. + */ + @Builder.Default + private final String batchId = UUID.randomUUID().toString(); + + /** + * A URL for Analytics API to call to inform you the completion of the batch. + * It must be accessible on the Internet and can only be http: or https:. + * Analytics API will use the GET method so optional parameters need to be + * included as query parameters in the URL. + * + * @return completionCallbackUrl a URL for Analytics API to call when batch completes + */ + private final String completionCallbackUrl; + + /** + * @return list of batch request items + */ + private final List items; + + /** + * Specifies where the results should be stored. Only a valid AWS S3 URL + * is supported at this time. The S3 bucket needs to have a proper policy + * statement to grant read/write permission to Analytics API within the batch + * processing time window. Analytics API's AWS account number is 625892746452. + * + * Example policy statement: + * + *
+     *     
+     *         {
+     *            "Version": "2012-10-17",
+     *            "Id": "Policy1462373421611",
+     *            "Statement": [
+     *                {
+     *                    "Sid": "Stmt1462373415064",
+     *                    "Effect": "Allow",
+     *                    "Principal": {
+     *                        "AWS": "arn:aws:iam::625892746452:root"
+     *                    },
+     *                    "Action": "s3:ListBucket",
+     *                    "Resource": "arn:aws:s3:::your-bucket-name",
+     *                    "Condition": {
+     *                        "StringLike": {
+     *                           "s3:prefix": [
+     *                               "output-folder-name/*"
+     *                           ]
+     *                        }
+     *                    }
+     *                },
+     *                {
+     *                    "Sid": "Stmt1462373415064",
+     *                    "Effect": "Allow",
+     *                    "Principal": {
+     *                        "AWS": "arn:aws:iam::625892746452:root"
+     *                    },
+     *                    "Action": [
+     *                        "s3:GetObject",
+     *                        "s3:PutObject",
+     *                        "s3:DeleteObject"
+     *                    ],
+     *                    "Resource": "arn:aws:s3:::your-bucket-name/output-folder-name/*"
+     *                }
+     *            ]
+     *        }
+     *     
+     * 
+ * + * @return batchOutputUrl AWS S3 URL where results will be saved + */ + private final String batchOutputUrl; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchRequestItem.java b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchRequestItem.java new file mode 100644 index 0000000000..ba28f6fbd6 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchRequestItem.java @@ -0,0 +1,40 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel.batch; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.rosette.apimodel.Request; +import lombok.Builder; +import lombok.Value; + +/** + * One item in a batch request. Each item consists of an input + * to process and an endpoint to apply to the item. + * The inputs are specified by {@link Request} objects. + * If the request type is {@link com.basistech.rosette.apimodel.DocumentRequest}, the special content type + * {@code application/vnd.basistech-multiple-inputs} + * used in {@link com.basistech.rosette.apimodel.DocumentRequest#contentType} identifies + * a json file consisting of an array of strings; each string being treated as an + * input. The string length in this case is limited to 200 characters. + */ +@Value +@Builder +@JacksonMixin +public class BatchRequestItem { + private final String endpoint; + private final Request request; + private final String id; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchResponse.java new file mode 100644 index 0000000000..c06fd5ab06 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchResponse.java @@ -0,0 +1,35 @@ +/* +* Copyright 2017 Basis Technology Corp. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.basistech.rosette.apimodel.batch; + +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.rosette.apimodel.Response; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public final class BatchResponse extends Response { + // batch id + private final String id; + // URL where the batch results will be stored + private final String batchOutputUrl; + // progress checking endpoint/url + private final String batchCheckProgressUrl; +} diff --git a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryOptionsMixin.java b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchStatusResponse.java similarity index 52% rename from json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryOptionsMixin.java rename to model/src/main/java/com/basistech/rosette/apimodel/batch/BatchStatusResponse.java index c7cc8eec5b..720b9e8d7c 100644 --- a/json/src/main/java/com/basistech/rosette/apimodel/jackson/CategoryOptionsMixin.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/batch/BatchStatusResponse.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2016 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,18 +14,21 @@ * limitations under the License. */ -package com.basistech.rosette.apimodel.jackson; +package com.basistech.rosette.apimodel.batch; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.basistech.rosette.annotations.JacksonMixin; +import com.basistech.rosette.apimodel.Response; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; -public final class CategoryOptionsMixin extends BaseMixin { - @JsonCreator - private CategoryOptionsMixin( - @JsonProperty("model") String model, - @JsonProperty("explain") Boolean explain, - @JsonProperty("numCategories") Integer numCategories - ) { - // - } +@Getter +@EqualsAndHashCode +@Builder +@JacksonMixin +public final class BatchStatusResponse extends Response { + // batch batchId + private final String batchId; + // whether the job is in progress + private final float progress; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/lombok.config b/model/src/main/java/com/basistech/rosette/apimodel/lombok.config new file mode 100644 index 0000000000..ea9e660d64 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/lombok.config @@ -0,0 +1 @@ +lombok.equalsAndHashCode.callSuper = call diff --git a/model/src/main/java/com/basistech/rosette/apimodel/package-info.java b/model/src/main/java/com/basistech/rosette/apimodel/package-info.java index d66c10da7b..a755e02ec7 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/package-info.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/package-info.java @@ -1,5 +1,5 @@ /* -* Copyright 2014 Basis Technology Corp. +* Copyright 2024 Basis Technology Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,6 @@ /** * The classes in this package make up the data model for simple requests - * and responses to the Rosette API. + * and responses to the Analytics API. */ package com.basistech.rosette.apimodel; diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java new file mode 100644 index 0000000000..b4ebc0f90a --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java @@ -0,0 +1,35 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Builder; +import lombok.Value; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Jacksonized +@Value +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityExplainInfo { + Map scoredFields; + List leftOnlyFields; + List rightOnlyFields; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldExplainInfo.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldExplainInfo.java new file mode 100644 index 0000000000..462098fbf2 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldExplainInfo.java @@ -0,0 +1,35 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.JsonNode; +import lombok.Builder; +import lombok.Value; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Jacksonized +@Value +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityFieldExplainInfo { + double weight; + double calculatedWeight; + double rawScore; + double finalScore; + JsonNode details; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java new file mode 100644 index 0000000000..8f36726136 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java @@ -0,0 +1,38 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import com.fasterxml.jackson.annotation.JsonInclude; +import jakarta.validation.Valid; +import lombok.Builder; +import lombok.Value; +import lombok.extern.jackson.Jacksonized; + +import jakarta.validation.constraints.NotNull; + +@Jacksonized +@Builder +@Value +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityFieldInfo { + @NotNull @Valid String type; + Double weight; + /** + * the score that this field should return if the field is null in a record + */ + Double scoreIfNull; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java new file mode 100644 index 0000000000..6c9fb1a64c --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java @@ -0,0 +1,36 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonInclude; +import jakarta.validation.Valid; +import lombok.Builder; +import lombok.Value; +import lombok.extern.jackson.Jacksonized; + +@Jacksonized +@Builder +@Value +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityProperties { + @Valid Double threshold; + @Valid Boolean includeExplainInfo; + @Valid Map parameters; + @Valid String parameterUniverse; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityRecords.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityRecords.java new file mode 100644 index 0000000000..64678225b9 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityRecords.java @@ -0,0 +1,34 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import java.util.List; +import java.util.Map; +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordSimilarityField; + +import jakarta.validation.Valid; +import lombok.Builder; +import lombok.Value; + +import jakarta.validation.constraints.NotEmpty; + +@Builder +@Value +public class RecordSimilarityRecords { + @NotEmpty @Valid List> left; + @NotEmpty @Valid List> right; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityRequest.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityRequest.java new file mode 100644 index 0000000000..34511c3776 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityRequest.java @@ -0,0 +1,45 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import com.basistech.rosette.apimodel.Request; +import com.fasterxml.jackson.annotation.JsonInclude; +import jakarta.validation.Valid; +import lombok.Value; +import lombok.Builder; + +import jakarta.validation.constraints.NotNull; +import java.util.Map; + +@Value +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityRequest extends Request { + @Valid Map fields; + @Valid RecordSimilarityProperties properties; + @NotNull @Valid RecordSimilarityRecords records; + + @Builder // workaround for inheritance https://github.com/rzwitserloot/lombok/issues/853 + public RecordSimilarityRequest(String profileId, + Map fields, + RecordSimilarityProperties properties, + RecordSimilarityRecords records) { + super(profileId); + this.fields = fields; + this.properties = properties; + this.records = records; + } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponse.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponse.java new file mode 100644 index 0000000000..4bd89043e3 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponse.java @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Builder; +import lombok.Value; + +import com.basistech.rosette.apimodel.Response; + +import jakarta.validation.Valid; + +/** + * Response data model for comparison of two records. + */ +@Value +@Builder +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityResponse extends Response { + /** + * @return list of record match results + */ + @Valid List results; + + /** + * @return info messages to user, that could hold additional information about the results + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + @Valid List info; + + /** + * @return error message to user in case no results matched the threshold + */ + @Valid String errorMessage; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResult.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResult.java new file mode 100644 index 0000000000..136a80e733 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResult.java @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Value; +import lombok.experimental.SuperBuilder; + +import com.basistech.rosette.apimodel.recordsimilarity.records.RecordSimilarityField; + +@Value +@SuperBuilder +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RecordSimilarityResult { + Double score; + Map left; + Map right; + RecordSimilarityExplainInfo explainInfo; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) + List error; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) + List info; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/AddressField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/AddressField.java new file mode 100644 index 0000000000..8ec4880e9a --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/AddressField.java @@ -0,0 +1,69 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonValue; + +import lombok.Value; +import lombok.experimental.NonFinal; +import lombok.experimental.SuperBuilder; +import lombok.extern.jackson.Jacksonized; + +import jakarta.validation.constraints.NotBlank; + +@SuperBuilder +@Value +@NonFinal +public abstract class AddressField implements RecordSimilarityField { + + @Jacksonized + @SuperBuilder + @Value + public static class UnfieldedAddress extends AddressField { + @NotBlank String address; + @JsonValue public String toJson() { + return address; + } + } + + @Jacksonized + @SuperBuilder + @Value + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class FieldedAddress extends AddressField { + String house; + String houseNumber; + String road; + String unit; + String level; + String staircase; + String entrance; + String suburb; + String cityDistrict; + String city; + String island; + String stateDistrict; + String state; + String countryRegion; + String country; + String worldRegion; + String postCode; + String poBox; + } + +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/BooleanField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/BooleanField.java new file mode 100644 index 0000000000..84fdfb3e94 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/BooleanField.java @@ -0,0 +1,30 @@ +/* + * Copyright 2025 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.validation.constraints.NotNull; +import lombok.Value; +import lombok.experimental.SuperBuilder; +import lombok.extern.jackson.Jacksonized; + +@SuperBuilder +@Value +@Jacksonized +public class BooleanField implements RecordSimilarityField { + @JsonValue @JsonInclude @NotNull Boolean data; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/DateField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/DateField.java new file mode 100644 index 0000000000..cd2ebdc1f4 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/DateField.java @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Value; +import lombok.experimental.NonFinal; +import lombok.experimental.SuperBuilder; +import lombok.extern.jackson.Jacksonized; + +import jakarta.validation.constraints.NotBlank; + +@SuperBuilder +@Value +@NonFinal +public abstract class DateField implements RecordSimilarityField { + @NotBlank String date; + + @Jacksonized + @SuperBuilder + @Value + public static class UnfieldedDate extends DateField { + @JsonValue public String toJson() { + return super.getDate(); + } + } + + @Jacksonized + @SuperBuilder + @Value + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class FieldedDate extends DateField { + @NotBlank String format; + } + +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/NameField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/NameField.java new file mode 100644 index 0000000000..87cacf9828 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/NameField.java @@ -0,0 +1,56 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.basistech.util.ISO15924; +import com.basistech.util.LanguageCode; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Value; +import lombok.experimental.NonFinal; +import lombok.experimental.SuperBuilder; +import lombok.extern.jackson.Jacksonized; + +import jakarta.validation.constraints.NotBlank; + +@SuperBuilder +@Value +@NonFinal +public abstract class NameField implements RecordSimilarityField { + @NotBlank String text; + + @Jacksonized + @SuperBuilder + @Value + public static class UnfieldedName extends NameField { + @JsonValue public String toJson() { + return super.getText(); + } + } + + @Jacksonized + @SuperBuilder + @Value + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class FieldedName extends NameField { + String entityType; + LanguageCode language; + LanguageCode languageOfOrigin; + ISO15924 script; + } + +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/NumberField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/NumberField.java new file mode 100644 index 0000000000..247aa935cc --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/NumberField.java @@ -0,0 +1,30 @@ +/* + * Copyright 2025 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.validation.constraints.NotNull; +import lombok.Value; +import lombok.experimental.SuperBuilder; +import lombok.extern.jackson.Jacksonized; + +@SuperBuilder +@Value +@Jacksonized +public class NumberField implements RecordSimilarityField { + @NotNull @JsonValue @JsonInclude Number data; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/RecordFieldType.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/RecordFieldType.java new file mode 100644 index 0000000000..66ab6b7051 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/RecordFieldType.java @@ -0,0 +1,30 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity.records; + +public final class RecordFieldType { + public static final String RNI_NAME = "rni_name"; + public static final String RNI_DATE = "rni_date"; + public static final String RNI_ADDRESS = "rni_address"; + + // Generic types + public static final String RNI_STRING = "rni_string"; + public static final String RNI_NUMBER = "rni_number"; + public static final String RNI_BOOLEAN = "rni_boolean"; + + private RecordFieldType() { } +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/RecordSimilarityField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/RecordSimilarityField.java new file mode 100644 index 0000000000..46745ad901 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/RecordSimilarityField.java @@ -0,0 +1,20 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity.records; + +public interface RecordSimilarityField { +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/StringField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/StringField.java new file mode 100644 index 0000000000..83f25f9b6d --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/StringField.java @@ -0,0 +1,30 @@ +/* + * Copyright 2025 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonValue; +import jakarta.validation.constraints.NotBlank; +import lombok.Value; +import lombok.experimental.SuperBuilder; +import lombok.extern.jackson.Jacksonized; + +@SuperBuilder +@Value +@Jacksonized +public class StringField implements RecordSimilarityField { + @NotBlank @JsonValue @JsonInclude String data; +} diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/UnknownField.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/UnknownField.java new file mode 100644 index 0000000000..3bbee45575 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/records/UnknownField.java @@ -0,0 +1,84 @@ +/* + * Copyright 2024 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity.records; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +public class UnknownField implements RecordSimilarityField { + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + JsonNode data; + + @JsonCreator + public UnknownField(JsonNode data) { + this.data = data; + } + + @Override + public String toString() { + return String.valueOf(getData()) + .replace("\"", "") + .replace(":", "=") + .replace("{", "(") + .replace("}", ")") + .replace(",", ", "); + } + + @JsonValue + public Object getData() { + return this.data; + } + + //compare the content of the String form of the UnknownFields' data + //enforce ordering + @Override + public boolean equals(Object o) { + try { + if (o instanceof UnknownField) { + UnknownField other = (UnknownField) o; + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY); + mapper.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS); + return mapper.writeValueAsString(this.data).equals(mapper.writeValueAsString(other.data)); + } else { + return false; + } + } catch (JsonProcessingException ex) { + return false; + } + } + + //hashcode based on String form + @Override + public int hashCode() { + try { + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY); + mapper.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS); + return 19 * mapper.writeValueAsString(this.data).hashCode(); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/model/src/test/java/com/basistech/rosette/apimodel/DocumentRequestTest.java b/model/src/test/java/com/basistech/rosette/apimodel/DocumentRequestTest.java new file mode 100644 index 0000000000..017fef3bbf --- /dev/null +++ b/model/src/test/java/com/basistech/rosette/apimodel/DocumentRequestTest.java @@ -0,0 +1,67 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +class DocumentRequestTest { + + @Test + void getContentString() { + String content = "expected"; + DocumentRequest request = DocumentRequest.builder() + .content(content) + .build(); + assertEquals(content, request.getContent()); + assertEquals(content, request.getRawContent()); + assertNull(request.getContentBytes()); + } + + @Test + void getContentBytes() { + String json = "{\"content\": \"My JSON content.\", \"language\": \"eng\"}"; + byte[] content = json.getBytes(StandardCharsets.UTF_8); + DocumentRequest request = DocumentRequest.builder() + .content(content, "application/json") + .build(); + + var actualRawContentInputStream = (ByteArrayInputStream) request.getRawContent(); + var actualRawContent = actualRawContentInputStream.readAllBytes(); + + assertArrayEquals(content, actualRawContent); + assertNull(request.getContent()); + } + + @Test + void getContentInputStream() { + InputStream content = new ByteArrayInputStream("expected".getBytes(StandardCharsets.UTF_8)); + DocumentRequest request = DocumentRequest.builder() + .content(content, "text/plain") + .build(); + assertEquals(content, request.getContentBytes()); + assertNull(request.getContent()); + assertEquals(content, request.getRawContent()); + } +} diff --git a/model/src/test/java/com/basistech/rosette/apimodel/EntitiesOptionsTest.java b/model/src/test/java/com/basistech/rosette/apimodel/EntitiesOptionsTest.java new file mode 100644 index 0000000000..d480989cc3 --- /dev/null +++ b/model/src/test/java/com/basistech/rosette/apimodel/EntitiesOptionsTest.java @@ -0,0 +1,40 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import org.junit.jupiter.api.Test; + +import static com.basistech.rosette.apimodel.EntitiesOptions.DEFAULT; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class EntitiesOptionsTest { + + @Test + void builderDefaults() { + var entitiesOptions = DEFAULT; + assertNotNull(entitiesOptions); + + assertFalse(entitiesOptions.getCalculateConfidence()); + assertFalse(entitiesOptions.getCalculateSalience()); + assertTrue(entitiesOptions.getLinkEntities()); + assertEquals("statistical", entitiesOptions.getModelType()); + assertFalse(entitiesOptions.getEnableStructuredRegion()); + } +} diff --git a/model/src/test/java/com/basistech/rosette/apimodel/EventsNegationOptionTest.java b/model/src/test/java/com/basistech/rosette/apimodel/EventsNegationOptionTest.java new file mode 100644 index 0000000000..e021243ba0 --- /dev/null +++ b/model/src/test/java/com/basistech/rosette/apimodel/EventsNegationOptionTest.java @@ -0,0 +1,38 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +class EventsNegationOptionTest { + + @Test + void forValueSuccess() { + assertEquals(EventsNegationOption.IGNORE, EventsNegationOption.forValue("ignore")); + assertEquals(EventsNegationOption.BOTH, EventsNegationOption.forValue("BOTH")); + assertEquals(EventsNegationOption.ONLY_POSITIVE, EventsNegationOption.forValue("Only Positive")); + assertEquals(EventsNegationOption.ONLY_NEGATIVE, EventsNegationOption.forValue("OnLy NeGaTiVe")); + } + + @Test + void forValueFailure() { + assertNull(EventsNegationOption.forValue("dummy")); + } +} \ No newline at end of file diff --git a/model/src/test/java/com/basistech/rosette/apimodel/EventsOptionsTest.java b/model/src/test/java/com/basistech/rosette/apimodel/EventsOptionsTest.java new file mode 100644 index 0000000000..f17c89a919 --- /dev/null +++ b/model/src/test/java/com/basistech/rosette/apimodel/EventsOptionsTest.java @@ -0,0 +1,34 @@ +/* + * Copyright 2023 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import org.junit.jupiter.api.Test; + +import static com.basistech.rosette.apimodel.EventsOptions.DEFAULT; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class EventsOptionsTest { + + @Test + void builderDefaults() { + var eventsOptions = DEFAULT; + assertNotNull(eventsOptions); + + assertEquals(EventsNegationOption.IGNORE, eventsOptions.getNegation()); + } +} diff --git a/model/src/test/java/com/basistech/rosette/apimodel/SentimentOptionsTest.java b/model/src/test/java/com/basistech/rosette/apimodel/SentimentOptionsTest.java new file mode 100644 index 0000000000..159d12f187 --- /dev/null +++ b/model/src/test/java/com/basistech/rosette/apimodel/SentimentOptionsTest.java @@ -0,0 +1,35 @@ +/* + * Copyright 2022 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel; + +import org.junit.jupiter.api.Test; + +import static com.basistech.rosette.apimodel.SentimentOptions.DEFAULT; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class SentimentOptionsTest { + + @Test + void builderDefaults() { + var sentimentOptions = DEFAULT; + assertNotNull(sentimentOptions); + + assertFalse(sentimentOptions.getCalculateEntityConfidence()); + assertFalse(sentimentOptions.getCalculateEntitySalience()); + } +} diff --git a/pom.xml b/pom.xml index a670c4448a..c1f8030e9c 100644 --- a/pom.xml +++ b/pom.xml @@ -1,28 +1,30 @@ +--> 4.0.0 com.basistech.rosette rosette-api-java-binding - 0.7.100-SNAPSHOT + rosette-api-java-binding + 1.36.1-SNAPSHOT open-source-parent com.basistech - 0.1.2 + 25.0.0 + pom 2014 @@ -30,62 +32,98 @@ scm:git:git@github.com:rosette-api/java.git scm:git:git@github.com:rosette-api/java.git + rosette-api-java-binding-1.34.0 - - This is the Java binding for the Rosette API. The classes in - here help Java applications to communicate with the Rosette API. - + This is the Java binding for the Babel Street Analytics API. The classes in here help Java applications to communicate with the Analytics API. site scm:git:git@github.com:rosette-api/java.git + + 3.6.1 + 1.20.0 + 3.1.1 + 1.13.0 + 6.0.1 + 1.18.42 + 1.18.20.0 + 5.15.0 + 0.10.2 + + annotations model json + common api + all examples release - - - - com.basistech - common-api - 35.3.0 - - - - com.basistech - bbh-maven-plugin - 1.0.1 + org.apache.maven.plugins + maven-checkstyle-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + org.apache.maven.plugins + maven-clean-plugin + + + + ${project.basedir} + + **/mockserver.log + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 11 + 11 + + + + org.apache.maven.plugins + maven-source-plugin - osgi-version - validate + attach-sources + verify - osgi-version + jar-no-fork - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.3 + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} - aggregate + add-source + generate-sources - aggregate + add-source - site - + + ${basedir}/model/target/generated-sources/delombok/ + + @@ -93,41 +131,50 @@ - org.apache.felix - maven-bundle-plugin - - - true - - - ${osgi-version} - - + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + attach-javadocs + + jar + + + - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.3 - - - non-aggregate - - javadoc - - - - aggregate - - aggregate - - - - - - + + + aggregate-javadoc + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + gh-pages + + aggregate-jar + + + + + + model/target/generated-sources/delombok; + json/src/main/java; + common/src/main/java; + api/src/main/java + + + + + + + diff --git a/release/pom.xml b/release/pom.xml index 811d7d3887..7c39985a9b 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -1,6 +1,6 @@ +--> 4.0.0 com.basistech.rosette rosette-api-java-binding - 0.7.100-SNAPSHOT + 1.36.1-SNAPSHOT com.basistech.rosette rosette-api-release rosette-api-release - - true - + pom com.basistech.rosette @@ -46,6 +44,13 @@ + + + make-manifest-jar + jar + package + + org.apache.maven.plugins diff --git a/release/src/scripts/run_all_examples.sh b/release/src/scripts/run_all_examples.sh old mode 100644 new mode 100755 index 4e883405f0..1fb38168fe --- a/release/src/scripts/run_all_examples.sh +++ b/release/src/scripts/run_all_examples.sh @@ -1,33 +1,53 @@ #!/usr/bin/env bash if [ $# -eq 0 ]; then - echo "Usage: $0 API_KEY" 1>&2 + echo "Usage: $0 API_KEY [ALT_URL]" 1>&2 exit 1 fi key=$1 read -d '' examples < - - - Rosette API - - - - org.apache.maven.skins - maven-fluido-skin - 1.3.0 - - - - - - - - - - - - - - - - - -