mirror of
https://github.com/laosb/ReadabilityFramework.git
synced 2025-04-30 12:41:08 +00:00
fix: Publish functions.
This commit is contained in:
parent
73b8996beb
commit
4343848549
5 changed files with 25 additions and 19 deletions
|
@ -17,11 +17,11 @@ public enum RACommonMetric {
|
|||
}
|
||||
|
||||
public struct RACommonMetricsCalculator {
|
||||
typealias Results = [RACommonMetric: Double]
|
||||
public typealias Results = [RACommonMetric: Double]
|
||||
|
||||
private var metrics: Set<RACommonMetric>
|
||||
|
||||
init(metrics: Set<RACommonMetric>) {
|
||||
public init(metrics: Set<RACommonMetric>) {
|
||||
self.metrics = metrics
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ public struct RACommonMetricsCalculator {
|
|||
SyllableCounter.shared.count(word: word)
|
||||
}
|
||||
|
||||
func calculate(on text: String) -> Results {
|
||||
public func calculate(on text: String) -> Results {
|
||||
let shouldDoSentences = metrics.contains(.sentenceCount) || metrics.contains(.avgWordsPerSentence)
|
||||
let shouldDoWords = metrics.contains(.wordCount)
|
||||
|| metrics.contains(.avgWordsPerSentence)
|
||||
|
|
|
@ -8,18 +8,20 @@
|
|||
import Foundation
|
||||
|
||||
public struct RAFleschKincaidGradeScorer: RAScorer {
|
||||
static let requiresCommonMetrics: Set<RACommonMetric>? = [
|
||||
public static let requiresCommonMetrics: Set<RACommonMetric>? = [
|
||||
.avgWordsPerSentence,
|
||||
.avgSyllablesPerWord
|
||||
]
|
||||
|
||||
static let meta = RAScorerMeta(
|
||||
public static let meta = RAScorerMeta(
|
||||
name: "Flesch-Kincaid Grade",
|
||||
creator: "John P. Kincaid",
|
||||
citation: "Kincaid, J. P., Fishburne Jr, R. P., Rogers, R. L., & Chissom, B. S. (1975). Derivation of new readability formulas (automated readability index, fog count and flesch reading ease formula) for navy enlisted personnel. Naval Technical Training Command Millington TN Research Branch."
|
||||
)
|
||||
|
||||
func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
|
||||
public init() {}
|
||||
|
||||
public func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
|
||||
let asl = metrics![.avgWordsPerSentence]!
|
||||
let asw = metrics![.avgSyllablesPerWord]!
|
||||
|
||||
|
|
|
@ -8,18 +8,20 @@
|
|||
import Foundation
|
||||
|
||||
public struct RAFleschReadingEaseScorer: RAScorer {
|
||||
static let requiresCommonMetrics: Set<RACommonMetric>? = [
|
||||
public static let requiresCommonMetrics: Set<RACommonMetric>? = [
|
||||
.avgWordsPerSentence,
|
||||
.avgSyllablesPerWord
|
||||
]
|
||||
|
||||
static let meta = RAScorerMeta(
|
||||
public static let meta = RAScorerMeta(
|
||||
name: "Flesch Reading Ease",
|
||||
creator: "Rudolf Flesch",
|
||||
citation: "Flesch, R. (1948). A new readability yardstick. Journal of applied psychology, 32(3), 221."
|
||||
)
|
||||
|
||||
func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
|
||||
public init() {}
|
||||
|
||||
public func score(_ text: String, metrics: RACommonMetricsCalculator.Results?) -> Double {
|
||||
let asl = metrics![.avgWordsPerSentence]!
|
||||
let asw = metrics![.avgSyllablesPerWord]!
|
||||
|
||||
|
|
|
@ -8,21 +8,22 @@
|
|||
import Foundation
|
||||
|
||||
public class RAScoringTask {
|
||||
typealias Results = [Scorer: Double]
|
||||
public typealias Results = [Scorer: Double]
|
||||
|
||||
enum Scorer: Hashable, CaseIterable, Comparable {
|
||||
public enum Scorer: Hashable, CaseIterable, Comparable {
|
||||
case fleschReadingEase
|
||||
case fleschKincaidGrade
|
||||
}
|
||||
|
||||
static let availableScorers: [Scorer: RAScorer.Type] = [
|
||||
public static let availableScorers: [Scorer: RAScorer.Type] = [
|
||||
.fleschReadingEase: RAFleschReadingEaseScorer.self,
|
||||
.fleschKincaidGrade: RAFleschKincaidGradeScorer.self
|
||||
]
|
||||
|
||||
var scorersToRun: Set<Scorer> = Set(Scorer.allCases)
|
||||
public var scorersToRun: Set<Scorer> = Set(Scorer.allCases)
|
||||
|
||||
var scorers: [Scorer: RAScorer.Type] {
|
||||
/** Derived from `scorersToRun`. */
|
||||
public var scorers: [Scorer: RAScorer.Type] {
|
||||
scorersToRun.reduce([:]) { partialResult, scorer in
|
||||
var d = partialResult
|
||||
d[scorer] = Self.availableScorers[scorer]!
|
||||
|
@ -30,7 +31,8 @@ public class RAScoringTask {
|
|||
}
|
||||
}
|
||||
|
||||
var commonMetricsToGet: Set<RACommonMetric> {
|
||||
/** Derived from `scorersToRun`. */
|
||||
public var commonMetricsToGet: Set<RACommonMetric> {
|
||||
scorers
|
||||
.map { $0.1.requiresCommonMetrics }
|
||||
.reduce([]) { partialResult, scorerMetrics in
|
||||
|
@ -39,7 +41,7 @@ public class RAScoringTask {
|
|||
}
|
||||
}
|
||||
|
||||
func run(on text: String) -> Results {
|
||||
public func run(on text: String) -> Results {
|
||||
var commonMetrics: RACommonMetricsCalculator.Results? = nil
|
||||
|
||||
if !commonMetricsToGet.isEmpty {
|
||||
|
|
|
@ -14,7 +14,7 @@ public struct RATokenizer {
|
|||
|
||||
private var tokenizer: NLTokenizer
|
||||
|
||||
init (_ text: String, unit: NLTokenUnit, language: NLLanguage? = nil) {
|
||||
public init (_ text: String, unit: NLTokenUnit, language: NLLanguage? = nil) {
|
||||
self.text = text
|
||||
self.unit = unit
|
||||
tokenizer = NLTokenizer(unit: unit)
|
||||
|
@ -24,8 +24,8 @@ public struct RATokenizer {
|
|||
tokenizer.string = text
|
||||
}
|
||||
|
||||
/** Returns token count. */
|
||||
func enumerateTokens(using callBack: (String) -> Void) -> Int {
|
||||
/** - Returns: Token count. */
|
||||
public func enumerateTokens(using callBack: (String) -> Void) -> Int {
|
||||
var tokenCount = 0
|
||||
tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
|
||||
tokenCount += 1
|
||||
|
|
Loading…
Add table
Reference in a new issue