1. Уважаемые посетители форума ЭСПП!

    Для просмотра сообщений достаточно прокрутить данное сообщение, а для просмотра списка разделов - вызвать "Каталог".

    Для комментариев необходимо предварительно ознакомиться c Правилами Форума и пройти регистрацию!



    Для того, чтобы быстро ознакомится с возможностями форума, загляните в подраздел Для новичков.

    Если при входе на форум появляется сообщение об ошибке, попробуйте восстановить или сменить пароль, нажав здесь.

Русификация программы Ideogrid (репертуарные решетки)

Тема в разделе 'Общие вопросы', создана пользователем Яньшин П.В., 20 ноя 2015.

  1. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Наличие на диске C каталога Program Files (x86) говорит о 64-битной ОС.
    Не знаю, попробую еще раз, может быть, при копировании на флешку записался битый установочный файл.
  2. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Я предполагаю, что программа написана на паскале в среде Delphi, для того, чтобы сделать мультиязычное приложение надо серьезно править исходники. Пример реализации см. тут http://www.cyberforum.ru/delphi-beginners/thread1151396.html
    Не думаю, что автор найдет на это время. Вместе с тем, учитвая, что программа писалась для ОС XP и Vista, трудно ожидать корректность работы в более современных ОС.
    Учитывая все это, проще написать программу для работы с решетками (по крайней мере, для извлечения конструктов для разных типов решеток), а статистический анализ делать в R, ориентируясь на пакет OpenRepGrid, возможностей которого вполне достаточно. Тем более, что пакет развивается и можно присоединиться к автору пакета и добавить свой функционал.

    Завоеванная Н.С. нравится это.
  3. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

  4. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Я попробую еще раз, но у меня физически в ближайшем окружении нет более 1 компа с видной, поскольку давно пользуюсь Linux, как и вся семья.
  5. Завоеванная Н.С.

    Завоеванная Н.С. Администратор Команда форума

    Юрий Александрович, быть может, система защищена от установки сторонних программ? Например, для винды на рабочем месте...
  6. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Наташа, нет.
  7. Завоеванная Н.С.

    Завоеванная Н.С. Администратор Команда форума

    Наверное, действительно, легче уже использовать R А все замечания отправить автору....
  8. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Наташа, какие замечания? У автора нет мотивации, как я понял, что- то исправлять для русских, которые еще и нахаляву пользуются программой.
  9. Завоеванная Н.С.

    Завоеванная Н.С. Администратор Команда форума

    Юрий Александрович, замечания по поводу того, что программа не корректно работает на виндоус 7 и выше. Есть мотивация или нет - это уже проблемы автора, как и то, позволять ли пользоваться на халяву (он же сам распространяет свой софт на свободной основе). Сказать, все равно, надо, поскольку это обратная связь, которая может пригодиться для дальнейших разработок. В конце концов, не только русские пользуются Винд7...Возможно, несовместимость шрифтов - это, всего лишь, следствие более серьезной проблемы
  10. Яньшин П.В.

    Яньшин П.В. Лидер Команда форума

    Друзья! Я списывался с автором, но у него нет времени. Не уверен, на каком языке писалась программа, но, в VB эта проблема решается просто сменой характеристики используемого в TextBox'е шрифта с европейского на кириллический. Поскольку при проведении обследования используется только два текстбокса, то доработка минимальна (5 мин.) + время на повторную компиляцию исполняемого файла и инстоллятора. К сожалению, OpenRepGrid фокусируется на обработке уже полученных данных. Присмотрюсь к ней внимательней. Если будет время и, главное, желание, попробую написать интерактивную часть для формирования таблицы. Но что-то мне подсказывает, что это не решит проблемы доступности метода для широкой психологической общественности. Все равно, потребуются специальные знания - R и т.п.
    Завоеванная Н.С. нравится это.
  11. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Петр Всеволодович, я не соглашусь с Вами. Доступность не определяется наличием программы. Специальные знания всегда требуются, как и знание английского, R и т.п. Уверяю Вас, если даже представить, что у нас появился русский интерфейс для этой программы, то будет масса работ с использованием техники репертуарных решеток -- я очень сомневаюсь.
    Завоеванная Н.С. нравится это.
  12. Яньшин П.В.

    Яньшин П.В. Лидер Команда форума

    Ну, так и я о том же. Нужна максимально дружественная оболочка. Профессионалов скоро нужно будет искать с микроскопом. Они не в чести.
  13. Виноградов А.Г.

    Виноградов А.Г. Модератор Команда форума

    Петр Всеволодович, возможно Вас заинтересует следующая информация:

    WebGrid Plus has been released to colleagues at sites world-wide who are setting up WebGrid servers at their institutions.

    The WebGrid Plus server being tested at http://webgrid.uvic.ca has performed well, and the *RepServe and WebGrid Technical Manual* has been written to support those responsible for the installations.

    If you are interested in setting up a WebGrid server at your institution please contact us.

    WebGrid Plus is designed to support dialogue in many languages. It identifies those available on a particular server and gives the user the option to switch between them. If you are interested in translating the WebGrid dialogue into languages other than English, or targeted on that appropriate to particular communities, such as young children, please contact us.

    b&m
    Тукачев Ю.А. нравится это.
  14. Яньшин П.В.

    Яньшин П.В. Лидер Команда форума

    Большое спасибо, посмотрю.
  15. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Коллеги,
    раз речь идет о том, чтобы как-то в учебных целях научиться работать с решетками, предлагаю рассмотреть такой вариант. На мой взгляд лучшей компьютерной реализацей техники репертуарных решеток (от диалога до анализа) можно считать программу "КЕЛЛИ" (авторы В.И. Похилько, Н.Н. Страхов).
    DOSBox 0.74, Cpu speed_     3000 cycles, Frameskip  0, Program_ KELLYHLO_309.png
    Несмотря на то, что программе более четверти века, она не потеряла своей актуальности. Работает в современных операционных системах, хоть и написана для MS-DOS.
    У меня на ноутбуке с Linux она работает в DOSBox. Я даже не КПК Psion ее смог установить:
    kelly.JPG
    Эту программу еще никто не превзошел по функциональности. У нее лучшая справочная система!
    DOSBox 0.74, Cpu speed_     3000 cycles, Frameskip  0, Program_ KELLYPLN_311.png

    Возможности программы вполне охватывают запросы в учебных целях. Главное -- на русском :)
    DOSBox 0.74, Cpu speed_     3000 cycles, Frameskip  0, Program_ KELLYPLN_310.png DOSBox 0.74, Cpu speed_     3000 cycles, Frameskip  0, Program_ KELLYPLN_310.png

    Конечно, протокол сохраняется в кодировке MS-DOS, но я написал небольшой скрипт на R, который выполняет функции парсера файла-протокола и сохраняет решетку в формате, который уже можно без проблем анализировать средствами пакета OpenRepGrid.
    Файл-протокол программы КЕЛЛИ выглядит так:
    ПРОТОКОЛ ОБРАБОТКИ ДАННЫХ
    ЭКСПЕРИМЕНТ: PL2 / ПЛАН 1 ПРОБНЫЙ
    ВЕДУЩИЙ No1 (МУЖ): SYSTEM * (1900 г.р)
    ИСПЫТУЕМЫЙ No2 (МУЖ): ИВАНОВ ИВАН (1986 г.р)
    ТИП РЕШЕТКИ .......... ОЦЕНОЧНАЯ
    ИСПОЛЬЗУЕМАЯ ШКАЛА ... 7-БАЛЬНАЯ
    МАТРИЦА: 11 x 5
    МАКС. РАЗМАХ: 7

    СПИСОК ЭЛЕМЕНТОВ
    ┌────┬──────────────────────────────────────────────────────────────────┐
    │ 1 │ МАТЬ │
    │ 2 │ ОТЕЦ │
    │ 3 │ СЕСТРА │
    │ 4 │ СУПРУГ │
    │ 5 │ ДРУГ │
    │ 6 │ НАЧАЛЬНИК │
    │ 7 │ УЧИТЕЛЬ │
    │ 8 │ КУМИР │
    │ 9 │ НЕДОБРОЖЕЛАТЕЛЬ │
    │ 10 │ ПРЕУСПЕВ-Й │
    │ 11 │ НЕУДАЧНИК │
    └────┴──────────────────────────────────────────────────────────────────┘
    СПИСОК КОНСТРУКТОВ
    ┌────┬──────────────────────────────────────────────────────────────────┐
    │ 1+│ Эрудированный │
    │ -> │ Мало знает │
    ├────┼──────────────────────────────────────────────────────────────────┤
    │ 2+│ Целенаправленный │
    │ -> │ Достигший цели │
    ├────┼──────────────────────────────────────────────────────────────────┤

    Напрямую в R его загрузить не получится, но данный скрипт это позволяет сделать:
    Код:
    library(stringr)
    library(OpenRepGrid)
     
    #Загружаем файл из программы Kelly
    #from Linux
    kelly.grid <- iconv(readLines("~/KELLY.PRT"), from = "866", to = "UTF8", sub = NA, mark = TRUE, toRaw = FALSE)
    #from Windows
    kelly.grid <- iconv(readLines("KELLY.PRT"), from = "866", to = "windows-1251", sub = NA, mark = TRUE, toRaw = FALSE)
     
     
    head(kelly.grid) #Что получилось?
    kelly.grid[1:25] #Первые 25 строк
     
    #Размерность матрицы (элементы х конструкты)
    str = grep("МАТРИЦА: ", kelly.grid)
    st <- kelly.grid[str]
    m <- str_extract_all(st, "[0-9]+")
    m.dim <- c(as.numeric(m[[1]][1]), as.numeric(m[[1]][2]))
    m.dim[1] #Элементов
    m.dim[2] #Конструктов
     
    # Извлекаем список элементов
    first.element.pos <- grep("СПИСОК ЭЛЕМЕНТОВ", kelly.grid) + 2 #Номер строки первого элемента
    end.element.pos <- first.element.pos + m.dim[1] - 1 #Номер строки последнего элемента
    #Проверка
    kelly.grid[first.element.pos]
    kelly.grid[end.element.pos]
    elements <- sapply(first.element.pos:end.element.pos, function(x) {as.character(str_extract_all(kelly.grid[x], "[а-яА-Я]+"))})
    #Проверка
    elements
     
    # Извлекаем список конструктов
    first.construct.pos <- grep("СПИСОК КОНСТРУКТОВ", kelly.grid) + 2 #Номер строки первого элемента
    end.construct.pos <- first.construct.pos + m.dim[2]*3 - 3 #Номер строки последнего элемента
    #Проверка
    kelly.grid[first.construct.pos]
    kelly.grid[end.construct.pos]
     
    #Номера строк для левого и правого полюсов конструктов
    left.cons.pole.pos <- first.construct.pos
    right.cons.pole.pos <- first.construct.pos + 1
     
    #Левый
    constructs.list.left <- sapply(seq(left.cons.pole.pos, end.construct.pos, 3), function(x) {str_extract_all(kelly.grid[x], "[а-яА-Я\\-]+")})
    constructs.left <- sapply(1:m.dim[2], function(x) {gsub(", "," ",toString(constructs.list.left[[x]]))})
     
    #Правый
    constructs.list.right <- sapply(seq(right.cons.pole.pos, end.construct.pos + 1, 3), function(x) {str_extract_all(kelly.grid[x], "[а-яА-Я\\-]+")})
    constructs.right <- sapply(1:m.dim[2], function(x) {gsub(", "," ",toString(constructs.list.right[[x]]))})
    #Проверка
    constructs.left # Левый
    constructs.right # Правый
     
    # Считываем матрицу с баллами 
    points <- grep(" xx ", kelly.grid) + 2
    if (length(points) > 1) {
      scores <- unlist(sapply(1:length(points), function(x) {
    	nt <- sapply(points[x]:(points[x] + m.dim[1] - 1), function(x) {str_extract_all(kelly.grid[x], "[0-9]+")})
    	mt <- t(sapply(1:m.dim[1], function(x) {c(as.numeric(nt[[x]]))}))
    	mt <- mt[,-1]
      }))
    } else
    {
      scores <- as.vector(sapply(1:length(points), function(x) {
    	nt <- sapply(points[x]:(points[x] + m.dim[2] - 1), function(x) {str_extract_all(kelly.grid[x], "[0-9]+")})
    	mt <- t(sapply(1:(m.dim[2]), function(x) {c(as.numeric(nt[[x]]))}))
    	mt <- mt[,-1]
      }))
    }
     
    scores # Баллы
     
    #Создаем решетку
    args <- list(
      name = elements,
      l.name = constructs.left,
      r.name = constructs.right,
      scores = scores)
    newGrid <- makeRepgrid(args)
    newGrid <- setScale(newGrid, 1, 7)
    saveAsTxt(newGrid, "mygrid.txt") 
    Получаем текстовый файл вида:
    Data File for OpenRepGrid
    =========================

    ELEMENTS
    МАТЬ
    ОТЕЦ
    СЕСТРА
    СУПРУГ
    ДРУГ
    НАЧАЛЬНИК
    УЧИТЕЛЬ
    КУМИР
    НЕДОБРОЖЕЛАТЕЛЬ
    ПРЕУСПЕВ-Й
    НЕУДАЧНИК
    END ELEMENTS

    CONSTRUCTS
    Эрудированный : Мало знает
    Целенаправленный : Достигший цели
    Негативно относятся : Позитивно относится
    С высокой негативной эмоциональностью : Позитивная эмоциональность
    Плохо ко мне относится : Хорошо относится
    END CONSTRUCTS

    RATINGS
    3 5 2 3 1 5 5 7 5 6 7
    6 1 5 1 3 5 7 7 7 6 5
    1 2 1 5 1 1 3 1 7 1 1
    3 1 6 3 2 3 1 1 5 7 7
    7 5 2 1 2 2 3 3 6 6 7
    END RATINGS

    RANGE
    1 7
    END RANGE

    С помощью пакета уже можно дальше проводить анализ данной решетки:
    > bertin(newGrid)

    grid.png

    Другие возможности см. тут http://docu.openrepgrid.org/features.html#single-grid

    Сам R-скрипт и файл-протокол программы КЕЛЛИ см. приложенном архиве.

    Вложения:

    • kelly.zip
      Размер файла:
      2,3 КБ
      Просмотров:
      23
  16. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Петр Всеволодович, так никто из Ваших студентов не рискнул попробовать 4 способа, описанных мной выше? Я просто реально не скоро смогу проверить на компьютере в Windows
  17. Яньшин П.В.

    Яньшин П.В. Лидер Команда форума

    Юрий Александрович! Спасибо за информацию по "Келли". Согласен, что для DOS этот пакет был просто шикарным. Работал с ним. Увы! Теперь его интерфейс безнадежно устарел. Быть может, под Линюксом есть сносный эмулятор, исправляющий низкое разрешение экрана. Но в Виндоуз он вписывается плохо. Я пытался. Испытуемому это покажется диковатым. Что касается попыток русификации Идиогрид... Я испробовал те способы, что попроще (без копания в реестре). На седьмой Винде не сработал ни один. На ХР сработало переименование файла c_1251.nls в c_1252.nls в папке Windows\System32\ с последующей перезагрузкой Виндоуз. К стати, в семерке эти (одноименные) файлы идентичны таковым в ХР. Но способ почему-то не работает.
    Я ведь почему поднял тему решеток. Моя цель не научить с ними работать. В ситуации с учебными часами эта задача невыполнима в принципе. Задача хотя бы показать, что такое есть в природе, и им можно решать задачи, недостижимые для классической психодиагностики. А если кто-то заинтересуется - вот тебе уже готовая программа: пробуй сам и учись на практике.
    Шмелев А.Г. нравится это.
  18. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Нашел ошибку в своем скрипте, вечером поправлю и отвечу на Ваши вопросы
  19. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Петр Всеволодович, на мой взгляд, интерфейс ничуть не устарел. Просто мы привыкли к другим окнам. Например, окна в программе Idiogrid мне кажутся более диковатыми :) Я испытывал некоторые затруднения при чтении инструкций.
    Сегодня на рабочем компьютере сделал скриншот. Монитор 22 дюйма, можно выбрать определенный шрифт и размер, чтобы все было примерно так:
    k2.png
    k3.png
    Можно в настройках выбрать собственное оформление, руководствуясь удобством восприятия некоторых цветов и их контрастности/сочетания. На КПК у меня настроена черно-белая схема, поскольку экран ЖК такой.
    kelly.JPG
    Признаюсь, я в нашей дискуссии как-то упустил, а как распространенность практики использования техники репертуарных решеток связана с наличием программы? Я неоднократно на собственном опыте убеждался, что если у студента есть программа, то результат будет печальным -- он не разберется и не будет пытаться что-то осовоить. Компьютерная программа не может заменить мозги :) Я в свои студенческие годы осваивал технику по книжке Фраселлы Фей и Дэвида Баннистера. Все вручную, так как в 1995-1999 годах ну не было персональных компьютеров в личном пользовании. Скрипт по импорту протокола из программы написал для себя лично, так как обсуждение темы напоминило, что в свое время накопил ряд протоколов именно в этой программе. Если это кому-то поможет, то я буду только рад.

  20. Тукачев Ю.А.

    Тукачев Ю.А. Администратор Команда форума

    Публикую исправленный R-скрипт. Надо будет оформить все в виде функции, а также написать автору пакета OpenRepGrid и предложить добавить данную функцию.

    Скрипт отдельным файлом: https://dl.dropboxusercontent.com/u/33111025/kellygrid.R
    Код:
    library(stringr)
    library(OpenRepGrid)
     
    #Загружаем файл из программы Kelly
    #from Linux
    kelly.grid <- iconv(readLines("~/KELLY.PRT"), from = "866", to = "UTF8", sub = NA, mark = TRUE, toRaw = FALSE)
    #from Windows
    kelly.grid <- iconv(readLines("KELLY.PRT"), from = "866", to = "windows-1251", sub = NA, mark = TRUE, toRaw = FALSE)
     
     
    head(kelly.grid) #Что получилось?
    kelly.grid[1:25] #Первые 25 строк
     
    #Размерность матрицы (элементы х конструкты)
    str = grep("МАТРИЦА: ", kelly.grid)
    st <- kelly.grid[str]
    m <- str_extract_all(st, "[0-9]+")
    m.dim <- c(as.numeric(m[[1]][1]), as.numeric(m[[1]][2]))
    m.dim[1] #Элементов
    m.dim[2] #Конструктов
     
    # Извлекаем список элементов
    first.element.pos <- grep("СПИСОК ЭЛЕМЕНТОВ", kelly.grid) + 2 #Номер строки первого элемента
    end.element.pos <- first.element.pos + m.dim[1] - 1 #Номер строки последнего элемента
    #Проверка
    kelly.grid[first.element.pos]
    kelly.grid[end.element.pos]
    elements <- sapply(first.element.pos:end.element.pos, function(x) {as.character(str_extract_all(kelly.grid[x], "[а-яА-Я]+"))})
    #Проверка
    elements
     
    # Извлекаем список конструктов
    first.construct.pos <- grep("СПИСОК КОНСТРУКТОВ", kelly.grid) + 2 #Номер строки первого элемента
    end.construct.pos <- first.construct.pos + m.dim[2]*3 - 3 #Номер строки последнего элемента
    #Проверка
    kelly.grid[first.construct.pos]
    kelly.grid[end.construct.pos]
     
    #Номера строк для левого и правого полюсов конструктов
    left.cons.pole.pos <- first.construct.pos
    right.cons.pole.pos <- first.construct.pos + 1
     
    #Левый
    constructs.list.left <- sapply(seq(left.cons.pole.pos, end.construct.pos, 3), function(x) {str_extract_all(kelly.grid[x], "[а-яА-Я\\-]+")})
    constructs.left <- sapply(1:m.dim[2], function(x) {gsub(", "," ",toString(constructs.list.left[[x]]))})
     
    #Правый
    constructs.list.right <- sapply(seq(right.cons.pole.pos, end.construct.pos + 1, 3), function(x) {str_extract_all(kelly.grid[x], "[а-яА-Я\\-]+")})
    constructs.right <- sapply(1:m.dim[2], function(x) {gsub(", "," ",toString(constructs.list.right[[x]]))})
    #Проверка
    constructs.left # Левый
    constructs.right # Правый
     
    # Считываем матрицу с баллами
    points <- grep(" xx ", kelly.grid) + 2
    if (length(points) > 1) {
      scores <- unlist(sapply(1:length(points), function(x) {
    	nt <- sapply(points[x]:(points[x] + m.dim[2] - 1), function(x) {str_extract_all(kelly.grid[x], "[0-9]+")})
    	mt <- t(sapply(1:m.dim[2], function(x) {c(as.numeric(nt[[x]]))}))
    	mt <- mt[,-1]
      }))
    }  else
    {
      scores <- as.vector(sapply(1:length(points), function(x) {
    	nt <- sapply(points[x]:(points[x] + m.dim[2] - 1), function(x) {str_extract_all(kelly.grid[x], "[0-9]+")})
    	mt <- sapply(1:(m.dim[2]), function(x) {c(as.numeric(nt[[x]]))})
    	mt <- mt[-1,]
      }))
    }
     
     
    scores # Баллы
     
    #Создаем решетку
    args <- list(
      name = elements,
      l.name = constructs.left,
      r.name = constructs.right,
      scores = scores)
    newGrid <- makeRepgrid(args)
    newGrid <- setScale(newGrid, 1, 7)
     
    bertin(newGrid)
    Последнее редактирование: 8 дек 2015