69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
const fs = require("fs");
|
||
//青空文庫から落としたファイルの場合、一度shift-jisからutf-8に変換すること。
|
||
//例で使用したのはフランツ・カフカ「変身」
|
||
//https://www.aozora.gr.jp/cards/001235/card49866.html
|
||
const src = "henshin.txt";
|
||
//ファイルをテキストデータとして読み込み
|
||
const txt = fs.readFileSync(src).toString();
|
||
|
||
//長いデータの中身を見てみたい場合は、頭の1000文字だけ取り出してコンソールに流すなどする
|
||
// const summary = txt.slice(0,1000);
|
||
// console.log(summary)
|
||
|
||
// 主人公の名前だけを抜き出して空白に置き換える
|
||
const no_gregor = txt.replace(/グレゴール/gm, "《 》");
|
||
|
||
fs.writeFileSync("henshin_nogregor.txt", no_gregor);
|
||
|
||
let only_gregor = "";
|
||
let lines = txt.split(/\n/);
|
||
|
||
//逆に、主人公の名前以外は全て◻︎で置き換えてみよう
|
||
for (l of lines) {
|
||
const array = l.split("グレゴール");
|
||
if (array.length > 1) {
|
||
only_gregor += array.map((s) => "□".repeat(s.length)).join('グレゴール');
|
||
} else {
|
||
only_gregor += "□".repeat(array[0].length)
|
||
}
|
||
only_gregor += "\n"
|
||
}
|
||
fs.writeFileSync("henshin_onlygregor.txt", only_gregor);
|
||
|
||
//会話だけを抜き出してみる
|
||
let only_spoken_words = "";
|
||
for (l of lines) {
|
||
// let matches= l.match(/「(.*)」/g);
|
||
let matches = l.match(/「([^」]+)」/g);
|
||
if (matches != null) {
|
||
only_spoken_words += matches.join("\n") + "\n"
|
||
}
|
||
}
|
||
fs.writeFileSync("henshin_onlyspokenwords.txt", only_spoken_words);
|
||
|
||
//会話の中で!で終わるものだけを抜き出してみる
|
||
let excramation = "";
|
||
for (l of lines) {
|
||
let matches = l.match(/(?!。| |「)([^。 「]*?)!/g);
|
||
if (matches != null) {
|
||
excramation += matches.join("\n") + "\n"
|
||
}
|
||
}
|
||
|
||
fs.writeFileSync("henshin_excramation.txt", excramation);
|
||
|
||
|
||
//テキストを文字の配列として扱い、後半に行くにつれて文字コードを確率的にずらしていく
|
||
let nextunicode = "";
|
||
let probability = 0.0;
|
||
const tarray = Array.from(txt);
|
||
for (const c of tarray) {
|
||
if (c.at(0) == "\n") {
|
||
nextunicode += "\n";
|
||
} else {
|
||
nextunicode += String.fromCodePoint(c.codePointAt(0) + Math.floor(Math.random() * probability * 6));
|
||
}
|
||
probability += 1 / tarray.length;
|
||
}
|
||
|
||
fs.writeFileSync("henshin_nextunicode.txt", nextunicode); |