Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.11.2012, 18:00
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию ADOTable.LoadFromFile

Ребят, почему-то не работает ADOTable.LoadFromFile...
выдаёт ошибку:


сам файл текстовый, три значения в каждой строке разделены символом табуляции. это файл фонем от Acapella в текстовом виде, полученный экспортом
Код:
беркут	#b' e1 r k @ t	NOUN
Валентин	#v V l' e n' t' i1 n	NOUN
виды	#v' i1 d I2	NOUN
вместо	#v m' e1 s t @ _	NOUN
все выгорело	#f s' 92 v 11 g @ r' $ l @	NOUN
до утра	#d V u t r A1	NOUN
жала	#Z A l @	NOUN
командной строки	#k V m A1 n d n @ j s t r V k' i1	NOUN
коттеджа	#k V tt E1 dZ @	NOUN
коттедж	#k V tt E1 dZ	NOUN
Кто это с тобой	#k t o1 E t @ s t V b o j	NOUN
Кто это с тобой?	#k t o1 E t @ s t V b o j	NOUN
к броне	#g b r V n' $1	NOUN
над дорогой	#n @2 d d V r o1 g @ j	NOUN
от росы	#V t r V s I1	NOUN
по броне	#p V b r V n' $1	NOUN
сосен	#s o s' $ n	NOUN
сходите пожалуйста	#s x V d' $1 t' $ p V Z A2 l @ s t @	NOUN
сходите пожалуйста,	#s x V d' $1 t' $ p V Z A2 l @ s t @	NOUN
сходите, пожалуйста	#s x V d' $1 t' $ p V Z A2 l @ s t @	NOUN
сходите, пожалуйста,	#s x V d' $1 t' $ p V Z A2 l @ s t @	NOUN
сходи пожалуйста	#s x V d' $1 p V Z A2 l @ s t @	NOUN
сходи пожалуйста,	#s x V d' $1 p V Z A2 l @ s t @	NOUN
сходи, пожалуйста	#s x V d' $1 p V Z A2 l @ s t @	NOUN
сходи, пожалуйста,	#s x V d' $1 p V Z A2 l @ s t @	NOUN
так что же	#t A2 k S t o1 Z I3	NOUN
так это вы	#t V k e t o v 11	NOUN
туша	#t u1 S @2	NOUN
...	#? ?	NOUN
USB	#j }1 I z b' i1	NOUN
wi-fi	#v A1 j f A j	NOUN
wifi	#v A1 j f A j	NOUN

на форме есть AdoTable с названием tmptable, подключающийся к базе tmp.mdb к таблице tmp. Хочу дополнить таблицу данными из текстового файла, но сделать это не массивом, так как подорузомеваю, это будет долго обрабатываться, а сделать встроенной функцией LoadFromFile, а потом Append...
вот код:
Код:
  tmptable.LoadFromFile(filename);
  tmptable.Append;

в чём может быть проблема? и как сделать оптимальнее, так как словарь имеет очень большое количество фонем, на данный момент 412 тысяч... циклом будет долго, или нет??? лучше сделать циклом или как?
Ответить с цитированием
  #2  
Старый 27.11.2012, 18:40
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

Ребята, начал делать по-другому... Вопрос: как передать Memo1.Lines в процедуру, но в формате TStringList, а то Memo1.Lines - TStrings... ((( Не хочется делать циклом дл язаписи в TStringList содержимого Memo1...
Ответить с цитированием
  #3  
Старый 27.11.2012, 18:48
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Можно сначало загрузить текстовый файл в TStringList, а затем последовательно, в цикле разбирать каждую строку на слова, проверяя наличие символа Tab и добавляя получившиеся в результате данные в соответствующие колонки таблицы.Пример будет чуть попозже.
Ответить с цитированием
  #4  
Старый 27.11.2012, 20:22
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

Сделал с помощью промежуточных TStringList добавлением сразу в один главный. Перебирая файлы словарей фонем... Конечно, сырая программа, на коленке, за 2 часа писаная, но кому-то будет полезна, кто пользуется синтезом речи Acapela на андроиде. Выбираете файлы словарей в текстовом формате (экспорт из лексикон манагера). Потом нажимаете кнопку "слить в user.userdico". Программа сливает все словари в единый, удаляет ненужные символы (# не используются на андроиде) у фонемы, а также удаляет не используемые на андроиде части речи (третья часть строки).. Потом всё это записывает в файл user.userdico. Файл нужно положить на внутреннюю карту памяти андроида в папку Компьютер\GT-N7000\Внутренняя память\acapelavoices\alyona22k_hq\NLP
исходник с исполняемым файлом выложу чуть позже, мой словарь, накопал в интернете кое-что (словари Ё, Ё-дефис, географический, общий из андроида и словарь сокращений), почти 413 тысяч слов и комбинаций. с ними произносит гораздо лучше ), лежит тут: http://zalil.ru/34007992
Файл будет удален через 10 дней после последнего скачивания.

Исходник и программа в папке лежит тут:
http://zalil.ru/34008016
Файл будет удален через 10 дней после последнего скачивания

Надеюсь, найдётся тот, кто захочет расширить возможности программы. Хотелось бы, чтобы программа была под андроид и заливала новые слова на сервер, и обновляла их с сервера, чтобы бытро наполнять словарь усилиями пользователей... На сервере нужно сделать подтверждение правильности фонемы.. Чтобы перед добавлением в список обновления человек утвердил фонемы на обновление, прослушал их... Думаю, в день не много будет поступать...
Ответить с цитированием
  #5  
Старый 27.11.2012, 21:32
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот такой пример, хоть и с опозданием, но всё же:

Последний раз редактировалось Alegun, 09.05.2013 в 12:16.
Ответить с цитированием
  #6  
Старый 27.11.2012, 23:38
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

пока не качайте, онаружил неверную структуру файла, полученного... и неизвестно в какой кодировке он должен быть... кинул в папку на телефоне, а он как говорил вифи вместо вайфай, так и говорит...
если кто знает формат файла и его кодировка, буду очень благодарен!
Ответить с цитированием
  #7  
Старый 28.11.2012, 20:38
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

ребят, не стал создавать новую тему...
вопрос такой: файл должен быть в кодировке ascii 8 bits windows cyrillic
как мне правильно сохранить файл в этой кодировке? у меня сохранение делается так:
StringList.SaveToFile(ExtractFilePath(Application. ExeName)+'\user.userdico');
Это он в какой кодировке сохраняет?
Как сделать нужное мне сохранение, подробно подскажите кодом, пожалуйста, если возможно!

что изменил в программе:
теперь конвертируется, и правильно ставятся части речи в получаемом файле
убираются знаки #, которые ставятся перед фонемой в словаре txt экспортом из редактора лексиконов...

спросил у разработчика формат файла dic лексикона, чтобы напрямую конвертировать лексиконы, так как их редактор очень долго их грузит. процедура может затянуться до часа...

и следом вопрос: при удалении дубликатов строк встроенным способом TStringList он удаляет полные дубликаты, где все строки совпадают полностью.
Но если вдруг в словарях два слова с разными фонемами? Причём само слово одинаковое. Хочу оставлять слово, добавленное из последнего словаря по счёту. Как это проще сделать без перебора встроенными методами? Или всё же без перебора не обойтись?

Последний раз редактировалось sorockinalex, 28.11.2012 в 20:43.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:02.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter