我想从新闻文章中提取潜在的句子,这些句子可以作为文章摘要的一部分。在
花了一段时间,我发现这可以通过两种方式实现
{a1}
我跟随abigailsee's Get To The Point: Summarization with Pointer-Generator Networks进行总结,使用预先训练的模型可以产生很好的结果,但它是抽象的。在
问题: 到目前为止,我看到的大多数抽取式摘要生成器(pytraser、PyTextRank和Gensim)都不是基于监督学习,而是基于朴素贝叶斯分类器、tf–idf、词性标注、基于关键字频率、位置等的句子排序,不需要任何训练。在
到目前为止,我很少尝试提取潜在的摘要语句。在
from keras.preprocessing.text import Tokenizer
将文本语料库矢量化,词汇量为20000,并将所有序列填充到所有句子的平均长度。在model_lstm = Sequential()
model_lstm.add(Embedding(20000, 100, input_length=sentence_avg_length))
model_lstm.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model_lstm.add(Dense(1, activation='sigmoid'))
model_lstm.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
这是非常低的精度~0.2
我认为这是因为上面的模型更适合于肯定句/否定句,而不是摘要/非摘要句分类。在
如能就解决这一问题的方法提供任何指导,我们将不胜感激。在
没错。以上模型用于二值分类,而不是文本摘要。如果您注意到,输出(
Dense(1, activation='sigmoid')
)只给您0-1的分数,而在文本摘要中,我们需要一个生成一系列标记的模型。在我该怎么办?
解决这个问题的主要思想是encoder-decoder(也称为seq2seq)模型。在Keras上有一个用于机器翻译的nice tutorial库,但是它很容易适应文本摘要。在
代码的主要部分是:
基于上述实现,需要将}分别传递给
encoder_input_data
、decoder_input_data
和{model.fit()
,它们分别是输入文本和文本的摘要版本。在注意,}是相同的东西,除了}前面的一个标记。在
decoder_input_data
和{decoder_target_data
是在{由于训练规模小、过拟合、欠拟合等原因,导致了训练精度不高
相关问题 更多 >
编程相关推荐