spark-nlp 2.6.3rc1__py2.py3-none-any.whl → 6.2.1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- com/johnsnowlabs/ml/__init__.py +0 -0
- com/johnsnowlabs/ml/ai/__init__.py +10 -0
- com/johnsnowlabs/nlp/__init__.py +4 -2
- spark_nlp-6.2.1.dist-info/METADATA +362 -0
- spark_nlp-6.2.1.dist-info/RECORD +292 -0
- {spark_nlp-2.6.3rc1.dist-info → spark_nlp-6.2.1.dist-info}/WHEEL +1 -1
- sparknlp/__init__.py +281 -27
- sparknlp/annotation.py +137 -6
- sparknlp/annotation_audio.py +61 -0
- sparknlp/annotation_image.py +82 -0
- sparknlp/annotator/__init__.py +93 -0
- sparknlp/annotator/audio/__init__.py +16 -0
- sparknlp/annotator/audio/hubert_for_ctc.py +188 -0
- sparknlp/annotator/audio/wav2vec2_for_ctc.py +161 -0
- sparknlp/annotator/audio/whisper_for_ctc.py +251 -0
- sparknlp/annotator/chunk2_doc.py +85 -0
- sparknlp/annotator/chunker.py +137 -0
- sparknlp/annotator/classifier_dl/__init__.py +61 -0
- sparknlp/annotator/classifier_dl/albert_for_multiple_choice.py +161 -0
- sparknlp/annotator/classifier_dl/albert_for_question_answering.py +172 -0
- sparknlp/annotator/classifier_dl/albert_for_sequence_classification.py +201 -0
- sparknlp/annotator/classifier_dl/albert_for_token_classification.py +179 -0
- sparknlp/annotator/classifier_dl/albert_for_zero_shot_classification.py +211 -0
- sparknlp/annotator/classifier_dl/bart_for_zero_shot_classification.py +225 -0
- sparknlp/annotator/classifier_dl/bert_for_multiple_choice.py +161 -0
- sparknlp/annotator/classifier_dl/bert_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/bert_for_sequence_classification.py +202 -0
- sparknlp/annotator/classifier_dl/bert_for_token_classification.py +177 -0
- sparknlp/annotator/classifier_dl/bert_for_zero_shot_classification.py +212 -0
- sparknlp/annotator/classifier_dl/camembert_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/camembert_for_sequence_classification.py +205 -0
- sparknlp/annotator/classifier_dl/camembert_for_token_classification.py +173 -0
- sparknlp/annotator/classifier_dl/camembert_for_zero_shot_classification.py +202 -0
- sparknlp/annotator/classifier_dl/classifier_dl.py +320 -0
- sparknlp/annotator/classifier_dl/deberta_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/deberta_for_sequence_classification.py +198 -0
- sparknlp/annotator/classifier_dl/deberta_for_token_classification.py +175 -0
- sparknlp/annotator/classifier_dl/deberta_for_zero_shot_classification.py +193 -0
- sparknlp/annotator/classifier_dl/distil_bert_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/distil_bert_for_sequence_classification.py +201 -0
- sparknlp/annotator/classifier_dl/distil_bert_for_token_classification.py +175 -0
- sparknlp/annotator/classifier_dl/distil_bert_for_zero_shot_classification.py +211 -0
- sparknlp/annotator/classifier_dl/distilbert_for_multiple_choice.py +161 -0
- sparknlp/annotator/classifier_dl/longformer_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/longformer_for_sequence_classification.py +201 -0
- sparknlp/annotator/classifier_dl/longformer_for_token_classification.py +176 -0
- sparknlp/annotator/classifier_dl/mpnet_for_question_answering.py +148 -0
- sparknlp/annotator/classifier_dl/mpnet_for_sequence_classification.py +188 -0
- sparknlp/annotator/classifier_dl/mpnet_for_token_classification.py +173 -0
- sparknlp/annotator/classifier_dl/multi_classifier_dl.py +395 -0
- sparknlp/annotator/classifier_dl/roberta_for_multiple_choice.py +161 -0
- sparknlp/annotator/classifier_dl/roberta_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/roberta_for_sequence_classification.py +201 -0
- sparknlp/annotator/classifier_dl/roberta_for_token_classification.py +189 -0
- sparknlp/annotator/classifier_dl/roberta_for_zero_shot_classification.py +225 -0
- sparknlp/annotator/classifier_dl/sentiment_dl.py +378 -0
- sparknlp/annotator/classifier_dl/tapas_for_question_answering.py +170 -0
- sparknlp/annotator/classifier_dl/xlm_roberta_for_multiple_choice.py +149 -0
- sparknlp/annotator/classifier_dl/xlm_roberta_for_question_answering.py +168 -0
- sparknlp/annotator/classifier_dl/xlm_roberta_for_sequence_classification.py +201 -0
- sparknlp/annotator/classifier_dl/xlm_roberta_for_token_classification.py +173 -0
- sparknlp/annotator/classifier_dl/xlm_roberta_for_zero_shot_classification.py +225 -0
- sparknlp/annotator/classifier_dl/xlnet_for_sequence_classification.py +201 -0
- sparknlp/annotator/classifier_dl/xlnet_for_token_classification.py +176 -0
- sparknlp/annotator/cleaners/__init__.py +15 -0
- sparknlp/annotator/cleaners/cleaner.py +202 -0
- sparknlp/annotator/cleaners/extractor.py +191 -0
- sparknlp/annotator/coref/__init__.py +1 -0
- sparknlp/annotator/coref/spanbert_coref.py +221 -0
- sparknlp/annotator/cv/__init__.py +29 -0
- sparknlp/annotator/cv/blip_for_question_answering.py +172 -0
- sparknlp/annotator/cv/clip_for_zero_shot_classification.py +193 -0
- sparknlp/annotator/cv/convnext_for_image_classification.py +269 -0
- sparknlp/annotator/cv/florence2_transformer.py +180 -0
- sparknlp/annotator/cv/gemma3_for_multimodal.py +346 -0
- sparknlp/annotator/cv/internvl_for_multimodal.py +280 -0
- sparknlp/annotator/cv/janus_for_multimodal.py +351 -0
- sparknlp/annotator/cv/llava_for_multimodal.py +328 -0
- sparknlp/annotator/cv/mllama_for_multimodal.py +340 -0
- sparknlp/annotator/cv/paligemma_for_multimodal.py +308 -0
- sparknlp/annotator/cv/phi3_vision_for_multimodal.py +328 -0
- sparknlp/annotator/cv/qwen2vl_transformer.py +332 -0
- sparknlp/annotator/cv/smolvlm_transformer.py +426 -0
- sparknlp/annotator/cv/swin_for_image_classification.py +242 -0
- sparknlp/annotator/cv/vision_encoder_decoder_for_image_captioning.py +240 -0
- sparknlp/annotator/cv/vit_for_image_classification.py +217 -0
- sparknlp/annotator/dataframe_optimizer.py +216 -0
- sparknlp/annotator/date2_chunk.py +88 -0
- sparknlp/annotator/dependency/__init__.py +17 -0
- sparknlp/annotator/dependency/dependency_parser.py +294 -0
- sparknlp/annotator/dependency/typed_dependency_parser.py +318 -0
- sparknlp/annotator/document_character_text_splitter.py +228 -0
- sparknlp/annotator/document_normalizer.py +235 -0
- sparknlp/annotator/document_token_splitter.py +175 -0
- sparknlp/annotator/document_token_splitter_test.py +85 -0
- sparknlp/annotator/embeddings/__init__.py +45 -0
- sparknlp/annotator/embeddings/albert_embeddings.py +230 -0
- sparknlp/annotator/embeddings/auto_gguf_embeddings.py +539 -0
- sparknlp/annotator/embeddings/bert_embeddings.py +208 -0
- sparknlp/annotator/embeddings/bert_sentence_embeddings.py +224 -0
- sparknlp/annotator/embeddings/bge_embeddings.py +199 -0
- sparknlp/annotator/embeddings/camembert_embeddings.py +210 -0
- sparknlp/annotator/embeddings/chunk_embeddings.py +149 -0
- sparknlp/annotator/embeddings/deberta_embeddings.py +208 -0
- sparknlp/annotator/embeddings/distil_bert_embeddings.py +221 -0
- sparknlp/annotator/embeddings/doc2vec.py +352 -0
- sparknlp/annotator/embeddings/e5_embeddings.py +195 -0
- sparknlp/annotator/embeddings/e5v_embeddings.py +138 -0
- sparknlp/annotator/embeddings/elmo_embeddings.py +251 -0
- sparknlp/annotator/embeddings/instructor_embeddings.py +204 -0
- sparknlp/annotator/embeddings/longformer_embeddings.py +211 -0
- sparknlp/annotator/embeddings/minilm_embeddings.py +189 -0
- sparknlp/annotator/embeddings/mpnet_embeddings.py +192 -0
- sparknlp/annotator/embeddings/mxbai_embeddings.py +184 -0
- sparknlp/annotator/embeddings/nomic_embeddings.py +181 -0
- sparknlp/annotator/embeddings/roberta_embeddings.py +225 -0
- sparknlp/annotator/embeddings/roberta_sentence_embeddings.py +191 -0
- sparknlp/annotator/embeddings/sentence_embeddings.py +134 -0
- sparknlp/annotator/embeddings/snowflake_embeddings.py +202 -0
- sparknlp/annotator/embeddings/uae_embeddings.py +211 -0
- sparknlp/annotator/embeddings/universal_sentence_encoder.py +211 -0
- sparknlp/annotator/embeddings/word2vec.py +353 -0
- sparknlp/annotator/embeddings/word_embeddings.py +385 -0
- sparknlp/annotator/embeddings/xlm_roberta_embeddings.py +225 -0
- sparknlp/annotator/embeddings/xlm_roberta_sentence_embeddings.py +194 -0
- sparknlp/annotator/embeddings/xlnet_embeddings.py +227 -0
- sparknlp/annotator/er/__init__.py +16 -0
- sparknlp/annotator/er/entity_ruler.py +267 -0
- sparknlp/annotator/graph_extraction.py +368 -0
- sparknlp/annotator/keyword_extraction/__init__.py +16 -0
- sparknlp/annotator/keyword_extraction/yake_keyword_extraction.py +270 -0
- sparknlp/annotator/ld_dl/__init__.py +16 -0
- sparknlp/annotator/ld_dl/language_detector_dl.py +199 -0
- sparknlp/annotator/lemmatizer.py +250 -0
- sparknlp/annotator/matcher/__init__.py +20 -0
- sparknlp/annotator/matcher/big_text_matcher.py +272 -0
- sparknlp/annotator/matcher/date_matcher.py +303 -0
- sparknlp/annotator/matcher/multi_date_matcher.py +109 -0
- sparknlp/annotator/matcher/regex_matcher.py +221 -0
- sparknlp/annotator/matcher/text_matcher.py +290 -0
- sparknlp/annotator/n_gram_generator.py +141 -0
- sparknlp/annotator/ner/__init__.py +21 -0
- sparknlp/annotator/ner/ner_approach.py +94 -0
- sparknlp/annotator/ner/ner_converter.py +148 -0
- sparknlp/annotator/ner/ner_crf.py +397 -0
- sparknlp/annotator/ner/ner_dl.py +591 -0
- sparknlp/annotator/ner/ner_dl_graph_checker.py +293 -0
- sparknlp/annotator/ner/ner_overwriter.py +166 -0
- sparknlp/annotator/ner/zero_shot_ner_model.py +173 -0
- sparknlp/annotator/normalizer.py +230 -0
- sparknlp/annotator/openai/__init__.py +16 -0
- sparknlp/annotator/openai/openai_completion.py +349 -0
- sparknlp/annotator/openai/openai_embeddings.py +106 -0
- sparknlp/annotator/param/__init__.py +17 -0
- sparknlp/annotator/param/classifier_encoder.py +98 -0
- sparknlp/annotator/param/evaluation_dl_params.py +130 -0
- sparknlp/annotator/pos/__init__.py +16 -0
- sparknlp/annotator/pos/perceptron.py +263 -0
- sparknlp/annotator/sentence/__init__.py +17 -0
- sparknlp/annotator/sentence/sentence_detector.py +290 -0
- sparknlp/annotator/sentence/sentence_detector_dl.py +467 -0
- sparknlp/annotator/sentiment/__init__.py +17 -0
- sparknlp/annotator/sentiment/sentiment_detector.py +208 -0
- sparknlp/annotator/sentiment/vivekn_sentiment.py +242 -0
- sparknlp/annotator/seq2seq/__init__.py +35 -0
- sparknlp/annotator/seq2seq/auto_gguf_model.py +304 -0
- sparknlp/annotator/seq2seq/auto_gguf_reranker.py +334 -0
- sparknlp/annotator/seq2seq/auto_gguf_vision_model.py +336 -0
- sparknlp/annotator/seq2seq/bart_transformer.py +420 -0
- sparknlp/annotator/seq2seq/cohere_transformer.py +357 -0
- sparknlp/annotator/seq2seq/cpm_transformer.py +321 -0
- sparknlp/annotator/seq2seq/gpt2_transformer.py +363 -0
- sparknlp/annotator/seq2seq/llama2_transformer.py +343 -0
- sparknlp/annotator/seq2seq/llama3_transformer.py +381 -0
- sparknlp/annotator/seq2seq/m2m100_transformer.py +392 -0
- sparknlp/annotator/seq2seq/marian_transformer.py +374 -0
- sparknlp/annotator/seq2seq/mistral_transformer.py +348 -0
- sparknlp/annotator/seq2seq/nllb_transformer.py +420 -0
- sparknlp/annotator/seq2seq/olmo_transformer.py +326 -0
- sparknlp/annotator/seq2seq/phi2_transformer.py +326 -0
- sparknlp/annotator/seq2seq/phi3_transformer.py +330 -0
- sparknlp/annotator/seq2seq/phi4_transformer.py +387 -0
- sparknlp/annotator/seq2seq/qwen_transformer.py +340 -0
- sparknlp/annotator/seq2seq/starcoder_transformer.py +335 -0
- sparknlp/annotator/seq2seq/t5_transformer.py +425 -0
- sparknlp/annotator/similarity/__init__.py +0 -0
- sparknlp/annotator/similarity/document_similarity_ranker.py +379 -0
- sparknlp/annotator/spell_check/__init__.py +18 -0
- sparknlp/annotator/spell_check/context_spell_checker.py +911 -0
- sparknlp/annotator/spell_check/norvig_sweeting.py +358 -0
- sparknlp/annotator/spell_check/symmetric_delete.py +299 -0
- sparknlp/annotator/stemmer.py +79 -0
- sparknlp/annotator/stop_words_cleaner.py +190 -0
- sparknlp/annotator/tf_ner_dl_graph_builder.py +179 -0
- sparknlp/annotator/token/__init__.py +19 -0
- sparknlp/annotator/token/chunk_tokenizer.py +118 -0
- sparknlp/annotator/token/recursive_tokenizer.py +205 -0
- sparknlp/annotator/token/regex_tokenizer.py +208 -0
- sparknlp/annotator/token/tokenizer.py +561 -0
- sparknlp/annotator/token2_chunk.py +76 -0
- sparknlp/annotator/ws/__init__.py +16 -0
- sparknlp/annotator/ws/word_segmenter.py +429 -0
- sparknlp/base/__init__.py +30 -0
- sparknlp/base/audio_assembler.py +95 -0
- sparknlp/base/doc2_chunk.py +169 -0
- sparknlp/base/document_assembler.py +164 -0
- sparknlp/base/embeddings_finisher.py +201 -0
- sparknlp/base/finisher.py +217 -0
- sparknlp/base/gguf_ranking_finisher.py +234 -0
- sparknlp/base/graph_finisher.py +125 -0
- sparknlp/base/has_recursive_fit.py +24 -0
- sparknlp/base/has_recursive_transform.py +22 -0
- sparknlp/base/image_assembler.py +172 -0
- sparknlp/base/light_pipeline.py +429 -0
- sparknlp/base/multi_document_assembler.py +164 -0
- sparknlp/base/prompt_assembler.py +207 -0
- sparknlp/base/recursive_pipeline.py +107 -0
- sparknlp/base/table_assembler.py +145 -0
- sparknlp/base/token_assembler.py +124 -0
- sparknlp/common/__init__.py +26 -0
- sparknlp/common/annotator_approach.py +41 -0
- sparknlp/common/annotator_model.py +47 -0
- sparknlp/common/annotator_properties.py +114 -0
- sparknlp/common/annotator_type.py +38 -0
- sparknlp/common/completion_post_processing.py +37 -0
- sparknlp/common/coverage_result.py +22 -0
- sparknlp/common/match_strategy.py +33 -0
- sparknlp/common/properties.py +1298 -0
- sparknlp/common/read_as.py +33 -0
- sparknlp/common/recursive_annotator_approach.py +35 -0
- sparknlp/common/storage.py +149 -0
- sparknlp/common/utils.py +39 -0
- sparknlp/functions.py +315 -5
- sparknlp/internal/__init__.py +1199 -0
- sparknlp/internal/annotator_java_ml.py +32 -0
- sparknlp/internal/annotator_transformer.py +37 -0
- sparknlp/internal/extended_java_wrapper.py +63 -0
- sparknlp/internal/params_getters_setters.py +71 -0
- sparknlp/internal/recursive.py +70 -0
- sparknlp/logging/__init__.py +15 -0
- sparknlp/logging/comet.py +467 -0
- sparknlp/partition/__init__.py +16 -0
- sparknlp/partition/partition.py +244 -0
- sparknlp/partition/partition_properties.py +902 -0
- sparknlp/partition/partition_transformer.py +200 -0
- sparknlp/pretrained/__init__.py +17 -0
- sparknlp/pretrained/pretrained_pipeline.py +158 -0
- sparknlp/pretrained/resource_downloader.py +216 -0
- sparknlp/pretrained/utils.py +35 -0
- sparknlp/reader/__init__.py +15 -0
- sparknlp/reader/enums.py +19 -0
- sparknlp/reader/pdf_to_text.py +190 -0
- sparknlp/reader/reader2doc.py +124 -0
- sparknlp/reader/reader2image.py +136 -0
- sparknlp/reader/reader2table.py +44 -0
- sparknlp/reader/reader_assembler.py +159 -0
- sparknlp/reader/sparknlp_reader.py +461 -0
- sparknlp/training/__init__.py +20 -0
- sparknlp/training/_tf_graph_builders/__init__.py +0 -0
- sparknlp/training/_tf_graph_builders/graph_builders.py +299 -0
- sparknlp/training/_tf_graph_builders/ner_dl/__init__.py +0 -0
- sparknlp/training/_tf_graph_builders/ner_dl/create_graph.py +41 -0
- sparknlp/training/_tf_graph_builders/ner_dl/dataset_encoder.py +78 -0
- sparknlp/training/_tf_graph_builders/ner_dl/ner_model.py +521 -0
- sparknlp/training/_tf_graph_builders/ner_dl/ner_model_saver.py +62 -0
- sparknlp/training/_tf_graph_builders/ner_dl/sentence_grouper.py +28 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/__init__.py +36 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/core_rnn_cell.py +385 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/fused_rnn_cell.py +183 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/gru_ops.py +235 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/lstm_ops.py +665 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/rnn.py +245 -0
- sparknlp/training/_tf_graph_builders/tf2contrib/rnn_cell.py +4006 -0
- sparknlp/training/_tf_graph_builders_1x/__init__.py +0 -0
- sparknlp/training/_tf_graph_builders_1x/graph_builders.py +277 -0
- sparknlp/training/_tf_graph_builders_1x/ner_dl/__init__.py +0 -0
- sparknlp/training/_tf_graph_builders_1x/ner_dl/create_graph.py +34 -0
- sparknlp/training/_tf_graph_builders_1x/ner_dl/dataset_encoder.py +78 -0
- sparknlp/training/_tf_graph_builders_1x/ner_dl/ner_model.py +532 -0
- sparknlp/training/_tf_graph_builders_1x/ner_dl/ner_model_saver.py +62 -0
- sparknlp/training/_tf_graph_builders_1x/ner_dl/sentence_grouper.py +28 -0
- sparknlp/training/conll.py +150 -0
- sparknlp/training/conllu.py +103 -0
- sparknlp/training/pos.py +103 -0
- sparknlp/training/pub_tator.py +76 -0
- sparknlp/training/spacy_to_annotation.py +57 -0
- sparknlp/training/tfgraphs.py +5 -0
- sparknlp/upload_to_hub.py +149 -0
- sparknlp/util.py +51 -5
- com/__init__.pyc +0 -0
- com/__pycache__/__init__.cpython-36.pyc +0 -0
- com/johnsnowlabs/__init__.pyc +0 -0
- com/johnsnowlabs/__pycache__/__init__.cpython-36.pyc +0 -0
- com/johnsnowlabs/nlp/__init__.pyc +0 -0
- com/johnsnowlabs/nlp/__pycache__/__init__.cpython-36.pyc +0 -0
- spark_nlp-2.6.3rc1.dist-info/METADATA +0 -36
- spark_nlp-2.6.3rc1.dist-info/RECORD +0 -48
- sparknlp/__init__.pyc +0 -0
- sparknlp/__pycache__/__init__.cpython-36.pyc +0 -0
- sparknlp/__pycache__/annotation.cpython-36.pyc +0 -0
- sparknlp/__pycache__/annotator.cpython-36.pyc +0 -0
- sparknlp/__pycache__/base.cpython-36.pyc +0 -0
- sparknlp/__pycache__/common.cpython-36.pyc +0 -0
- sparknlp/__pycache__/embeddings.cpython-36.pyc +0 -0
- sparknlp/__pycache__/functions.cpython-36.pyc +0 -0
- sparknlp/__pycache__/internal.cpython-36.pyc +0 -0
- sparknlp/__pycache__/pretrained.cpython-36.pyc +0 -0
- sparknlp/__pycache__/storage.cpython-36.pyc +0 -0
- sparknlp/__pycache__/training.cpython-36.pyc +0 -0
- sparknlp/__pycache__/util.cpython-36.pyc +0 -0
- sparknlp/annotation.pyc +0 -0
- sparknlp/annotator.py +0 -3006
- sparknlp/annotator.pyc +0 -0
- sparknlp/base.py +0 -347
- sparknlp/base.pyc +0 -0
- sparknlp/common.py +0 -193
- sparknlp/common.pyc +0 -0
- sparknlp/embeddings.py +0 -40
- sparknlp/embeddings.pyc +0 -0
- sparknlp/internal.py +0 -288
- sparknlp/internal.pyc +0 -0
- sparknlp/pretrained.py +0 -123
- sparknlp/pretrained.pyc +0 -0
- sparknlp/storage.py +0 -32
- sparknlp/storage.pyc +0 -0
- sparknlp/training.py +0 -62
- sparknlp/training.pyc +0 -0
- sparknlp/util.pyc +0 -0
- {spark_nlp-2.6.3rc1.dist-info → spark_nlp-6.2.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Copyright 2017-2022 John Snow Labs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
"""Contains classes for the Finisher."""
|
|
15
|
+
|
|
16
|
+
from pyspark import keyword_only
|
|
17
|
+
from pyspark.ml.param import TypeConverters, Params, Param
|
|
18
|
+
from sparknlp.internal import AnnotatorTransformer
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Finisher(AnnotatorTransformer):
|
|
22
|
+
"""Converts annotation results into a format that easier to use.
|
|
23
|
+
|
|
24
|
+
It is useful to extract the results from Spark NLP Pipelines. The Finisher
|
|
25
|
+
outputs annotation(s) values into ``String``.
|
|
26
|
+
|
|
27
|
+
For more extended examples on document pre-processing see the
|
|
28
|
+
`Examples <https://github.com/JohnSnowLabs/spark-nlp/blob/master/examples/python/annotation/text/english/model-downloader/Create%20custom%20pipeline%20-%20NerDL.ipynb
|
|
29
|
+
>`__.
|
|
30
|
+
|
|
31
|
+
====================== ======================
|
|
32
|
+
Input Annotation types Output Annotation type
|
|
33
|
+
====================== ======================
|
|
34
|
+
``ANY`` ``NONE``
|
|
35
|
+
====================== ======================
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
inputCols
|
|
40
|
+
Input annotations
|
|
41
|
+
outputCols
|
|
42
|
+
Output finished annotation cols
|
|
43
|
+
valueSplitSymbol
|
|
44
|
+
Character separating values, by default #
|
|
45
|
+
annotationSplitSymbol
|
|
46
|
+
Character separating annotations, by default @
|
|
47
|
+
cleanAnnotations
|
|
48
|
+
Whether to remove annotation columns, by default True
|
|
49
|
+
includeMetadata
|
|
50
|
+
Whether to include annotation metadata, by default False
|
|
51
|
+
outputAsArray
|
|
52
|
+
Finisher generates an Array with the results instead of string, by
|
|
53
|
+
default True
|
|
54
|
+
parseEmbeddingsVectors
|
|
55
|
+
Whether to include embeddings vectors in the process, by default False
|
|
56
|
+
|
|
57
|
+
Examples
|
|
58
|
+
--------
|
|
59
|
+
>>> import sparknlp
|
|
60
|
+
>>> from sparknlp.base import *
|
|
61
|
+
>>> from sparknlp.annotator import *
|
|
62
|
+
>>> from sparknlp.pretrained import PretrainedPipeline
|
|
63
|
+
>>> data = spark.createDataFrame([[1, "New York and New Jersey aren't that far apart actually."]]).toDF("id", "text")
|
|
64
|
+
|
|
65
|
+
Define pretrained pipeline that extracts Named Entities amongst other things
|
|
66
|
+
and apply the `Finisher` on it.
|
|
67
|
+
|
|
68
|
+
>>> pipeline = PretrainedPipeline("explain_document_dl")
|
|
69
|
+
>>> finisher = Finisher().setInputCols("entities").setOutputCols("output")
|
|
70
|
+
>>> explainResult = pipeline.transform(data)
|
|
71
|
+
|
|
72
|
+
Show results.
|
|
73
|
+
|
|
74
|
+
>>> explainResult.selectExpr("explode(entities)").show(truncate=False)
|
|
75
|
+
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
76
|
+
|entities |
|
|
77
|
+
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
78
|
+
|[[chunk, 0, 7, New York, [entity -> LOC, sentence -> 0, chunk -> 0], []], [chunk, 13, 22, New Jersey, [entity -> LOC, sentence -> 0, chunk -> 1], []]]|
|
|
79
|
+
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
80
|
+
>>> result = finisher.transform(explainResult)
|
|
81
|
+
>>> result.select("output").show(truncate=False)
|
|
82
|
+
+----------------------+
|
|
83
|
+
|output |
|
|
84
|
+
+----------------------+
|
|
85
|
+
|[New York, New Jersey]|
|
|
86
|
+
+----------------------+
|
|
87
|
+
|
|
88
|
+
See Also
|
|
89
|
+
--------
|
|
90
|
+
Finisher : for finishing Strings
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
inputCols = Param(Params._dummy(), "inputCols", "input annotations", typeConverter=TypeConverters.toListString)
|
|
94
|
+
outputCols = Param(Params._dummy(), "outputCols", "output finished annotation cols", typeConverter=TypeConverters.toListString)
|
|
95
|
+
valueSplitSymbol = Param(Params._dummy(), "valueSplitSymbol", "character separating annotations", typeConverter=TypeConverters.toString)
|
|
96
|
+
annotationSplitSymbol = Param(Params._dummy(), "annotationSplitSymbol", "character separating annotations", typeConverter=TypeConverters.toString)
|
|
97
|
+
cleanAnnotations = Param(Params._dummy(), "cleanAnnotations", "whether to remove annotation columns", typeConverter=TypeConverters.toBoolean)
|
|
98
|
+
includeMetadata = Param(Params._dummy(), "includeMetadata", "annotation metadata format", typeConverter=TypeConverters.toBoolean)
|
|
99
|
+
outputAsArray = Param(Params._dummy(), "outputAsArray", "finisher generates an Array with the results instead of string", typeConverter=TypeConverters.toBoolean)
|
|
100
|
+
parseEmbeddingsVectors = Param(Params._dummy(), "parseEmbeddingsVectors", "whether to include embeddings vectors in the process", typeConverter=TypeConverters.toBoolean)
|
|
101
|
+
name = "Finisher"
|
|
102
|
+
|
|
103
|
+
@keyword_only
|
|
104
|
+
def __init__(self):
|
|
105
|
+
super(Finisher, self).__init__(classname="com.johnsnowlabs.nlp.Finisher")
|
|
106
|
+
self._setDefault(
|
|
107
|
+
cleanAnnotations=True,
|
|
108
|
+
includeMetadata=False,
|
|
109
|
+
outputAsArray=True,
|
|
110
|
+
parseEmbeddingsVectors=False,
|
|
111
|
+
valueSplitSymbol="#",
|
|
112
|
+
annotationSplitSymbol="@",
|
|
113
|
+
outputCols=[]
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
@keyword_only
|
|
117
|
+
def setParams(self):
|
|
118
|
+
kwargs = self._input_kwargs
|
|
119
|
+
return self._set(**kwargs)
|
|
120
|
+
|
|
121
|
+
def setInputCols(self, *value):
|
|
122
|
+
"""Sets column names of input annotations.
|
|
123
|
+
|
|
124
|
+
Parameters
|
|
125
|
+
----------
|
|
126
|
+
*value : List[str]
|
|
127
|
+
Input columns for the annotator
|
|
128
|
+
"""
|
|
129
|
+
if len(value) == 1 and type(value[0]) == list:
|
|
130
|
+
return self._set(inputCols=value[0])
|
|
131
|
+
else:
|
|
132
|
+
return self._set(inputCols=list(value))
|
|
133
|
+
|
|
134
|
+
def setOutputCols(self, *value):
|
|
135
|
+
"""Sets column names of finished output annotations.
|
|
136
|
+
|
|
137
|
+
Parameters
|
|
138
|
+
----------
|
|
139
|
+
*value : List[str]
|
|
140
|
+
List of output columns
|
|
141
|
+
"""
|
|
142
|
+
if len(value) == 1 and type(value[0]) == list:
|
|
143
|
+
return self._set(outputCols=value[0])
|
|
144
|
+
else:
|
|
145
|
+
return self._set(outputCols=list(value))
|
|
146
|
+
|
|
147
|
+
def setValueSplitSymbol(self, value):
|
|
148
|
+
"""Sets character separating values, by default #.
|
|
149
|
+
|
|
150
|
+
Parameters
|
|
151
|
+
----------
|
|
152
|
+
value : str
|
|
153
|
+
Character to separate annotations
|
|
154
|
+
"""
|
|
155
|
+
return self._set(valueSplitSymbol=value)
|
|
156
|
+
|
|
157
|
+
def setAnnotationSplitSymbol(self, value):
|
|
158
|
+
"""Sets character separating annotations, by default @.
|
|
159
|
+
|
|
160
|
+
Parameters
|
|
161
|
+
----------
|
|
162
|
+
value : str
|
|
163
|
+
...
|
|
164
|
+
"""
|
|
165
|
+
return self._set(annotationSplitSymbol=value)
|
|
166
|
+
|
|
167
|
+
def setCleanAnnotations(self, value):
|
|
168
|
+
"""Sets whether to remove annotation columns, by default True.
|
|
169
|
+
|
|
170
|
+
Parameters
|
|
171
|
+
----------
|
|
172
|
+
value : bool
|
|
173
|
+
Whether to remove annotation columns
|
|
174
|
+
"""
|
|
175
|
+
return self._set(cleanAnnotations=value)
|
|
176
|
+
|
|
177
|
+
def setIncludeMetadata(self, value):
|
|
178
|
+
"""Sets whether to include annotation metadata.
|
|
179
|
+
|
|
180
|
+
Parameters
|
|
181
|
+
----------
|
|
182
|
+
value : bool
|
|
183
|
+
Whether to include annotation metadata
|
|
184
|
+
"""
|
|
185
|
+
return self._set(includeMetadata=value)
|
|
186
|
+
|
|
187
|
+
def setOutputAsArray(self, value):
|
|
188
|
+
"""Sets whether to generate an array with the results instead of a
|
|
189
|
+
string.
|
|
190
|
+
|
|
191
|
+
Parameters
|
|
192
|
+
----------
|
|
193
|
+
value : bool
|
|
194
|
+
Whether to generate an array with the results instead of a string
|
|
195
|
+
"""
|
|
196
|
+
return self._set(outputAsArray=value)
|
|
197
|
+
|
|
198
|
+
def setParseEmbeddingsVectors(self, value):
|
|
199
|
+
"""Sets whether to include embeddings vectors in the process.
|
|
200
|
+
|
|
201
|
+
Parameters
|
|
202
|
+
----------
|
|
203
|
+
value : bool
|
|
204
|
+
Whether to include embeddings vectors in the process
|
|
205
|
+
"""
|
|
206
|
+
return self._set(parseEmbeddingsVectors=value)
|
|
207
|
+
|
|
208
|
+
def getInputCols(self):
|
|
209
|
+
"""Gets input columns name of annotations."""
|
|
210
|
+
return self.getOrDefault(self.inputCols)
|
|
211
|
+
|
|
212
|
+
def getOutputCols(self):
|
|
213
|
+
"""Gets output columns name of annotations."""
|
|
214
|
+
if len(self.getOrDefault(self.outputCols)) == 0:
|
|
215
|
+
return ["finished_" + input_col for input_col in self.getInputCols()]
|
|
216
|
+
else:
|
|
217
|
+
return self.getOrDefault(self.outputCols)
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Copyright 2017-2024 John Snow Labs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
"""Contains classes for the GGUFRankingFinisher."""
|
|
15
|
+
|
|
16
|
+
from pyspark import keyword_only
|
|
17
|
+
from pyspark.ml.param import TypeConverters, Params, Param
|
|
18
|
+
from sparknlp.internal import AnnotatorTransformer
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class GGUFRankingFinisher(AnnotatorTransformer):
|
|
22
|
+
"""Finisher for AutoGGUFReranker outputs that provides ranking capabilities
|
|
23
|
+
including top-k selection, sorting by relevance score, and score normalization.
|
|
24
|
+
|
|
25
|
+
This finisher processes the output of AutoGGUFReranker, which contains documents with
|
|
26
|
+
relevance scores in their metadata. It provides several options for post-processing:
|
|
27
|
+
|
|
28
|
+
- Top-k selection: Select only the top k documents by relevance score
|
|
29
|
+
- Score thresholding: Filter documents by minimum relevance score
|
|
30
|
+
- Min-max scaling: Normalize relevance scores to 0-1 range
|
|
31
|
+
- Sorting: Sort documents by relevance score in descending order
|
|
32
|
+
- Ranking: Add rank information to document metadata
|
|
33
|
+
|
|
34
|
+
The finisher preserves the document annotation structure while adding ranking information
|
|
35
|
+
to the metadata and optionally filtering/sorting the documents.
|
|
36
|
+
|
|
37
|
+
For extended examples of usage, see the `Examples
|
|
38
|
+
<https://github.com/JohnSnowLabs/spark-nlp/blob/master/examples/python/finisher/gguf_ranking_finisher_example.py>`__.
|
|
39
|
+
|
|
40
|
+
====================== ======================
|
|
41
|
+
Input Annotation types Output Annotation type
|
|
42
|
+
====================== ======================
|
|
43
|
+
``DOCUMENT`` ``DOCUMENT``
|
|
44
|
+
====================== ======================
|
|
45
|
+
|
|
46
|
+
Parameters
|
|
47
|
+
----------
|
|
48
|
+
inputCols
|
|
49
|
+
Name of input annotation columns containing reranked documents
|
|
50
|
+
outputCol
|
|
51
|
+
Name of output annotation column containing ranked documents, by default "ranked_documents"
|
|
52
|
+
topK
|
|
53
|
+
Maximum number of top documents to return based on relevance score (-1 for no limit), by default -1
|
|
54
|
+
minRelevanceScore
|
|
55
|
+
Minimum relevance score threshold for filtering documents, by default Double.MinValue
|
|
56
|
+
minMaxScaling
|
|
57
|
+
Whether to apply min-max scaling to normalize relevance scores to 0-1 range, by default False
|
|
58
|
+
|
|
59
|
+
Examples
|
|
60
|
+
--------
|
|
61
|
+
>>> import sparknlp
|
|
62
|
+
>>> from sparknlp.base import *
|
|
63
|
+
>>> from sparknlp.annotator import *
|
|
64
|
+
>>> from pyspark.ml import Pipeline
|
|
65
|
+
>>> documentAssembler = DocumentAssembler() \\
|
|
66
|
+
... .setInputCol("text") \\
|
|
67
|
+
... .setOutputCol("document")
|
|
68
|
+
>>> reranker = AutoGGUFReranker.pretrained() \\
|
|
69
|
+
... .setInputCols("document") \\
|
|
70
|
+
... .setOutputCol("reranked_documents") \\
|
|
71
|
+
... .setQuery("A man is eating pasta.")
|
|
72
|
+
>>> finisher = GGUFRankingFinisher() \\
|
|
73
|
+
... .setInputCols("reranked_documents") \\
|
|
74
|
+
... .setOutputCol("ranked_documents") \\
|
|
75
|
+
... .setTopK(3) \\
|
|
76
|
+
... .setMinMaxScaling(True)
|
|
77
|
+
>>> pipeline = Pipeline().setStages([documentAssembler, reranker, finisher])
|
|
78
|
+
>>> data = spark.createDataFrame([
|
|
79
|
+
... ("A man is eating food.",),
|
|
80
|
+
... ("A man is eating a piece of bread.",),
|
|
81
|
+
... ("The girl is carrying a baby.",),
|
|
82
|
+
... ("A man is riding a horse.",)
|
|
83
|
+
... ], ["text"])
|
|
84
|
+
>>> result = pipeline.fit(data).transform(data)
|
|
85
|
+
>>> result.select("ranked_documents").show(truncate=False)
|
|
86
|
+
# Documents will be sorted by relevance with rank information in metadata
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
name = "GGUFRankingFinisher"
|
|
90
|
+
|
|
91
|
+
inputCols = Param(Params._dummy(),
|
|
92
|
+
"inputCols",
|
|
93
|
+
"Name of input annotation columns containing reranked documents",
|
|
94
|
+
typeConverter=TypeConverters.toListString)
|
|
95
|
+
|
|
96
|
+
outputCol = Param(Params._dummy(),
|
|
97
|
+
"outputCol",
|
|
98
|
+
"Name of output annotation column containing ranked documents",
|
|
99
|
+
typeConverter=TypeConverters.toListString)
|
|
100
|
+
|
|
101
|
+
topK = Param(Params._dummy(),
|
|
102
|
+
"topK",
|
|
103
|
+
"Maximum number of top documents to return based on relevance score (-1 for no limit)",
|
|
104
|
+
typeConverter=TypeConverters.toInt)
|
|
105
|
+
|
|
106
|
+
minRelevanceScore = Param(Params._dummy(),
|
|
107
|
+
"minRelevanceScore",
|
|
108
|
+
"Minimum relevance score threshold for filtering documents",
|
|
109
|
+
typeConverter=TypeConverters.toFloat)
|
|
110
|
+
|
|
111
|
+
minMaxScaling = Param(Params._dummy(),
|
|
112
|
+
"minMaxScaling",
|
|
113
|
+
"Whether to apply min-max scaling to normalize relevance scores to 0-1 range",
|
|
114
|
+
typeConverter=TypeConverters.toBoolean)
|
|
115
|
+
|
|
116
|
+
@keyword_only
|
|
117
|
+
def __init__(self):
|
|
118
|
+
super(GGUFRankingFinisher, self).__init__(
|
|
119
|
+
classname="com.johnsnowlabs.nlp.finisher.GGUFRankingFinisher")
|
|
120
|
+
self._setDefault(
|
|
121
|
+
topK=-1,
|
|
122
|
+
minRelevanceScore=float('-inf'), # Equivalent to Double.MinValue
|
|
123
|
+
minMaxScaling=False,
|
|
124
|
+
outputCol=["ranked_documents"]
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
@keyword_only
|
|
128
|
+
def setParams(self):
|
|
129
|
+
kwargs = self._input_kwargs
|
|
130
|
+
return self._set(**kwargs)
|
|
131
|
+
|
|
132
|
+
def setInputCols(self, *value):
|
|
133
|
+
"""Sets input annotation column names.
|
|
134
|
+
|
|
135
|
+
Parameters
|
|
136
|
+
----------
|
|
137
|
+
value : List[str]
|
|
138
|
+
Input annotation column names containing reranked documents
|
|
139
|
+
"""
|
|
140
|
+
if len(value) == 1 and isinstance(value[0], list):
|
|
141
|
+
return self._set(inputCols=value[0])
|
|
142
|
+
else:
|
|
143
|
+
return self._set(inputCols=list(value))
|
|
144
|
+
|
|
145
|
+
def getInputCols(self):
|
|
146
|
+
"""Gets input annotation column names.
|
|
147
|
+
|
|
148
|
+
Returns
|
|
149
|
+
-------
|
|
150
|
+
List[str]
|
|
151
|
+
Input annotation column names
|
|
152
|
+
"""
|
|
153
|
+
return self.getOrDefault(self.inputCols)
|
|
154
|
+
|
|
155
|
+
def setOutputCol(self, value):
|
|
156
|
+
"""Sets output annotation column name.
|
|
157
|
+
|
|
158
|
+
Parameters
|
|
159
|
+
----------
|
|
160
|
+
value : str
|
|
161
|
+
Output annotation column name
|
|
162
|
+
"""
|
|
163
|
+
return self._set(outputCol=[value])
|
|
164
|
+
|
|
165
|
+
def getOutputCol(self):
|
|
166
|
+
"""Gets output annotation column name.
|
|
167
|
+
|
|
168
|
+
Returns
|
|
169
|
+
-------
|
|
170
|
+
str
|
|
171
|
+
Output annotation column name
|
|
172
|
+
"""
|
|
173
|
+
output_cols = self.getOrDefault(self.outputCol)
|
|
174
|
+
return output_cols[0] if output_cols else "ranked_documents"
|
|
175
|
+
|
|
176
|
+
def setTopK(self, value):
|
|
177
|
+
"""Sets maximum number of top documents to return.
|
|
178
|
+
|
|
179
|
+
Parameters
|
|
180
|
+
----------
|
|
181
|
+
value : int
|
|
182
|
+
Maximum number of top documents to return (-1 for no limit)
|
|
183
|
+
"""
|
|
184
|
+
return self._set(topK=value)
|
|
185
|
+
|
|
186
|
+
def getTopK(self):
|
|
187
|
+
"""Gets maximum number of top documents to return.
|
|
188
|
+
|
|
189
|
+
Returns
|
|
190
|
+
-------
|
|
191
|
+
int
|
|
192
|
+
Maximum number of top documents to return
|
|
193
|
+
"""
|
|
194
|
+
return self.getOrDefault(self.topK)
|
|
195
|
+
|
|
196
|
+
def setMinRelevanceScore(self, value):
|
|
197
|
+
"""Sets minimum relevance score threshold.
|
|
198
|
+
|
|
199
|
+
Parameters
|
|
200
|
+
----------
|
|
201
|
+
value : float
|
|
202
|
+
Minimum relevance score threshold
|
|
203
|
+
"""
|
|
204
|
+
return self._set(minRelevanceScore=value)
|
|
205
|
+
|
|
206
|
+
def getMinRelevanceScore(self):
|
|
207
|
+
"""Gets minimum relevance score threshold.
|
|
208
|
+
|
|
209
|
+
Returns
|
|
210
|
+
-------
|
|
211
|
+
float
|
|
212
|
+
Minimum relevance score threshold
|
|
213
|
+
"""
|
|
214
|
+
return self.getOrDefault(self.minRelevanceScore)
|
|
215
|
+
|
|
216
|
+
def setMinMaxScaling(self, value):
|
|
217
|
+
"""Sets whether to apply min-max scaling.
|
|
218
|
+
|
|
219
|
+
Parameters
|
|
220
|
+
----------
|
|
221
|
+
value : bool
|
|
222
|
+
Whether to apply min-max scaling to normalize scores
|
|
223
|
+
"""
|
|
224
|
+
return self._set(minMaxScaling=value)
|
|
225
|
+
|
|
226
|
+
def getMinMaxScaling(self):
|
|
227
|
+
"""Gets whether to apply min-max scaling.
|
|
228
|
+
|
|
229
|
+
Returns
|
|
230
|
+
-------
|
|
231
|
+
bool
|
|
232
|
+
Whether min-max scaling is enabled
|
|
233
|
+
"""
|
|
234
|
+
return self.getOrDefault(self.minMaxScaling)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Copyright 2017-2022 John Snow Labs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
"""Contains classes for the GraphFinisher."""
|
|
15
|
+
|
|
16
|
+
from pyspark import keyword_only
|
|
17
|
+
from pyspark.ml.param import TypeConverters, Params, Param
|
|
18
|
+
from sparknlp.internal import AnnotatorTransformer
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class GraphFinisher(AnnotatorTransformer):
|
|
22
|
+
"""Helper class to convert the knowledge graph from GraphExtraction into a
|
|
23
|
+
generic format, such as RDF.
|
|
24
|
+
|
|
25
|
+
====================== ======================
|
|
26
|
+
Input Annotation types Output Annotation type
|
|
27
|
+
====================== ======================
|
|
28
|
+
``NONE`` ``NONE``
|
|
29
|
+
====================== ======================
|
|
30
|
+
|
|
31
|
+
Parameters
|
|
32
|
+
----------
|
|
33
|
+
|
|
34
|
+
inputCol
|
|
35
|
+
Name of input annotation column
|
|
36
|
+
outputCol
|
|
37
|
+
Name of finisher output column
|
|
38
|
+
cleanAnnotations
|
|
39
|
+
Whether to remove all the existing annotation columns, by default True
|
|
40
|
+
outputAsArray
|
|
41
|
+
Whether to generate an Array with the results, by default True
|
|
42
|
+
|
|
43
|
+
Examples
|
|
44
|
+
--------
|
|
45
|
+
This is a continuation of the example of
|
|
46
|
+
:class:`.GraphExtraction`. To see how the graph is extracted, see the
|
|
47
|
+
documentation of that class.
|
|
48
|
+
|
|
49
|
+
>>> graphFinisher = GraphFinisher() \\
|
|
50
|
+
... .setInputCol("graph") \\
|
|
51
|
+
... .setOutputCol("graph_finished")
|
|
52
|
+
... .setOutputAsArray(False)
|
|
53
|
+
>>> finishedResult = graphFinisher.transform(result)
|
|
54
|
+
>>> finishedResult.select("text", "graph_finished").show(truncate=False)
|
|
55
|
+
+-----------------------------------------------------+-----------------------------------------------------------------------+
|
|
56
|
+
|text |graph_finished |
|
|
57
|
+
+-----------------------------------------------------+-----------------------------------------------------------------------+
|
|
58
|
+
|You and John prefer the morning flight through Denver|[[(prefer,nsubj,morning), (morning,flat,flight), (flight,flat,Denver)]]|
|
|
59
|
+
+-----------------------------------------------------+-----------------------------------------------------------------------+
|
|
60
|
+
"""
|
|
61
|
+
inputCol = Param(Params._dummy(), "inputCol", "Name of input annotation col", typeConverter=TypeConverters.toString)
|
|
62
|
+
outputCol = Param(Params._dummy(), "outputCol", "Name of finisher output col", typeConverter=TypeConverters.toString)
|
|
63
|
+
cleanAnnotations = Param(Params._dummy(),
|
|
64
|
+
"cleanAnnotations",
|
|
65
|
+
"Whether to remove all the existing annotation columns",
|
|
66
|
+
typeConverter=TypeConverters.toBoolean)
|
|
67
|
+
outputAsArray = Param(Params._dummy(), "outputAsArray", "Finisher generates an Array with the results",
|
|
68
|
+
typeConverter=TypeConverters.toBoolean)
|
|
69
|
+
|
|
70
|
+
name = "GraphFinisher"
|
|
71
|
+
|
|
72
|
+
@keyword_only
|
|
73
|
+
def __init__(self):
|
|
74
|
+
super(GraphFinisher, self).__init__(classname="com.johnsnowlabs.nlp.GraphFinisher")
|
|
75
|
+
self._setDefault(
|
|
76
|
+
cleanAnnotations=True,
|
|
77
|
+
outputAsArray=True
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
@keyword_only
|
|
81
|
+
def setParams(self):
|
|
82
|
+
kwargs = self._input_kwargs
|
|
83
|
+
return self._set(**kwargs)
|
|
84
|
+
|
|
85
|
+
def setInputCol(self, value):
|
|
86
|
+
"""Sets name of input annotation column.
|
|
87
|
+
|
|
88
|
+
Parameters
|
|
89
|
+
----------
|
|
90
|
+
value : str
|
|
91
|
+
Name of input annotation column.
|
|
92
|
+
"""
|
|
93
|
+
return self._set(inputCol=value)
|
|
94
|
+
|
|
95
|
+
def setOutputCol(self, value):
|
|
96
|
+
"""Sets name of finisher output column.
|
|
97
|
+
|
|
98
|
+
Parameters
|
|
99
|
+
----------
|
|
100
|
+
value : str
|
|
101
|
+
Name of finisher output column.
|
|
102
|
+
"""
|
|
103
|
+
return self._set(outputCol=value)
|
|
104
|
+
|
|
105
|
+
def setCleanAnnotations(self, value):
|
|
106
|
+
"""Sets whether to remove all the existing annotation columns, by
|
|
107
|
+
default True.
|
|
108
|
+
|
|
109
|
+
Parameters
|
|
110
|
+
----------
|
|
111
|
+
value : bool
|
|
112
|
+
Whether to remove all the existing annotation columns, by default True.
|
|
113
|
+
"""
|
|
114
|
+
return self._set(cleanAnnotations=value)
|
|
115
|
+
|
|
116
|
+
def setOutputAsArray(self, value):
|
|
117
|
+
"""Sets whether to generate an Array with the results, by default True.
|
|
118
|
+
|
|
119
|
+
Parameters
|
|
120
|
+
----------
|
|
121
|
+
value : bool
|
|
122
|
+
Whether to generate an Array with the results, by default True.
|
|
123
|
+
"""
|
|
124
|
+
return self._set(outputAsArray=value)
|
|
125
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Copyright 2017-2022 John Snow Labs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
"""Contains HasRecursiveFit property for estimators."""
|
|
15
|
+
|
|
16
|
+
from abc import ABC
|
|
17
|
+
|
|
18
|
+
from sparknlp.internal import RecursiveEstimator
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class HasRecursiveFit(RecursiveEstimator, ABC):
|
|
22
|
+
"""Properties for the implementation of the RecursivePipeline."""
|
|
23
|
+
pass
|
|
24
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Copyright 2017-2022 John Snow Labs
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
"""Contains HasRecursiveFit property for Spark transformers."""
|
|
15
|
+
|
|
16
|
+
from sparknlp.internal import RecursiveTransformer
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class HasRecursiveTransform(RecursiveTransformer):
|
|
20
|
+
"""Properties for the implementation of the RecursivePipeline."""
|
|
21
|
+
pass
|
|
22
|
+
|