Exemple #1
0
    def test_tf_idf(self):
        pipeline = Pipeline(
            DataLoader(text_processor=self.text_processor, n_grams=3),
            TextEncoder(encode_type=SGDTestCase.EncodingAliases.TF_IDF),
            SGDClassifier(num_labels=3))
        pipeline(train=SGDTestCase.INPUT_FILE, test=SGDTestCase.OUTPUT_FILE)
        pipeline.save(SGDTestCase.SAVED_PATH)

        _pipeline = Pipeline.load(SGDTestCase.SAVED_PATH)
        self.assertIsInstance(_pipeline, Pipeline)

        predict_results = _pipeline.predict([
            'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi '
            '.cần nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
            'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên '
            'chuẩn, đẹppppp'
        ])

        self.assertIsInstance(predict_results, np.ndarray)
Exemple #2
0
    def test_one_hot_ft(self):
        pipeline = Pipeline(
            DataLoader(text_processor=self.text_processor, n_grams=1),
            TextEncoder(encode_type=LSTMTestCase.EncodingAliases.ONE_HOT),
            LSTMClassifier(num_labels=3,
                           num_epochs=3,
                           bidirectional=False,
                           attention=True))
        pipeline(train=LSTMTestCase.INPUT_FILE, test=LSTMTestCase.OUTPUT_FILE)
        pipeline.save(LSTMTestCase.SAVED_PATH)

        _pipeline = Pipeline.load(LSTMTestCase.SAVED_PATH)
        self.assertIsInstance(_pipeline, Pipeline)

        predict_results = _pipeline.predict([
            'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi '
            '.cần nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
            'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên '
            'chuẩn, đẹppppp'
        ])

        self.assertIsInstance(predict_results, np.ndarray)
Exemple #3
0
    def test_one_hot(self):
        pipeline = Pipeline(
            DataLoader(text_processor=self.text_processor, n_grams=3),
            TextEncoder(
                encode_type=TransformerTestCase.EncodingAliases.ONE_HOT),
            TransformerClassifier(
                num_labels=3,
                language_model_shortcut=TransformerTestCase.LM_SHORTCUT))
        pipeline(train=TransformerTestCase.INPUT_FILE,
                 test=TransformerTestCase.OUTPUT_FILE)
        pipeline.save(TransformerTestCase.SAVED_PATH)

        _pipeline = Pipeline.load(TransformerTestCase.SAVED_PATH)
        self.assertIsInstance(_pipeline, Pipeline)

        predict_results = _pipeline.predict([
            'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi '
            '.cần nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
            'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên '
            'chuẩn, đẹppppp'
        ])

        self.assertIsInstance(predict_results, np.ndarray)
Exemple #4
0
from sentivi import Pipeline
from sentivi.data import DataLoader, TextEncoder
from sentivi.classifier import LSTMClassifier
from sentivi.text_processor import TextProcessor

if __name__ == '__main__':
    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation', 'lower'])

    pipeline = Pipeline(
        DataLoader(text_processor=text_processor, n_grams=2, max_length=100),
        TextEncoder(encode_type='word2vec',
                    model_path='./pretrained/wiki.vi.model.bin.gz'),
        LSTMClassifier(num_labels=2,
                       bidirectional=False,
                       attention=True,
                       device='cuda',
                       hidden_layers=1))

    train_results = pipeline(train='./data/dev.vi',
                             test='./data/dev_test.vi',
                             num_epochs=3,
                             learning_rate=1e-3)
    print(train_results)

    predict_results = pipeline.predict([
        'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
        'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
        'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
        'đẹppppp', 'Son rất đẹp màu xinh lắm'
    ])
Exemple #5
0
from sentivi import Pipeline
from sentivi.data import DataLoader, TextEncoder
from sentivi.classifier import NaiveBayesClassifier
from sentivi.text_processor import TextProcessor

if __name__ == '__main__':
    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation'])

    pipeline = Pipeline(
        DataLoader(text_processor=text_processor, n_grams=1),
        TextEncoder(encode_type='word2vec',
                    model_path='./pretrained/wiki.vi.model.bin.gz'),
        NaiveBayesClassifier(num_labels=3))

    train_results = pipeline(train='./data/data_done.txt',
                             test='./data/test_data.txt')
    print(train_results)
    print(pipeline.get_labels_set())

    #
    # predict_results = pipeline.predict(['hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
    #                                     'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
    #                                     'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
    #                                     'đẹppppp'])
    # print(predict_results)
    # print(f'Decoded results: {pipeline.decode_polarity(predict_results)}')
Exemple #6
0
from sentivi import Pipeline
from sentivi.data import DataLoader, TextEncoder
from sentivi.classifier import TextCNNClassifier
from sentivi.text_processor import TextProcessor

if __name__ == '__main__':
    text_processor = TextProcessor(methods=['word_segmentation', 'remove_punctuation', 'lower'])

    pipeline = Pipeline(DataLoader(text_processor=text_processor, n_grams=2),
                        TextEncoder(encode_type='tf-idf', model_path='./pretrained/wiki.vi.model.bin.gz'),
                        TextCNNClassifier(num_labels=3))

    train_results = pipeline(train='./data/dev.vi', test='./data/dev_test.vi', num_epochs=3)
    print(train_results)

    predict_results = pipeline.predict(['hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
                                        'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
                                        'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
                                        'đẹppppp', 'Son rất đẹp màu xinh lắm'])
    print(predict_results)
    print(f'Decoded results: {pipeline.decode_polarity(predict_results)}')

    pipeline.save('./weights/text_cnn.sentivi')
