Восточное Полушарие

Китайский форум => Китайский язык: письменность, изучение, диалекты, вэньянь => Китайский Язык: компьютеры, программы, шрифты => Тема начата: Dirk Diggler от 09 Января 2006 08:25:05

Название: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Dirk Diggler от 09 Января 2006 08:25:05
Я тут в процессе изучения Питона решил-таки обработать ту кучу анекдотов, что у меня накопилась(на кит.яз.). В рез-те получил 2300 файлов в UTF-8, удалив дупы - имеем 1300. Из них потом удалю те, в которых есть нечитаемый текст, и будем иметь как минимум 700-800 файлов. В дальнейшей обработке надеюсь, останутся только те, которые читаются и имеют более-менее нормальный смысл. А вообще я это делаю для такой цели - думаю на том же питоне программку написать: человек заколачивает постепенно в базу(любым способом. Я вот для этого wenlin приспособлю - первую 1000 заколочу автоматом, а потом удалю неизвестные)  те слова(или хотя бы иероглифы), которые ему знакомы, а скрипт подбирает из этой кучи текстов те, которые подходят под заданный уровень незнакомости" текста. Скажем, 3% символов, не входящих в набор известных.  А там уж кидай в каталог с текстами  и анекдоты, и сказки, и песни - скрипту без разницы 8-))))
Имхо, будет пользительная скриптовина....


Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Echter от 09 Января 2006 18:29:30
...удалив дупы - имеем 1300. ...

   В русском языке, в отличие от польского и чешского, слово "дупа" - диалектное и жаргонное. Но вульгарное оно в любом случае. Это к вопросу о соблюдении чистоты языка...
Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Dirk Diggler от 09 Января 2006 19:11:53
Цитировать
"дупа" - диалектное и жаргонное. Но вульгарное оно в любом случае.
Не знаю, не знаю. Классическое слово компьютерного сленга, калька с английского. Почему вульгарное-то? Тогда всякие "комп", "скрипт"  и проч. тоже можно так заклеймить.
Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Echter от 09 Января 2006 22:56:26
... Почему вульгарное-то? ...

   Потому что для большинства русскоговорящих людей оно имеет значение "задница". В некоторых регионах этого слова не знают, но на западе России оно достаточно распространено. К слову, один из альбомов группы "Аукцыон", с прозаическим названием "Жопа", на пластинке имел немного видоизменённое имя "Дупло".

   Возвращаясь, собственно, к теме. Идея интересная. Мне кажется, наиболее полезен такой скрипт может оказаться преподавателям языка (неважно, какого) при поиске учебных текстов. Таким образом можно будет подбирать текст на основе уже изученных материалов.
Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Dirk Diggler от 10 Января 2006 07:01:07
   Потому что для большинства русскоговорящих людей оно имеет значение "задница".
Видимо, я в это большинство не вхожу. Отсутствие фонемы "л" было достаточным, чтобы я не проводил аналогий. ;D Дупы = dupes. That's all. Куда короче, чем "дубликаты файлов". Десятки раз видел употребленным в этом смысле без всякого подтекста。 дупы,  бэды, дуполовка, - слова фидошников, тоссеры которых создавали 2 специальные арии - DUPES и BADMESS, куда падали соотв. дупы и бэды.  ;)
Думаю, Вы преувеличиваете вульгарность этого слова.

Цитировать
   Возвращаясь, собственно, к теме. Идея интересная. Мне кажется, наиболее полезен такой скрипт может оказаться преподавателям языка (неважно, какого) при поиске учебных текстов. Таким образом можно будет подбирать текст на основе уже изученных материалов.

Точно. Для этого и делался. 8-) С поправкой на то, что я сам себе преподаватель.
Жаль только, проблема подбора текста не решаема, если текст - на родном языке.....  ;)
Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: lekitata от 05 Февраля 2006 00:23:04
Так где скрипт-то?
Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Dirk Diggler от 09 Февраля 2006 19:51:40
а зачем он? Я думал, результат его работы более интересен. Если Вы про тот, который я собирался написать, то я это пока отложил...
Название: Re: Ура, товарищи! Великий скрипт , о котором я так долго думал, отработал свое
Отправлено: Dirk Diggler от 01 Мая 2006 19:39:17
Вот скрипт. Не совсем то, что было в начале темы, но тем не менее.
Цитировать
#!/usr/bin/env python
# -*- coding: utf-8 -*-   

