readme- 老司机版
Corpus + Code + "Pass On"Bilibili Meme에 대한 훈련 된 모델.
이 저장소는 특히 사람들이 그것을 통과 할 때 사람들이 어떻게 더 충격을 받고 (또는 때로는 재미있는) 소문 (또는 사실)을 어떻게 개혁하고 (또는 사실)하는 방법에 대한 소문 전파를 연구하는 데 도움이 될 수 있습니다.
한편, "Pass It On"은 Bilibili 밈이기도합니다. 사람들은 업 로더가 원래 의미하는 바를 의도적으로 잘못 해석하려는 비디오 나 게시물에 대한 의견을 쓸 것입니다.
python 3.6
tensorflow 1.14.0
bert4keras 0.10.6
jieba
우리는 "Bilibili Meme"의 패턴을 사용하여 3W Bilibili 주석을 코퍼스에 제공합니다 (즉, "Pass It On,"로 시작하는 의견).
우리는 주로 지난 3 년간 "올해의 상위 100 개 업로더"의 비디오/게시물 댓글을 기어 올렸습니다. Genshin 영향과 같은 수백만 명의 추종자가있는 여러 채널도 포함되어 있습니다. 코퍼스는 전체 Bilibili 사용자/댓글 배포를 나타 내기에 충분히 크지 않습니다.
원래 데이터는 데이터 폴더에서 "corpus.json"으로 저장되며 사전 목록입니다.
{
"context": {
"bvid": "BV1Gb4y167gE",
"uid": "476704454"
},
"rumors": [
{
"source": "热情的舟山人民把小文哥当海鲜吃了",
"propagations": []
},
{
"source": "5147779123",
"propagations": [
"舟山的海鲜把小文哥吃了",
"舟山的海鲜想让小文哥吃人",
"热情的小文哥把海鲜当成舟山人民吃了",
"小文哥热情地把舟山上的海鲜吃了",
"热情的海鲜在舟山到处吃小文哥",
"热情的舟山海鲜把小文哥给吃了。",
"舟山的热情海鲜把小文哥吃了",
"小文哥带着热情的海鲜把舟山吃了"
]
},
{
"source": "小文哥把舟山人民配海鲜吃了",
"propagations": []
}
]
},
{
"context": {
"bvid": "BV1Bw411d7r8",
"uid": "476704454"
},
"rumors": [
{
"source": "小文哥吃了兄弟家一山头的桃",
"propagations": []
}
]
}
모든 데이터는 Bilibili 비디오 또는 게시 주석에서 수집됩니다. 누군가가 "Pass It On"패턴으로 댓글을 작성하면 다른 사람들은 종종 동일한 패턴으로 하위 컴퓨팅을 따르고 남겨 둡니다. 예를 들어,
a comment : pass it on, the uploader says he likes this girl.
sub-comment-1: pass it on, the uploader likes to be a girl
sub-comment-2: pass it on, the uploader likes to be a boy
sub-comment-3: pass it on, the uploader is a girl
...
데이터/corpus.json의 각 요소에 대해
context: # so that one could refer to source page
bvid: # video (post) id
uid: # user (uploader) id
rumors: # a list containing rumors
[
{
source: # source of rumors, might be a comment or just a comment_id (if source has no "pass it on" pattern)
propagations: # list of sub-comments, spreading the source in time order
},
{source, propagations},
{source, propagations},
...
]
또한 "Data/Train.samples", "sentence1 t sentence2"라인 별 형식의 교육 데이터를 도출합니다. 290,000 문장 쌍이 포함되어 있습니다.
우리는 단순히 과제를 전형적인 텍스트 생성으로 취급합니다.
이 과제는 텍스트 역설 (유사한 문장 생성)과 유사하지만 이번에는 비슷한 문장 공식에도 불구하고 의도적으로 의미 론적 이동을 원합니다.
게다가, 소스와 전파 사이의 일대일 관계에있는 또 다른 도전이 있습니다.
우리는 Roformer-SIM 사전에 사전 된 생성-랭크 모델을 우리의 백본으로 이용합니다. 게다가, 이전에 언급 한 바와 같이 소스 프로파일을 일대일 관계를 모델링하기 위해, 우리는 Plato Way에 잠재 변수를 추가합니다. 여기서 특수 토큰이 잠재 변수를 나타내는 텍스트를 입력하도록 선정됩니다. 따라서 학습도 약간 다릅니다.
참고 : 우리는 플라톤과 같은 모델 구현이 정확하다는 것을 100% 확신하지 못합니다 [DOGE]
우리는 공공 사용을위한 모델을 오픈 소스로 소송합니다. 12 층 수정 된 로이 포머 모델입니다.
구글 드라이브
참고 $ your_model_path 다운로드 된 모델의 모델 디렉토리를 사용하여 명령 줄을 사용하여 다음과 같이 추론을 수행 할 수 있습니다.
python train_latent.py --do_predict --model_dir=$your_model_path --n=1 --topp=0.8 --text=any_text
input: up主喜欢小天使
========== predict:
传下去,up主疑似在天堂被天台感动
传下去,up喜欢天穹
传下去,up主家里有天星
传下去,天使喜欢戴眼镜的up主
传下去,up没有天堂
传下去,up叫天台来烤粉丝。
传下去,up每天早上要直播露脸
传下去,up下天生孩子
传下去,up到天台高产了
传下去,up上天堂了
传下去,up和天使吃了
传下去,楼主的那个帅小伙要穿天堂
传下去,up要cos女巫直播
传下去,天堂大up要爽了
传下去,up下天生孩子翻车了
传下去,up不是人
传下去,天天抽一个up吃8个小孩
传下去,三天之后,up主要被魅魔掏心脏了
input: 帝君喜欢吃花生米
========== predict:
传下去,帝君喜欢吃干净的小孩子。
传下去,帝君喜欢捆绑
传下去,帝君用生煎包吃花生米
传下去,帝君吃傻子吃腻了
传下去,喜欢帝君的来自花生米
传下去,花生米吃帝君
传下去,神像吃吃沙子
传下去,我吃帝君屁股
传下去,帝君身边有个米哈游
传下去,帝君只剩干了
传下去,仙跳墙使帝君心疼
传下去,帝君今天上了小通宵
传下去,帝君上床了
传下去,帝君没有下半身
传下去,帝君要炸百京贵妇
传下去,十个视频有了帝君
传下去,帝君会喂食尘神当生日礼物
传下去,视频下一次更新十个帝君
传下去,这个视频里有一年的课代表
input: 川建国要复辟了
========== predict:
传下去,川建国想要
传下去,川宝上任国君了
传下去,川宝变艾伦了
传下去,《不要传传》
传下去,川宝有天火了。
传下去,阿舅变成了川宝
传下去,川宝长大了也不会忘开
传下去,《川宝要制杖》
传下去,总之,川宝喜欢新衣服
传下去,齐格飞要斩四郎
传下去,老八要吃了川宝
传下去,川普不喜欢制杖
传下去,川团老表是孙笑川
传下去,三叔写盗墓笔记
传下去,川宝没有才浅是制杖
传下去,《川宝喜欢才浅制杖》
传下去,我要吃川宝老爷子
传下去,《我才是川宝喜欢的人》
传下去,全世界辣鸡都不用吃川宝!
传下去,有人冒充川宝想被粉丝上
기본적으로 Batch_size = 128을 가진 10 개의 에포크를 훈련시킵니다. 사전에 사전 검사 점을 적용하는 것이 좋습니다. (예 : 30 행, Checkpoint_path = "Chinese_roforMer-SIM-Char-FT_L-12_H-768_A-12")
python train_latent.py --model_dir=$your_model_dir --train=data/train.samples
이 모델은 완전히 데이터 중심의 방법 이므로이 모델은 보이지 않거나 도메인 이외의 입력에 대해 이상하거나 비 유량 문장을 생성 할 수 있으며, 이는 상당히 합리적입니다.
그건 그렇고, 추가 흥미로운 코퍼스가 환영받습니다.