Exemple #7
0
from sentivi import Pipeline
from sentivi.data import DataLoader, TextEncoder
from sentivi.classifier import NearestCentroidClassifier
from sentivi.text_processor import TextProcessor

if __name__ == '__main__':
    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation', 'lower'])

    pipeline = Pipeline(
        DataLoader(text_processor=text_processor, n_grams=3),
        TextEncoder(encode_type='word2vec',
                    model_path='./pretrained/wiki.vi.model.bin.gz'),
        NearestCentroidClassifier(num_labels=3))

    train_results = pipeline(train='./data/dev.vi', test='./data/dev_test.vi')
    print(train_results)

    predict_results = pipeline.predict([
        'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
        'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
        'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
        'đẹppppp'
    ])
    print(predict_results)
    print(f'Decoded results: {pipeline.decode_polarity(predict_results)}')
Exemple #8
0
from sentivi import Pipeline, RESTServiceGateway

pipeline = Pipeline.load('./weights/pipeline.sentivi')
server = RESTServiceGateway(pipeline).get_server()

# docker run -d --name sentivi_serving_02 -p 8000:80 --env APP_MODULE=test.serving:server --env WORKERS_PER_CORE=0.75
# --env MAX_WORKERS=6 --env HOST=0.0.0.0 --env PORT=80 --env PYTHONPATH=/app -v `pwd`:/app
# tiangolo/uvicorn-gunicorn-fastapi:python3.7 pip install -r requirements.txt
Exemple #9
0
                                 type=str,
                                 default=os.path.join(
                                     'data', 'logs',
                                     f'{CLASSIFIER.__name__}.txt'))
    args = argument_parser.parse_args()

    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation'])

    encoding = 'transformer'
    file_writer = open(args.log, 'w+')

    train_pipeline = Pipeline(
        DataLoader(text_processor=text_processor,
                   n_grams=args.n_grams,
                   max_length=256), TextEncoder(encode_type=encoding),
        CLASSIFIER(num_labels=3,
                   language_model_shortcut='vinai/phobert-base',
                   device='cuda'))

    train_results = train_pipeline(train=args.train_file,
                                   test=args.test_file,
                                   num_epochs=30,
                                   batch_size=4)

    print(f'Experiment_{encoding}_{CLASSIFIER.__name__}:\n{train_results}')
    file_writer.write(
        f'Experiment_{encoding}_{CLASSIFIER.__name__}:\n{train_results}\n')
    file_writer.write('*' * 15 + '\n')

    file_writer.close()
Exemple #10
0
from sentivi import Pipeline
from sentivi.data import DataLoader, TextEncoder
from sentivi.classifier import TransformerClassifier
from sentivi.text_processor import TextProcessor

if __name__ == '__main__':
    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation', 'lower'])

    pipeline = Pipeline(
        DataLoader(text_processor=text_processor, n_grams=1, max_length=100),
        TextEncoder(encode_type='transformer'),
        TransformerClassifier(num_labels=3,
                              language_model_shortcut='vinai/phobert-base',
                              device='cuda'))

    train_results = pipeline(train='./data/dev.vi',
                             test='./data/dev_test.vi',
                             num_epochs=30,
                             learning_rate=1e-3)
    print(train_results)

    predict_results = pipeline.predict([
        'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
        'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
        'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
        'đẹppppp', 'Son rất đẹp màu xinh lắm'
    ])
    print(predict_results)
    print(f'Decoded results: {pipeline.decode_polarity(predict_results)}')
Exemple #11
0
                                 default=os.path.join('data', 'test_data.txt'))
    argument_parser.add_argument('--log',
                                 type=str,
                                 default=os.path.join(
                                     'data', 'logs',
                                     f'{CLASSIFIER.__name__}.txt'))
    args = argument_parser.parse_args()

    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation'])

    file_writer = open(args.log, 'w+')
    for encoding in ENCODING_TYPE:
        train_pipeline = Pipeline(
            DataLoader(text_processor=text_processor, n_grams=args.n_grams),
            TextEncoder(encode_type=encoding,
                        model_path='./pretrained/wiki.vi.model.bin.gz'),
            CLASSIFIER(num_labels=3, verbose=True))

        train_results = train_pipeline(train=args.train_file,
                                       test=args.test_file,
                                       num_epochs=10,
                                       batch_size=4)

        print(f'Experiment_{encoding}_{CLASSIFIER.__name__}:\n{train_results}')
        file_writer.write(
            f'Experiment_{encoding}_{CLASSIFIER.__name__}:\n{train_results}\n')
        file_writer.write('*' * 15 + '\n')

    file_writer.close()
Exemple #12
0
from sentivi import Pipeline
from sentivi.data import DataLoader, TextEncoder
from sentivi.classifier import SVMClassifier
from sentivi.text_processor import TextProcessor

if __name__ == '__main__':
    text_processor = TextProcessor(
        methods=['word_segmentation', 'remove_punctuation', 'lower'])

    pipeline = Pipeline(DataLoader(text_processor=text_processor, n_grams=3),
                        TextEncoder(encode_type='one-hot'),
                        SVMClassifier(num_labels=3))

    train_results = pipeline(train='./data/dev.vi', test='./data/dev_test.vi')
    print(train_results)

    pipeline.save('./weights/pipeline.sentivi')
    _pipeline = Pipeline.load('./weights/pipeline.sentivi')

    predict_results = _pipeline.predict([
        'hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
        'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
        'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
        'đẹppppp'
    ])
    print(predict_results)
    print(f'Decoded results: {_pipeline.decode_polarity(predict_results)}')