import re
import os
import shutil

# скрипт  а) читает словарь из файла как набор иероглифов
# б) для каждого файла в директории проверяет соответствие словарю.
# в) выкладывает в другую директорию 5 наиболее подходящий файлов
#

#  ——————==== здесь задаются настройки скрипта  ====—————————-
#  —————————————————————————————————————
text_dir='xian'  # это директория, где лежат файлы с текстами в кодировке UTF-8
out_dir = 'sorted'
dictionary= 'dict.txt'   # это файл-словарь.

# Пока(и, думаю, надолго) поддерживаются только слова-иероглифы, дву- и более значные
# слова скрипт не знает.




#  РАЗДЕЛ ЗАДАНИЯ ФУНКЦИЙ ПРОВЕРОК НА СООТВ СЛОВАРЮ


# Метод 1
# КОЛ-ВО СОВПАВШИХ ИЕРОГЛИФОВ ДЕЛИТСЯ НА ДЛИНУ
# ВСЕГО ТЕКСТА
def method1(text,dic):
  sootv = 0
  for j in range(0,len(text)):
    if text[j] in dic:
   sootv=sootv+1
  return float(sootv) / len(text)

# КОНЕЦ МЕТОДА 1. ВОЗВРАЩАЕТ ЗНАЧЕНИЯ СООТВ. В ВИДЕ ПЛАВАЮЩЕЙ ТОЧКИ (1.0 = стопроцентное совпадение)



# Метод 2
# КАЖДЫЙ ИЕРОГЛИФ ТЕКСТА, ИМЕЮЩИЙСЯ В СЛОВАРЕ, С КАЖДЫМ СВОИМ ПОЯВЛЕНИЕМ ВКЛАДЫВАЕТ В
# ОБЩУЮ ВЕЛИЧИНУ СООТВЕТСТВИЯ ВСЕ МЕНЬШЕ И МЕНЬШЕ. ТЕМ САМЫМ УМЕНЬШАЕТСЯ ВЛИЯНИЕ ЧАСТО
# ВСТРЕЧАЮЩИХСЯ СУФФИКСОВ, ЧАСТИЦ И ГЛАГОЛОВ-СВЯЗОК

def method2(text,dic):
  sootv = 0
  met = []
  mettimes = []
  for j in range(0,len(text)):
    if text[j] in dic:
      if text[j] not in met:
         met.append(text[j])
         mettimes.append(1)
         sootv=sootv+1.0
      else:
         mettimes[met.index(text[j])] += 1
         sootv=sootv+(1.0/(mettimes[met.index(text[j])]**2))
  return float(sootv) / len(text)

# КОНЕЦ МЕТОДА 2. ВОЗВРАЩАЕТ ЗНАЧЕНИЯ СООТВ. В ВИДЕ ПЛАВАЮЩЕЙ ТОЧКИ
# (1.0 = стопроцентное совпадение, причем ни один иероглиф текста не повторился дважды)








# СОЗДАЕМ СЛОВАРЬ
dict=unicode( (open(dictionary)).read(),'utf-8')
# ПРОВЕРКА НА ДУБЛИ В СЛОВАРЕ НЕ ДЕЛАЕТСЯ ПОКА ЗА НЕНАДОБНОСТЬЮ





# ЧИТАЕМ В ЦИКЛЕ ФАЙЛЫ ИЗ ДИРЕКТОРИИ

filelist=os.listdir(text_dir)
FileListLen=len(filelist)
sootvlist = [] # range(FileListLen)
print len(filelist)


for i in range(0,FileListLen):
  cur_file= open(text_dir+"\\"+filelist)
  cur_text= unicode(cur_file.read(),'utf-8')

# ДАЛЕЕ ПРОВЕРЯЕТСЯ ТЕКСТ НА СООТВ СЛОВАРЮ -
# Методы 1,2
  sootvlist.append([method2(cur_text,dict),filelist])

sootvlist.sort()
for i in range(0,min(5,len(sootvlist))):
  fileout="sorted\\best"+str(i)+".txt"
  shutil.copyfile(text_dir+"\\"+sootvlist[len(sootvlist)-i-1][1],fileout)

Жду предлодения, пожелания....