自动生成时间表 - 一个时期的图形表示,从Wikipedia文章中标记重要事件是一个令人着迷的想法,对于快速掌握历史观点非常有用。这篇文章概述了使用WinkNLP’s API从任何Wikipedia文章中创建一个格式良好的时间表的方法,并命名实体识别(NER)功能:
- 获取文章的内容,然后将其转换为WinkNLP document。
- 通过检测到的entities和仅过滤日期。
- 使用日期的Abiaoqian 4将其转换为标准的Unix时间。
- 使用parentSentence() API,提取包含日期的句子;同样,markup()在相应的句子中突出显示它的日期。
- 在数组中收集每个Unix时间和句子对,然后在Unix时间进行排序。
- 使用可观察的功能以及某些CSS将此数组转换为格式良好的时间轴。
上述方法在大约 30 的代码线上实现:
timeLine = {
const response = await fetch( `https://en.wikipedia.org/w/api.php?action=query&prop=extracts&titles=${WikiArticleTitle || '2022 United Nations Climate Change Conference'}&explaintext=1&formatversion=2&format=json&origin=*` );
const body = await response.json();
const text = body.query.pages[ 0 ].extract;
var doc = nlp.readDoc( text || '' );
var timeline = [];
doc
.entities()
.filter( ( e ) => {
var shapes = e.tokens().out( its.shape );
// We only want dates that can be converted to an actual
// time using new Date()
return (
e.out( its.type ) === 'DATE' &&
(
shapes[ 0 ] === 'dddd' ||
( shapes[ 0 ] === 'Xxxxx' && shapes[ 1 ] === 'dddd' ) ||
( shapes[ 0 ] === 'Xxxx' && shapes[ 1 ] === 'dddd' ) ||
( shapes[ 0 ] === 'dd' && shapes[ 1 ] === 'Xxxxx' && shapes[ 2 ] === 'dddd' ) ||
( shapes[ 0 ] === 'dd' && shapes[ 1 ] === 'Xxxx' && shapes[ 2 ] === 'dddd' ) ||
( shapes[ 0 ] === 'd' && shapes[ 1 ] === 'Xxxxx' && shapes[ 2 ] === 'dddd' ) ||
( shapes[ 0 ] === 'd' && shapes[ 1 ] === 'Xxxx' && shapes[ 2 ] === 'dddd' )
)
);
})
.each( ( e ) => {
e.markup();
let eventDate = e.out();
if ( isNaN( eventDate[ 0 ] ) ) eventDate = '1 ' + eventDate;
timeline.push({
date: e.out(),
unixTime: new Date( eventDate ).getTime() / 1000,
sentence: e.parentSentence().out( its.markedUpText )
})
});
return timeline.sort( ( a, b ) => a.unixTime - b.unixTime )
}
您可以在交互式Observable notebook — "How to visualize timeline of a Wiki article?"上看到它。
关于winknlp
abiaoqian 9是自然语言处理(NLP)的JavaScript库(NLP)。它可以在浏览器和node.js环境中的M1 MacBook Pro上轻松地以 650,000令牌/秒的速度处理大量原始文本。它甚至可以在低端智能手机的浏览器上平稳运行。
它是用具有no external dependency的精益代码库来构建的。 ~100%的测试覆盖范围和遵守Open Source Security Foundation best practices的遵守使Winknlp成为自信地建立生产级系统的理想工具。