나는 텍스트를 생성하기 위해 찾고있었습니다.Markov-Text 생성
지금까지 학습 한 내용은 단어 수준의 Markov-text 생성을 사용해야한다는 것입니다. 나는이 사이트에있는 사람들의 몇 가지 예를 발견했다. here
이제는 제대로 작동하지 않는다는 것을 알았으므로 어쨌든 시도해보고 처리에 복사했습니다. 올바른 라이브러리를 찾지 못하는 오류.
처리가 완료된 텍스트 생성을 수행하는 방법에 대해 더 자세히 알아 보려는 사람이 있습니까? 또는 협업을 원하는 사람조차도. 오픈 소스 란 무엇인가.
내가 원하는 것은 글자 수는 단어 기반이어야하고 데이터베이스는 내가 입력 한 단어로 제공된다는 점을 제외하면 사이트의 예와 많이 다르지 않습니다. 마지막 부분은 내가 여전히 브레인 스토밍을하고있는 다른 소스로 변경 될 수 있습니다. 그러나 실제로 모든 단어가 될 수 있습니다. 아이디어가 있으시면 언제든지 기고 해주십시오.
다른 포럼에서 더 많이 알게되면이 게시물을 편집하겠습니다. 그래서 해결책이있을 때 그것을 다른 사람들에게 전할 수 있습니다.
편집 : 해결 방법은 발전기에 사용할 텍스트를 다음
// required imports for Processing
import java.util.Hashtable;
import java.util.Vector;
String inputFile = "Sonnet51.txt";
Markov markovChain1;
String sentence = "";
void setup() {
size (900, 500);
background(0);
markovChain1 = new Markov();
// load text
String[] input = loadStrings(inputFile);
for (String line : input) {
markovChain1.addWords(line);
println(line);
}
// generate a sentence!
sentence = markovChain1.generateSentence();
println("-------------");
}
void draw() {
background(0);
// noLoop();
fill(255);
text(sentence, 19, 190);
fill(2, 255, 2);
text("Please press mouse", 19, height-33);
}
void mousePressed() {
// generate a sentence!
sentence = markovChain1.generateSentence();
println(sentence);
}
// ==========================================
class Markov {
Hashtable<String, Vector<String>> markovChain =
new Hashtable<String, Vector<String>>();
Markov() {
markovChain.put("_start", new Vector<String>());
markovChain.put("_end", new Vector<String>());
}
void addWords(String line) {
String[] words = line.split(" ");
for (int i=0; i<words.length; i++) {
if (i == 0) {
Vector<String> startWords = markovChain.get("_start");
startWords.add(words[i]);
Vector<String> suffix = markovChain.get(words[i]);
if (suffix == null) {
suffix = new Vector<String>();
suffix.add(words[i+1]);
markovChain.put(words[i], suffix);
}
}
else if (i == words.length-1) {
Vector<String> endWords = markovChain.get("_end");
endWords.add(words[i]);
}
else {
Vector<String> suffix = markovChain.get(words[i]);
if (suffix == null) {
suffix = new Vector<String>();
suffix.add(words[i+1]);
markovChain.put(words[i], suffix);
}
else {
suffix.add(words[i+1]);
markovChain.put(words[i], suffix);
}
}
}
}
String generateSentence() {
String newPhrase = "";
String nextWord = "";
Vector<String> startWords = markovChain.get("_start");
int startWordsLen = startWords.size();
nextWord = startWords.get(int(random(startWordsLen)));
newPhrase += " " + nextWord;
while (nextWord.charAt (nextWord.length()-1) != '.') {
Vector<String> wordSelection=null;
wordSelection = markovChain.get(nextWord);
if (wordSelection!=null) {
int wordSelectionLen = wordSelection.size();
nextWord = wordSelection.get(int(random(wordSelectionLen-1)));
newPhrase += " " + nextWord;
}
else
{
return newPhrase.toString();
}
}
return newPhrase.toString();
}
} // class
//
사용을 생성 CLICKBASED.
Thus can my love excuse the slow offence
Of my dull bearer when from thee I speed
From where thou art why should I haste me thence
Till I return of posting is no need
O! what excuse will my poor beast then find
When swift extremity can seem but slow
Then should I spur though mounted on the wind.
In winged speed no motion shall I know.
Then can no horse with my desire keep pace.
Therefore desire of perfectst love being made.
Shall neigh no dull flesh in his fiery race;
But love for love thus shall excuse my jade.
Since from thee going, he went wilful-slow
Towards thee Ill run, and give him leave to go.
이제 완전히 작동하고 더 큰 텍스트를 만들기 위해 변경할 수 있습니다. 나는 아무도 아이디어를 내게 알려주지 않았다. 하지만이 사건은 나를 위해 해결되었습니다. Processing 포럼의 ChrisIr에게 감사드립니다.
일부 코드를 표시하십시오. 구체적인 문제를 설명하십시오. – DrKoch
코드는 정렬 된 단어 목록을 생성하고 이진 검색을 수행합니다. 빈도/가중치/계수가 없으므로 마르코프 프로세스는 거의 없습니다. 오, 그는 여러 단어를 하나의 "단어"로 저장하는 것처럼 보입니다. 왝. – joop
나는 코드를 작성하지 않았다. 내 질문은 어디에서 처리 할 코드를 생성하는 markov 기반 텍스트와 같은 것을 찾을 수 있는가이다. 위의 사람이 코드를 요청 했으므로 찾은 자료에서 코드를 제공하고 있습니다. 다른 리소스를 제공하거나 분석을 다른 사람에게 유용하게 사용하면 도움이됩니다. 나를. 그렇지 않으면 나는 정말로 당신의 코멘트를 위해 무엇을 가리키는 지 전혀 보지 못한다. 내가 틀렸다는 것을 설명해주십시오. – Blckpstv