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)
def test_word2vec_ft(self): pipeline = Pipeline( DataLoader(text_processor=self.text_processor, n_grams=3), TextEncoder(encode_type=LSTMTestCase.EncodingAliases.W2V, model_path=LSTMTestCase.W2V_PRETRAINED), 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)
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' ])
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')
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()
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)}')
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()
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)}')