MarkovUnchained
MarkovUnchained是一个简单通用的Swift实现,用于处理马尔可夫链。参见http://setosa.io/ev/markov-chains/,获取有关马尔可夫链的详细描述(配以酷炫的视觉效果)。使用MarkovUnchained,您可以使用一组状态建立马尔可夫链,并为任何给定现有状态预测下一个状态。
示例
要运行示例项目,请先克隆仓库,然后首先从Example目录运行pod install
。该项目使用乔治·奥威尔的1984文本作为语料库,并根据给定启始词生成100个单词。
安装
MarkovUnchained可以通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中
pod 'MarkovUnchained'
使用
构建马尔可夫链
可以使用任何可哈希类型来构建马尔可夫链。`.build(from: _)`函数和提供的回调在后台队列上运行。
let corpus = readSomeTextFile()
let chain = MarkovChain<String>()
chain.build(from: corpus) {
// on complete
}
使用马尔可夫链
预测状态的每次检索都可以通过以下枚举来设置选择方式:
public enum SelectionType {
case random // purely random as to which state is chosen
case weighted // states with higher weights are likely to be chosen
case mixed // default, either random or weighted is used to choose next state
}
单个预测状态
let nextState = chain.nextState(for: "me", selectionType: .random)
预测状态列表
let states = "This is a short sentence but now it's long".split(separator: " ")
let predictedStates = chain.nextStates(for: states, selectionType: .weighted)
N个预测状态
let predictedStates = chain.nextStates(100, for: "lmao", using: .mixed)
许可协议
MarkovUnchained 适用于 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。