Android&Kotlin solutions📱
2 subscribers
70 photos
18 videos
50 files
380 links
Android bo'yicha savol javoblar
Download Telegram
Forwarded from my work schedule
login: bazarkbot@gmail.com
password: Zaybat_ok_09.
implementation 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:2.2.8'
Qdiruv tizimi algoritmi:
data class Page(val url: String, val title: String, val content: String)

fun tokenize(text: String): List<String> {
return text.lowercase()
.split("\\W+".toRegex()) // So‘zlar
.filter { it.length > 2 } // Juda qisqa so‘zlarni olib tashlaymiz
}

fun computeTF(words: List<String>): Map<String, Double> {
val tf = mutableMapOf<String, Double>()
val totalWords = words.size.toDouble()
words.groupingBy { it }.eachCount().forEach { (word, count) ->
tf[word] = count / totalWords
}
return tf
}

fun computeIDF(pages: List<Page>): Map<String, Double> {
val docCount = pages.size.toDouble()
val wordDocFreq = mutableMapOf<String, Int>()

for (page in pages) {
val uniqueWords = tokenize(page.content).toSet()
for (word in uniqueWords) {
wordDocFreq[word] = wordDocFreq.getOrDefault(word, 0) + 1
}
}

return wordDocFreq.mapValues { (_, df) -> Math.log(docCount / (1 + df)) }
}

fun computeTFIDF(tf: Map<String, Double>, idf: Map<String, Double>): Map<String, Double> {
return tf.mapValues { (word, tfValue) ->
tfValue * (idf[word] ?: 0.0)
}
}


fun cosineSimilarity(v1: Map<String, Double>, v2: Map<String, Double>): Double {
val commonWords = v1.keys.intersect(v2.keys)

val numerator = commonWords.sumOf { v1[it]!! * v2[it]!! }

val denominator = Math.sqrt(v1.values.sumOf { it * it }) * Math.sqrt(v2.values.sumOf { it * it })

return if (denominator == 0.0) 0.0 else numerator / denominator
}

fun searchAdvanced(pages: List<Page>, query: String): List<Pair<Page, Double>> {
val idf = computeIDF(pages)

val queryWords = tokenize(query)
val queryTF = computeTF(queryWords)
val queryTFIDF = computeTFIDF(queryTF, idf)

val results = mutableListOf<Pair<Page, Double>>()

for (page in pages) {
val words = tokenize(page.content)
val tf = computeTF(words)
val tfidf = computeTFIDF(tf, idf)

val similarity = cosineSimilarity(queryTFIDF, tfidf)
if (similarity > 0.0) {
results.add(page to similarity)
}
}

return results.sortedByDescending { it.second } // eng moslar yuqorida
}
val pages = crawl("https://kun.uz", depth = 1)
val results = searchAdvanced(pages, "yangiliklar texnologiya")

for ((page, score) in results.take(10)) {
println("🔗 ${page.title} (${page.url}) — score: %.4f".format(score))
}
Forwarded from Qwerty (Abdurashid)
1. Нажатие на экран назад в полноэкранном режиме должно привести к выходу из полноэкранного режима.

2. Я рассмотрю звук

3. Увеличение в полноэкранном режиме
Я добавлю такую возможность.

4. Видео затемняются при первом входе в программу

Спасибо, я разберусь с проблемами.
Forwarded from Qwerty (Abdurashid)
Forwarded from Qisqa & Foydali kodlar° (ShaXzod °)
openbudbot_pcode.zip
132.8 KB
openbudget.uz loyihasi uchun bot namunasi.

PS. botni ishlatish uchun tasix hostingda ishga tushirish kerak.

PS2. Zerikishdan yozilgan bot va kamchiliklarga ega.
Forwarded from Oyatillo Ma'mirjonov
🙆‍♂🤲 openbudjet bot qilaman deganla umidingizni uzing endi 🔫