-- Table structure for table `tool_use_metrics`
--

CREATE TABLE `tool_use_metrics` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `tool_id` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index_tool_use_metrics_on_user_id` (`user_id`),
  KEY `index_tool_use_metrics_on_tool_id` (`tool_id`)
) ENGINE=InnoDB AUTO_INCREMENT=754 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tool_use_metrics`
--

INSERT INTO `tool_use_metrics` VALUES (1,948,530,'2016-04-17 02:17:56','2016-04-17 02:17:56'),(2,948,520,'2016-04-17 02:19:10','2016-04-17 02:19:10'),(3,948,170,'2016-04-17 02:40:07','2016-04-17 02:40:07'),(4,948,118,'2016-04-17 02:41:41','2016-04-17 02:41:41'),(5,948,1,'2016-04-17 02:46:18','2016-04-17 02:46:18'),(6,950,162,'2016-04-20 03:06:13','2016-04-20 03:06:13'),(7,950,353,'2016-04-20 03:17:48','2016-04-20 03:17:48'),(8,950,472,'2016-04-20 03:18:10','2016-04-20 03:18:10'),(9,950,506,'2016-04-20 03:20:30','2016-04-20 03:20:30'),(10,952,473,'2016-04-22 21:25:27','2016-04-22 21:25:27'),(11,952,390,'2016-04-22 21:26:03','2016-04-22 21:26:03'),(12,954,475,'2016-04-26 09:31:49','2016-04-26 09:31:49'),(13,954,156,'2016-04-26 09:32:58','2016-04-26 09:32:58'),(14,954,37,'2016-04-26 09:33:57','2016-04-26 09:33:57'),(15,958,506,'2016-05-02 00:30:53','2016-05-02 00:30:53'),(16,957,95,'2016-05-04 15:04:01','2016-05-04 15:04:01'),(17,964,530,'2016-05-10 01:48:26','2016-05-10 01:48:26'),(18,966,189,'2016-05-23 10:03:16','2016-05-23 10:03:16'),(19,966,97,'2016-05-23 10:03:22','2016-05-23 10:03:22'),(20,966,297,'2016-05-23 10:03:24','2016-05-23 10:03:24'),(21,966,117,'2016-05-23 10:03:27','2016-05-23 10:03:27'),(22,967,301,'2016-05-23 10:44:59','2016-05-23 10:44:59'),(23,968,582,'2016-05-23 21:32:45','2016-05-23 21:32:45'),(24,968,59,'2016-05-23 21:34:31','2016-05-23 21:34:31'),(25,971,538,'2016-06-06 19:03:30','2016-06-06 19:03:30'),(26,971,538,'2016-06-06 19:21:23','2016-06-06 19:21:23'),(27,979,146,'2016-07-22 09:41:35','2016-07-22 09:41:35'),(28,979,373,'2016-07-22 09:48:18','2016-07-22 09:48:18'),(29,979,373,'2016-07-22 09:49:13','2016-07-22 09:49:13'),(30,979,382,'2016-07-22 10:14:09','2016-07-22 10:14:09'),(31,979,379,'2016-07-22 10:18:53','2016-07-22 10:18:53'),(32,979,149,'2016-07-22 10:20:34','2016-07-22 10:20:34'),(33,979,363,'2016-07-22 11:24:20','2016-07-22 11:24:20'),(34,982,8,'2016-08-26 14:15:38','2016-08-26 14:15:38'),(35,982,18,'2016-08-26 14:26:22','2016-08-26 14:26:22'),(36,982,18,'2016-08-26 14:26:54','2016-08-26 14:26:54'),(37,982,171,'2016-08-26 14:32:39','2016-08-26 14:32:39'),(38,982,373,'2016-08-26 14:32:42','2016-08-26 14:32:42'),(39,982,11,'2016-08-26 14:32:46','2016-08-26 14:32:46'),(40,982,128,'2016-08-26 14:35:29','2016-08-26 14:35:29'),(41,982,17,'2016-08-26 14:35:32','2016-08-26 14:35:32'),(42,982,145,'2016-08-26 14:37:06','2016-08-26 14:37:06'),(43,982,370,'2016-08-26 14:39:15','2016-08-26 14:39:15'),(44,982,23,'2016-08-26 14:39:18','2016-08-26 14:39:18'),(45,982,204,'2016-08-26 14:44:40','2016-08-26 14:44:40'),(46,982,124,'2016-08-26 14:44:44','2016-08-26 14:44:44'),(47,982,526,'2016-08-26 14:59:27','2016-08-26 14:59:27'),(48,982,508,'2016-08-26 14:59:32','2016-08-26 14:59:32'),(49,982,307,'2016-08-26 15:14:11','2016-08-26 15:14:11'),(50,982,18,'2016-08-26 15:39:18','2016-08-26 15:39:18'),(51,982,124,'2016-08-26 15:43:14','2016-08-26 15:43:14'),(52,982,509,'2016-08-26 15:43:20','2016-08-26 15:43:20'),(53,982,517,'2016-08-26 15:44:07','2016-08-26 15:44:07'),(54,982,364,'2016-08-26 15:44:12','2016-08-26 15:44:12'),(55,982,265,'2016-08-26 15:53:46','2016-08-26 15:53:46'),(56,982,21,'2016-08-26 18:56:01','2016-08-26 18:56:01'),(57,982,292,'2016-08-26 18:56:05','2016-08-26 18:56:05'),(58,982,18,'2016-08-26 19:13:04','2016-08-26 19:13:04'),(59,982,23,'2016-08-26 19:44:55','2016-08-26 19:44:55'),(60,985,164,'2016-09-08 14:26:02','2016-09-08 14:26:02'),(61,937,586,'2016-09-12 22:32:06','2016-09-12 22:32:06'),(62,989,171,'2016-09-22 17:24:50','2016-09-22 17:24:50'),(63,988,144,'2016-09-29 20:22:37','2016-09-29 20:22:37'),(64,998,582,'2016-10-14 11:50:47','2016-10-14 11:50:47'),(65,998,582,'2016-10-14 12:04:33','2016-10-14 12:04:33'),(66,998,582,'2016-10-14 12:43:15','2016-10-14 12:43:15'),(67,998,582,'2016-10-14 12:45:01','2016-10-14 12:45:01'),(68,998,582,'2016-10-14 12:48:55','2016-10-14 12:48:55'),(69,998,582,'2016-10-14 12:49:59','2016-10-14 12:49:59'),(70,998,8,'2016-10-14 12:52:00','2016-10-14 12:52:00'),(71,998,8,'2016-10-14 12:53:24','2016-10-14 12:53:24'),(72,998,582,'2016-10-14 13:03:29','2016-10-14 13:03:29'),(73,998,582,'2016-10-14 13:05:53','2016-10-14 13:05:53'),(74,999,582,'2016-10-21 01:02:19','2016-10-21 01:02:19'),(75,937,586,'2016-10-21 11:18:27','2016-10-21 11:18:27'),(76,937,586,'2016-10-21 20:51:41','2016-10-21 20:51:41'),(77,1005,607,'2016-11-08 06:58:17','2016-11-08 06:58:17'),(78,1016,302,'2016-11-20 13:32:39','2016-11-20 13:32:39'),(79,1016,123,'2016-11-20 13:44:19','2016-11-20 13:44:19'),(80,1016,137,'2016-11-20 13:46:53','2016-11-20 13:46:53'),(81,1016,443,'2016-11-20 13:49:23','2016-11-20 13:49:23'),(82,937,608,'2016-11-23 17:13:48','2016-11-23 17:13:48'),(83,1021,448,'2016-11-29 00:44:51','2016-11-29 00:44:51'),(84,1024,302,'2016-12-02 19:21:35','2016-12-02 19:21:35'),(85,1024,574,'2016-12-02 20:31:28','2016-12-02 20:31:28'),(86,1032,574,'2017-01-23 11:40:35','2017-01-23 11:40:35'),(87,1032,574,'2017-01-23 11:42:48','2017-01-23 11:42:48'),(88,1032,586,'2017-01-23 11:44:39','2017-01-23 11:44:39'),(89,1032,537,'2017-01-23 13:22:04','2017-01-23 13:22:04'),(90,1032,473,'2017-01-23 13:22:21','2017-01-23 13:22:21'),(91,1032,538,'2017-01-23 13:22:39','2017-01-23 13:22:39'),(92,1032,590,'2017-01-23 13:23:10','2017-01-23 13:23:10'),(93,1032,586,'2017-01-23 13:23:36','2017-01-23 13:23:36'),(94,1035,14,'2017-01-27 15:33:26','2017-01-27 15:33:26'),(95,937,542,'2017-02-17 22:47:19','2017-02-17 22:47:19'),(96,1038,451,'2017-02-19 06:01:14','2017-02-19 06:01:14'),(97,1039,320,'2017-02-22 15:47:02','2017-02-22 15:47:02'),(98,1039,178,'2017-02-22 15:47:05','2017-02-22 15:47:05'),(99,1042,473,'2017-03-07 07:37:11','2017-03-07 07:37:11'),(100,1042,574,'2017-03-07 07:37:23','2017-03-07 07:37:23'),(101,1042,574,'2017-03-07 07:39:47','2017-03-07 07:39:47'),(102,1042,590,'2017-03-07 07:49:48','2017-03-07 07:49:48'),(103,1042,574,'2017-03-07 08:25:50','2017-03-07 08:25:50'),(104,1039,320,'2017-03-12 15:28:59','2017-03-12 15:28:59'),(105,1039,458,'2017-03-12 15:36:06','2017-03-12 15:36:06'),(106,1039,61,'2017-03-12 16:29:40','2017-03-12 16:29:40'),(107,1049,457,'2017-03-19 08:43:17','2017-03-19 08:43:17'),(108,1049,302,'2017-03-19 08:46:11','2017-03-19 08:46:11'),(109,1049,590,'2017-03-19 08:49:18','2017-03-19 08:49:18'),(110,1049,11,'2017-03-19 08:52:17','2017-03-19 08:52:17'),(111,1049,11,'2017-03-19 09:28:54','2017-03-19 09:28:54'),(112,1049,11,'2017-03-19 09:29:35','2017-03-19 09:29:35'),(113,1049,11,'2017-03-19 09:31:55','2017-03-19 09:31:55'),(114,1050,123,'2017-03-22 14:10:42','2017-03-22 14:10:42'),(115,1050,574,'2017-03-22 14:13:02','2017-03-22 14:13:02'),(116,1050,574,'2017-03-22 14:14:02','2017-03-22 14:14:02'),(117,1056,574,'2017-04-01 20:20:12','2017-04-01 20:20:12'),(118,1058,500,'2017-04-03 11:11:49','2017-04-03 11:11:49'),(119,1064,165,'2017-04-09 18:41:02','2017-04-09 18:41:02'),(120,1064,380,'2017-04-09 19:15:53','2017-04-09 19:15:53'),(121,1064,23,'2017-04-09 19:21:33','2017-04-09 19:21:33'),(122,1065,390,'2017-04-11 01:10:41','2017-04-11 01:10:41'),(123,1065,390,'2017-04-11 01:11:12','2017-04-11 01:11:12'),(124,1065,472,'2017-04-11 01:12:50','2017-04-11 01:12:50'),(125,1065,472,'2017-04-11 01:40:00','2017-04-11 01:40:00'),(126,1069,259,'2017-04-12 17:52:22','2017-04-12 17:52:22'),(127,1070,79,'2017-04-12 19:44:05','2017-04-12 19:44:05'),(128,1072,288,'2017-04-13 01:23:23','2017-04-13 01:23:23'),(129,1072,170,'2017-04-13 01:27:43','2017-04-13 01:27:43'),(130,1072,170,'2017-04-13 01:27:54','2017-04-13 01:27:54'),(131,1072,170,'2017-04-13 01:28:20','2017-04-13 01:28:20'),(132,1072,170,'2017-04-13 01:28:21','2017-04-13 01:28:21'),(133,1072,170,'2017-04-13 01:28:29','2017-04-13 01:28:29'),(134,1072,117,'2017-04-13 01:30:43','2017-04-13 01:30:43'),(135,1072,139,'2017-04-13 01:45:19','2017-04-13 01:45:19'),(136,1072,581,'2017-04-13 01:53:07','2017-04-13 01:53:07'),(137,1072,581,'2017-04-13 01:59:52','2017-04-13 01:59:52'),(138,1073,61,'2017-04-13 02:24:26','2017-04-13 02:24:26'),(139,1076,473,'2017-04-13 03:12:13','2017-04-13 03:12:13'),(140,1075,4,'2017-04-13 03:15:52','2017-04-13 03:15:52'),(141,1076,19,'2017-04-13 03:17:09','2017-04-13 03:17:09'),(142,1076,574,'2017-04-13 03:18:53','2017-04-13 03:18:53'),(143,1076,302,'2017-04-13 03:19:32','2017-04-13 03:19:32'),(144,1076,157,'2017-04-13 03:20:31','2017-04-13 03:20:31'),(145,1075,526,'2017-04-13 03:21:13','2017-04-13 03:21:13'),(146,1076,156,'2017-04-13 03:21:43','2017-04-13 03:21:43'),(147,1075,4,'2017-04-13 03:22:09','2017-04-13 03:22:09'),(148,1076,157,'2017-04-13 03:23:14','2017-04-13 03:23:14'),(149,1076,457,'2017-04-13 03:26:36','2017-04-13 03:26:36'),(150,1076,353,'2017-04-13 03:27:07','2017-04-13 03:27:07'),(151,1076,141,'2017-04-13 03:27:50','2017-04-13 03:27:50'),(152,1076,21,'2017-04-13 03:28:14','2017-04-13 03:28:14'),(153,1075,574,'2017-04-13 03:28:24','2017-04-13 03:28:24'),(154,1076,265,'2017-04-13 03:32:17','2017-04-13 03:32:17'),(155,1066,574,'2017-04-13 18:01:24','2017-04-13 18:01:24'),(156,1066,574,'2017-04-13 18:03:34','2017-04-13 18:03:34'),(157,1077,448,'2017-04-18 15:15:45','2017-04-18 15:15:45'),(158,1077,448,'2017-04-18 15:19:17','2017-04-18 15:19:17'),(159,1077,302,'2017-04-19 01:18:19','2017-04-19 01:18:19'),(160,1077,11,'2017-04-19 02:17:10','2017-04-19 02:17:10'),(161,1081,167,'2017-05-02 01:46:20','2017-05-02 01:46:20'),(162,1081,313,'2017-05-02 01:48:27','2017-05-02 01:48:27'),(163,1081,189,'2017-05-02 01:49:06','2017-05-02 01:49:06'),(164,1081,574,'2017-05-02 01:51:09','2017-05-02 01:51:09'),(165,1085,301,'2017-05-19 00:27:30','2017-05-19 00:27:30'),(166,1088,574,'2017-06-02 03:09:51','2017-06-02 03:09:51'),(167,1089,472,'2017-06-02 03:26:27','2017-06-02 03:26:27'),(168,1089,457,'2017-06-02 03:28:02','2017-06-02 03:28:02'),(169,1090,4,'2017-06-03 23:24:41','2017-06-03 23:24:41'),(170,1095,476,'2017-07-13 10:41:42','2017-07-13 10:41:42'),(171,1099,453,'2017-08-01 15:25:38','2017-08-01 15:25:38'),(172,1100,574,'2017-08-25 14:08:23','2017-08-25 14:08:23'),(173,1100,574,'2017-08-25 14:16:27','2017-08-25 14:16:27'),(174,1103,29,'2017-09-17 14:52:48','2017-09-17 14:52:48'),(175,1103,302,'2017-09-17 15:23:44','2017-09-17 15:23:44'),(176,1103,302,'2017-09-17 15:24:26','2017-09-17 15:24:26'),(177,937,586,'2017-09-20 20:57:17','2017-09-20 20:57:17'),(178,1039,96,'2017-10-09 22:14:39','2017-10-09 22:14:39'),(179,1039,96,'2017-10-09 22:14:39','2017-10-09 22:14:39'),(180,1039,61,'2017-10-09 22:14:45','2017-10-09 22:14:45'),(181,1039,61,'2017-10-09 22:14:45','2017-10-09 22:14:45'),(182,1039,467,'2017-10-10 17:35:00','2017-10-10 17:35:00'),(183,1039,467,'2017-10-10 17:35:00','2017-10-10 17:35:00'),(184,1039,196,'2017-10-10 17:35:03','2017-10-10 17:35:03'),(185,1039,196,'2017-10-10 17:35:03','2017-10-10 17:35:03'),(186,1039,299,'2017-10-10 17:35:06','2017-10-10 17:35:06'),(187,1039,299,'2017-10-10 17:35:06','2017-10-10 17:35:06'),(188,1039,58,'2017-10-11 19:41:06','2017-10-11 19:41:06'),(189,1039,48,'2017-10-11 19:56:59','2017-10-11 19:56:59'),(190,1039,74,'2017-10-11 19:57:17','2017-10-11 19:57:17'),(191,1039,74,'2017-10-11 19:57:17','2017-10-11 19:57:17'),(192,1039,56,'2017-10-11 19:58:07','2017-10-11 19:58:07'),(193,1039,68,'2017-10-11 19:58:15','2017-10-11 19:58:15'),(194,1039,40,'2017-10-11 19:58:27','2017-10-11 19:58:27'),(195,1039,54,'2017-10-11 19:58:37','2017-10-11 19:58:37'),(196,1039,55,'2017-10-11 19:58:46','2017-10-11 19:58:46'),(197,1039,73,'2017-10-11 19:58:55','2017-10-11 19:58:55'),(198,1039,52,'2017-10-11 19:59:00','2017-10-11 19:59:00'),(199,1039,43,'2017-10-11 19:59:04','2017-10-11 19:59:04'),(200,1039,49,'2017-10-11 19:59:12','2017-10-11 19:59:12'),(201,1039,30,'2017-10-11 19:59:24','2017-10-11 19:59:24'),(202,1039,37,'2017-10-11 19:59:27','2017-10-11 19:59:27'),(203,1039,75,'2017-10-11 19:59:47','2017-10-11 19:59:47'),(204,1039,61,'2017-10-11 19:59:51','2017-10-11 19:59:51'),(205,937,648,'2017-10-16 20:23:14','2017-10-16 20:23:14'),(206,1039,315,'2017-10-24 14:59:06','2017-10-24 14:59:06'),(207,1039,265,'2017-10-24 15:03:16','2017-10-24 15:03:16'),(208,1039,47,'2017-10-24 15:10:38','2017-10-24 15:10:38'),(209,1039,31,'2017-10-24 15:10:41','2017-10-24 15:10:41'),(210,937,608,'2017-10-26 14:31:34','2017-10-26 14:31:34'),(211,937,648,'2017-11-02 22:15:22','2017-11-02 22:15:22'),(212,1039,256,'2017-11-04 01:47:42','2017-11-04 01:47:42'),(213,1039,451,'2017-11-04 19:29:01','2017-11-04 19:29:01'),(214,1039,457,'2017-11-04 19:40:56','2017-11-04 19:40:56'),(215,1039,390,'2017-11-04 19:41:00','2017-11-04 19:41:00'),(216,1039,240,'2017-11-04 19:44:55','2017-11-04 19:44:55'),(217,1039,320,'2017-11-04 19:45:01','2017-11-04 19:45:01'),(218,1039,316,'2017-11-04 19:45:29','2017-11-04 19:45:29'),(219,1039,357,'2017-11-04 21:58:32','2017-11-04 21:58:32'),(220,1039,31,'2017-11-04 21:58:37','2017-11-04 21:58:37'),(221,1116,302,'2017-11-24 18:00:40','2017-11-24 18:00:40'),(222,1117,467,'2017-12-07 15:20:06','2017-12-07 15:20:06'),(223,1117,299,'2017-12-07 15:21:21','2017-12-07 15:21:21'),(224,1036,653,'2018-01-14 05:09:56','2018-01-14 05:09:56'),(225,1036,662,'2018-01-15 19:33:54','2018-01-15 19:33:54'),(226,937,661,'2018-01-19 19:27:54','2018-01-19 19:27:54'),(227,1122,228,'2018-02-08 11:54:14','2018-02-08 11:54:14'),(228,1122,338,'2018-02-08 12:16:53','2018-02-08 12:16:53'),(229,1122,315,'2018-02-08 12:52:42','2018-02-08 12:52:42'),(230,1122,37,'2018-02-08 12:56:08','2018-02-08 12:56:08'),(231,1122,506,'2018-02-08 13:13:52','2018-02-08 13:13:52'),(232,1122,516,'2018-02-08 13:14:43','2018-02-08 13:14:43'),(233,1122,472,'2018-02-08 13:32:09','2018-02-08 13:32:09'),(234,1122,299,'2018-02-08 22:34:12','2018-02-08 22:34:12'),(235,1120,661,'2018-02-12 21:07:03','2018-02-12 21:07:03'),(236,1062,369,'2018-02-23 12:44:15','2018-02-23 12:44:15'),(237,1062,369,'2018-02-23 12:45:28','2018-02-23 12:45:28'),(238,1062,456,'2018-02-23 12:56:34','2018-02-23 12:56:34'),(239,1062,467,'2018-02-23 12:59:50','2018-02-23 12:59:50'),(240,1125,89,'2018-02-24 02:43:33','2018-02-24 02:43:33'),(241,1125,183,'2018-02-24 02:49:13','2018-02-24 02:49:13'),(242,1125,183,'2018-02-24 02:49:21','2018-02-24 02:49:21'),(243,1125,378,'2018-02-24 02:53:23','2018-02-24 02:53:23'),(244,1125,378,'2018-02-24 02:53:28','2018-02-24 02:53:28'),(245,1126,30,'2018-02-26 12:16:12','2018-02-26 12:16:12'),(246,1126,662,'2018-02-26 12:21:31','2018-02-26 12:21:31'),(247,1129,662,'2018-03-12 02:47:20','2018-03-12 02:47:20'),(248,1129,29,'2018-03-12 02:48:53','2018-03-12 02:48:53'),(249,1129,302,'2018-03-12 02:51:10','2018-03-12 02:51:10'),(250,1130,665,'2018-03-12 11:41:17','2018-03-12 11:41:17'),(251,1131,661,'2018-03-12 15:22:50','2018-03-12 15:22:50'),(252,1036,661,'2018-03-23 20:22:05','2018-03-23 20:22:05'),(253,1036,662,'2018-03-23 20:23:22','2018-03-23 20:23:22'),(254,1036,582,'2018-04-03 18:11:55','2018-04-03 18:11:55'),(255,1036,673,'2018-04-03 18:12:12','2018-04-03 18:12:12'),(256,937,652,'2018-04-06 17:20:17','2018-04-06 17:20:17'),(257,1036,661,'2018-04-06 18:33:44','2018-04-06 18:33:44'),(258,1132,500,'2018-04-12 20:35:38','2018-04-12 20:35:38'),(259,1120,680,'2018-04-20 19:08:09','2018-04-20 19:08:09'),(260,1120,662,'2018-04-20 19:11:16','2018-04-20 19:11:16'),(261,1120,687,'2018-04-20 19:12:35','2018-04-20 19:12:35'),(262,1120,673,'2018-04-20 19:14:17','2018-04-20 19:14:17'),(263,1128,658,'2018-04-22 19:04:44','2018-04-22 19:04:44'),(264,1120,688,'2018-05-14 22:16:56','2018-05-14 22:16:56'),(265,1128,673,'2018-05-18 19:44:10','2018-05-18 19:44:10'),(266,1137,586,'2018-06-02 14:22:39','2018-06-02 14:22:39'),(267,1142,29,'2018-07-13 00:41:31','2018-07-13 00:41:31'),(268,1142,1,'2018-07-13 00:43:15','2018-07-13 00:43:15'),(269,1142,30,'2018-07-13 00:43:43','2018-07-13 00:43:43'),(270,1143,249,'2018-07-17 21:28:21','2018-07-17 21:28:21'),(271,1149,672,'2018-09-10 19:13:56','2018-09-10 19:13:56'),(272,1149,112,'2018-09-10 19:15:57','2018-09-10 19:15:57'),(273,1149,174,'2018-09-10 19:24:40','2018-09-10 19:24:40'),(274,1149,352,'2018-09-10 19:32:22','2018-09-10 19:32:22'),(275,1149,173,'2018-09-10 19:33:25','2018-09-10 19:33:25'),(276,1149,169,'2018-09-10 19:34:33','2018-09-10 19:34:33'),(277,1149,161,'2018-09-10 19:39:57','2018-09-10 19:39:57'),(278,1150,184,'2018-09-11 16:15:33','2018-09-11 16:15:33'),(279,1150,8,'2018-09-11 16:30:35','2018-09-11 16:30:35'),(280,1150,9,'2018-09-11 16:31:54','2018-09-11 16:31:54'),(281,1150,9,'2018-09-11 16:35:14','2018-09-11 16:35:14'),(282,1152,168,'2018-09-11 17:35:52','2018-09-11 17:35:52'),(283,1152,673,'2018-09-11 17:39:10','2018-09-11 17:39:10'),(284,1152,654,'2018-09-11 17:42:55','2018-09-11 17:42:55'),(285,1152,60,'2018-09-11 17:44:06','2018-09-11 17:44:06'),(286,1152,459,'2018-09-11 17:45:49','2018-09-11 17:45:49'),(287,1152,66,'2018-09-11 17:46:21','2018-09-11 17:46:21'),(288,1152,451,'2018-09-11 17:47:19','2018-09-11 17:47:19'),(289,1152,172,'2018-09-11 17:48:27','2018-09-11 17:48:27'),(290,1152,671,'2018-09-11 17:51:41','2018-09-11 17:51:41'),(291,1152,315,'2018-09-11 17:56:42','2018-09-11 17:56:42'),(292,1152,265,'2018-09-11 17:58:02','2018-09-11 17:58:02'),(293,1152,369,'2018-09-11 18:01:34','2018-09-11 18:01:34'),(294,1152,586,'2018-09-11 18:01:54','2018-09-11 18:01:54'),(295,1152,590,'2018-09-11 18:02:01','2018-09-11 18:02:01'),(296,1152,500,'2018-09-11 18:02:11','2018-09-11 18:02:11'),(297,1150,533,'2018-09-12 01:51:58','2018-09-12 01:51:58'),(298,1150,586,'2018-09-12 01:52:34','2018-09-12 01:52:34'),(299,1150,240,'2018-09-12 01:54:08','2018-09-12 01:54:08'),(300,1150,157,'2018-09-12 02:02:04','2018-09-12 02:02:04'),(301,1150,307,'2018-09-12 02:10:33','2018-09-12 02:10:33'),(302,1150,56,'2018-09-12 02:11:01','2018-09-12 02:11:01'),(303,1150,187,'2018-09-12 02:11:14','2018-09-12 02:11:14'),(304,1150,304,'2018-09-12 02:12:26','2018-09-12 02:12:26'),(305,1150,533,'2018-09-12 02:24:05','2018-09-12 02:24:05'),(306,1150,342,'2018-09-12 02:36:11','2018-09-12 02:36:11'),(307,1150,342,'2018-09-12 02:36:48','2018-09-12 02:36:48'),(308,1150,363,'2018-09-12 02:38:49','2018-09-12 02:38:49'),(309,1150,357,'2018-09-12 02:41:54','2018-09-12 02:41:54'),(310,1150,357,'2018-09-12 02:42:34','2018-09-12 02:42:34'),(311,1150,161,'2018-09-12 03:22:25','2018-09-12 03:22:25'),(312,1150,127,'2018-09-12 03:24:26','2018-09-12 03:24:26'),(313,1150,526,'2018-09-12 03:27:06','2018-09-12 03:27:06'),(314,1150,173,'2018-09-12 03:28:34','2018-09-12 03:28:34'),(315,1150,173,'2018-09-12 03:28:36','2018-09-12 03:28:36'),(316,1150,224,'2018-09-12 03:29:09','2018-09-12 03:29:09'),(317,1150,259,'2018-09-12 03:29:43','2018-09-12 03:29:43'),(318,1151,530,'2018-09-12 20:38:23','2018-09-12 20:38:23'),(319,1151,530,'2018-09-12 20:38:31','2018-09-12 20:38:31'),(320,1151,530,'2018-09-12 20:39:54','2018-09-12 20:39:54'),(321,1151,530,'2018-09-12 20:40:00','2018-09-12 20:40:00'),(322,1151,376,'2018-09-12 20:43:15','2018-09-12 20:43:15'),(323,1151,150,'2018-09-12 20:46:13','2018-09-12 20:46:13'),(324,1151,136,'2018-09-12 20:46:48','2018-09-12 20:46:48'),(325,1151,111,'2018-09-12 20:48:51','2018-09-12 20:48:51'),(326,1151,111,'2018-09-12 20:49:23','2018-09-12 20:49:23'),(327,1151,111,'2018-09-12 20:49:31','2018-09-12 20:49:31'),(328,1151,186,'2018-09-12 20:51:02','2018-09-12 20:51:02'),(329,1151,371,'2018-09-12 20:52:10','2018-09-12 20:52:10'),(330,1151,188,'2018-09-12 20:54:57','2018-09-12 20:54:57'),(331,1151,110,'2018-09-12 20:55:54','2018-09-12 20:55:54'),(332,1151,95,'2018-09-12 20:56:51','2018-09-12 20:56:51'),(333,1151,124,'2018-09-12 20:57:28','2018-09-12 20:57:28'),(334,1151,92,'2018-09-12 20:58:10','2018-09-12 20:58:10'),(335,1151,92,'2018-09-12 20:58:40','2018-09-12 20:58:40'),(336,1151,197,'2018-09-12 20:59:08','2018-09-12 20:59:08'),(337,1151,197,'2018-09-12 20:59:17','2018-09-12 20:59:17'),(338,1151,109,'2018-09-12 20:59:58','2018-09-12 20:59:58'),(339,1151,204,'2018-09-12 21:00:44','2018-09-12 21:00:44'),(340,1151,205,'2018-09-12 21:01:36','2018-09-12 21:01:36'),(341,1151,206,'2018-09-12 21:02:01','2018-09-12 21:02:01'),(342,1151,211,'2018-09-12 21:03:03','2018-09-12 21:03:03'),(343,1151,348,'2018-09-12 21:03:35','2018-09-12 21:03:35'),(344,1150,177,'2018-09-18 02:15:29','2018-09-18 02:15:29'),(345,1150,127,'2018-09-18 02:40:50','2018-09-18 02:40:50'),(346,1151,261,'2018-09-18 16:41:51','2018-09-18 16:41:51'),(347,1149,715,'2018-09-18 20:33:31','2018-09-18 20:33:31'),(348,1149,1381,'2018-09-18 20:34:38','2018-09-18 20:34:38'),(349,1149,734,'2018-09-18 21:38:41','2018-09-18 21:38:41'),(350,1149,839,'2018-09-18 22:04:37','2018-09-18 22:04:37'),(351,1151,680,'2018-09-20 23:22:52','2018-09-20 23:22:52'),(352,1150,372,'2018-09-21 00:15:56','2018-09-21 00:15:56'),(353,1150,372,'2018-09-21 00:16:32','2018-09-21 00:16:32'),(354,1150,681,'2018-09-21 00:24:05','2018-09-21 00:24:05'),(355,1150,683,'2018-09-21 00:25:41','2018-09-21 00:25:41'),(356,1150,683,'2018-09-21 00:27:40','2018-09-21 00:27:40'),(357,1150,683,'2018-09-21 00:28:45','2018-09-21 00:28:45'),(358,1150,683,'2018-09-21 00:30:47','2018-09-21 00:30:47'),(359,1150,681,'2018-09-21 00:32:10','2018-09-21 00:32:10'),(360,1150,661,'2018-09-21 00:35:35','2018-09-21 00:35:35'),(361,1150,661,'2018-09-21 00:54:40','2018-09-21 00:54:40'),(362,1150,681,'2018-09-21 00:58:10','2018-09-21 00:58:10'),(363,1150,681,'2018-09-21 00:58:40','2018-09-21 00:58:40'),(364,1151,672,'2018-09-21 01:25:29','2018-09-21 01:25:29'),(365,1150,662,'2018-09-21 01:36:04','2018-09-21 01:36:04'),(366,1151,666,'2018-09-21 01:38:36','2018-09-21 01:38:36'),(367,1151,680,'2018-09-21 01:39:07','2018-09-21 01:39:07'),(368,1151,661,'2018-09-21 01:39:47','2018-09-21 01:39:47'),(369,1150,608,'2018-09-21 02:11:51','2018-09-21 02:11:51'),(370,1150,670,'2018-09-21 02:23:09','2018-09-21 02:23:09'),(371,1150,681,'2018-09-21 02:34:55','2018-09-21 02:34:55'),(372,1150,469,'2018-09-25 15:50:56','2018-09-25 15:50:56'),(373,1150,469,'2018-09-25 15:51:00','2018-09-25 15:51:00'),(374,1150,102,'2018-09-25 16:00:48','2018-09-25 16:00:48'),(375,1150,357,'2018-09-25 16:07:02','2018-09-25 16:07:02'),(376,1150,99,'2018-09-25 16:08:17','2018-09-25 16:08:17'),(377,1150,661,'2018-09-25 16:09:00','2018-09-25 16:09:00'),(378,1150,1504,'2018-09-25 16:09:47','2018-09-25 16:09:47'),(379,1150,18,'2018-09-25 16:14:23','2018-09-25 16:14:23'),(380,1150,21,'2018-09-25 16:20:27','2018-09-25 16:20:27'),(381,1150,103,'2018-09-25 16:25:27','2018-09-25 16:25:27'),(382,1150,103,'2018-09-25 16:26:16','2018-09-25 16:26:16'),(383,1150,124,'2018-09-25 16:30:25','2018-09-25 16:30:25'),(384,1150,124,'2018-09-25 16:31:46','2018-09-25 16:31:46'),(385,1150,115,'2018-09-25 16:36:24','2018-09-25 16:36:24'),(386,1150,115,'2018-09-25 16:37:01','2018-09-25 16:37:01'),(387,1150,115,'2018-09-25 16:38:35','2018-09-25 16:38:35'),(388,1150,379,'2018-09-25 16:40:03','2018-09-25 16:40:03'),(389,1150,193,'2018-09-27 21:32:37','2018-09-27 21:32:37'),(390,1150,1332,'2018-09-27 21:34:17','2018-09-27 21:34:17'),(391,1150,309,'2018-09-27 21:34:32','2018-09-27 21:34:32'),(392,1150,309,'2018-09-27 21:35:05','2018-09-27 21:35:05'),(393,1150,309,'2018-09-27 21:37:14','2018-09-27 21:37:14'),(394,1150,448,'2018-09-27 21:38:19','2018-09-27 21:38:19'),(395,1150,448,'2018-09-27 21:41:28','2018-09-27 21:41:28'),(396,1150,364,'2018-09-27 21:43:01','2018-09-27 21:43:01'),(397,1150,314,'2018-09-27 21:43:38','2018-09-27 21:43:38'),(398,1150,99,'2018-09-27 21:45:00','2018-09-27 21:45:00'),(399,1150,378,'2018-09-27 21:51:47','2018-09-27 21:51:47'),(400,1150,367,'2018-09-27 21:52:27','2018-09-27 21:52:27'),(401,1150,366,'2018-09-27 21:53:08','2018-09-27 21:53:08'),(402,1150,366,'2018-09-27 21:53:23','2018-09-27 21:53:23'),(403,1150,365,'2018-09-27 21:54:41','2018-09-27 21:54:41'),(404,1150,364,'2018-09-27 21:55:03','2018-09-27 21:55:03'),(405,1150,379,'2018-09-27 21:55:51','2018-09-27 21:55:51'),(406,1150,356,'2018-09-27 21:56:32','2018-09-27 21:56:32'),(407,1150,158,'2018-09-27 21:57:30','2018-09-27 21:57:30'),(408,1150,158,'2018-09-27 21:57:46','2018-09-27 21:57:46'),(409,1150,534,'2018-09-27 22:00:25','2018-09-27 22:00:25'),(410,1150,534,'2018-09-27 22:00:50','2018-09-27 22:00:50'),(411,1150,532,'2018-09-27 22:02:33','2018-09-27 22:02:33'),(412,1150,427,'2018-09-28 03:08:08','2018-09-28 03:08:08'),(413,1150,240,'2018-09-28 03:13:04','2018-09-28 03:13:04'),(414,1150,608,'2018-09-28 03:13:37','2018-09-28 03:13:37'),(415,1150,1474,'2018-09-28 03:14:47','2018-09-28 03:14:47'),(416,1150,342,'2018-09-28 03:15:43','2018-09-28 03:15:43'),(417,1150,308,'2018-09-28 03:16:24','2018-09-28 03:16:24'),(418,1150,308,'2018-09-28 03:16:47','2018-09-28 03:16:47'),(419,1150,586,'2018-09-28 03:17:24','2018-09-28 03:17:24'),(420,1150,578,'2018-09-28 03:18:03','2018-09-28 03:18:03'),(421,1150,578,'2018-09-28 03:18:47','2018-09-28 03:18:47'),(422,1150,241,'2018-09-28 03:22:36','2018-09-28 03:22:36'),(423,1150,238,'2018-09-28 03:23:30','2018-09-28 03:23:30'),(424,1150,672,'2018-09-28 03:24:04','2018-09-28 03:24:04'),(425,1150,224,'2018-09-28 03:24:21','2018-09-28 03:24:21'),(426,1150,570,'2018-09-28 03:27:41','2018-09-28 03:27:41'),(427,1150,581,'2018-09-28 03:28:08','2018-09-28 03:28:08'),(428,1150,80,'2018-09-28 03:34:09','2018-09-28 03:34:09'),(429,1150,718,'2018-09-28 03:42:05','2018-09-28 03:42:05'),(430,1150,172,'2018-09-28 03:45:28','2018-09-28 03:45:28'),(431,1150,306,'2018-09-28 03:45:49','2018-09-28 03:45:49'),(432,1150,478,'2018-09-28 03:46:14','2018-09-28 03:46:14'),(433,1150,478,'2018-09-28 03:48:05','2018-09-28 03:48:05'),(434,1150,305,'2018-09-28 03:49:43','2018-09-28 03:49:43'),(435,1150,354,'2018-09-28 03:50:12','2018-09-28 03:50:12'),(436,1150,366,'2018-09-28 03:53:33','2018-09-28 03:53:33'),(437,1150,136,'2018-09-28 03:54:49','2018-09-28 03:54:49'),(438,1150,229,'2018-09-28 03:57:05','2018-09-28 03:57:05'),(439,1150,295,'2018-09-28 03:57:51','2018-09-28 03:57:51'),(440,1150,482,'2018-10-02 16:14:30','2018-10-02 16:14:30'),(441,1150,292,'2018-10-02 16:15:09','2018-10-02 16:15:09'),(442,1150,507,'2018-10-02 16:21:39','2018-10-02 16:21:39'),(443,1150,475,'2018-10-02 16:31:24','2018-10-02 16:31:24'),(444,1150,474,'2018-10-02 16:32:18','2018-10-02 16:32:18'),(445,1150,474,'2018-10-02 16:32:47','2018-10-02 16:32:47'),(446,1150,299,'2018-10-02 16:34:01','2018-10-02 16:34:01'),(447,1150,452,'2018-10-03 01:37:09','2018-10-03 01:37:09'),(448,1150,22,'2018-10-05 02:31:11','2018-10-05 02:31:11'),(449,1150,21,'2018-10-05 02:34:03','2018-10-05 02:34:03'),(450,1150,20,'2018-10-05 02:34:47','2018-10-05 02:34:47'),(451,1150,11,'2018-10-05 02:35:55','2018-10-05 02:35:55'),(452,1150,10,'2018-10-05 02:36:34','2018-10-05 02:36:34'),(453,1150,131,'2018-10-05 02:37:11','2018-10-05 02:37:11'),(454,1150,354,'2018-10-05 02:45:42','2018-10-05 02:45:42'),(455,1150,355,'2018-10-05 02:46:53','2018-10-05 02:46:53'),(456,1150,358,'2018-10-05 02:49:13','2018-10-05 02:49:13'),(457,1150,359,'2018-10-05 02:49:36','2018-10-05 02:49:36'),(458,1150,360,'2018-10-05 02:49:55','2018-10-05 02:49:55'),(459,1150,511,'2018-10-05 02:51:26','2018-10-05 02:51:26'),(460,1150,368,'2018-10-05 02:53:34','2018-10-05 02:53:34'),(461,1150,370,'2018-10-05 02:54:20','2018-10-05 02:54:20'),(462,1150,225,'2018-10-05 02:58:46','2018-10-05 02:58:46'),(463,1150,662,'2018-10-05 02:59:12','2018-10-05 02:59:12'),(464,1150,75,'2018-10-05 02:59:33','2018-10-05 02:59:33'),(465,1150,515,'2018-10-05 02:59:47','2018-10-05 02:59:47'),(466,1150,72,'2018-10-05 03:00:25','2018-10-05 03:00:25'),(467,1150,251,'2018-10-05 03:00:59','2018-10-05 03:00:59'),(468,1150,373,'2018-10-05 03:01:22','2018-10-05 03:01:22'),(469,1150,68,'2018-10-05 03:01:55','2018-10-05 03:01:55'),(470,1150,512,'2018-10-05 03:02:20','2018-10-05 03:02:20'),(471,1150,380,'2018-10-05 03:02:45','2018-10-05 03:02:45'),(472,1150,265,'2018-10-05 03:03:11','2018-10-05 03:03:11'),(473,1150,382,'2018-10-05 03:03:33','2018-10-05 03:03:33'),(474,1150,509,'2018-10-05 03:04:02','2018-10-05 03:04:02'),(475,1150,102,'2018-10-05 03:06:04','2018-10-05 03:06:04'),(476,1150,103,'2018-10-05 03:06:37','2018-10-05 03:06:37'),(477,1150,114,'2018-10-05 03:09:15','2018-10-05 03:09:15'),(478,1150,116,'2018-10-05 03:10:27','2018-10-05 03:10:27'),(479,1150,116,'2018-10-05 03:10:28','2018-10-05 03:10:28'),(480,1150,116,'2018-10-05 03:10:29','2018-10-05 03:10:29'),(481,1150,122,'2018-10-05 03:15:03','2018-10-05 03:15:03'),(482,1150,129,'2018-10-05 03:20:27','2018-10-05 03:20:27'),(483,1150,8,'2018-10-05 03:23:33','2018-10-05 03:23:33'),(484,1150,137,'2018-10-05 03:26:42','2018-10-05 03:26:42'),(485,1150,137,'2018-10-05 03:27:15','2018-10-05 03:27:15'),(486,1150,138,'2018-10-05 03:28:32','2018-10-05 03:28:32'),(487,1150,138,'2018-10-05 03:28:48','2018-10-05 03:28:48'),(488,1150,193,'2018-10-05 03:30:25','2018-10-05 03:30:25'),(489,1150,190,'2018-10-05 03:30:47','2018-10-05 03:30:47'),(490,1150,145,'2018-10-05 03:31:26','2018-10-05 03:31:26'),(491,1150,146,'2018-10-05 03:32:00','2018-10-05 03:32:00'),(492,1150,151,'2018-10-05 03:34:23','2018-10-05 03:34:23'),(493,1150,152,'2018-10-05 03:34:45','2018-10-05 03:34:45'),(494,1150,154,'2018-10-05 03:36:07','2018-10-05 03:36:07'),(495,1150,180,'2018-10-05 03:40:43','2018-10-05 03:40:43'),(496,1150,180,'2018-10-05 03:40:44','2018-10-05 03:40:44'),(497,1150,159,'2018-10-05 03:41:53','2018-10-05 03:41:53'),(498,1150,179,'2018-10-05 03:44:01','2018-10-05 03:44:01'),(499,1150,340,'2018-10-05 03:44:12','2018-10-05 03:44:12'),(500,1150,309,'2018-10-05 04:00:05','2018-10-05 04:00:05'),(501,1150,183,'2018-10-05 04:00:15','2018-10-05 04:00:15'),(502,1150,513,'2018-10-05 04:06:38','2018-10-05 04:06:38'),(503,1150,288,'2018-10-05 04:07:17','2018-10-05 04:07:17'),(504,1150,204,'2018-10-05 04:07:56','2018-10-05 04:07:56'),(505,1150,659,'2018-10-05 04:08:34','2018-10-05 04:08:34'),(506,1150,258,'2018-10-05 04:09:21','2018-10-05 04:09:21'),(507,1150,259,'2018-10-05 04:11:10','2018-10-05 04:11:10'),(508,1150,132,'2018-10-05 04:11:46','2018-10-05 04:11:46'),(509,1150,437,'2018-10-05 04:13:42','2018-10-05 04:13:42'),(510,1150,133,'2018-10-05 04:13:56','2018-10-05 04:13:56'),(511,1150,99,'2018-10-05 04:18:24','2018-10-05 04:18:24'),(512,1150,367,'2018-10-05 04:19:13','2018-10-05 04:19:13'),(513,1150,378,'2018-10-05 04:19:34','2018-10-05 04:19:34'),(514,1150,366,'2018-10-05 04:20:01','2018-10-05 04:20:01'),(515,1150,365,'2018-10-05 04:20:23','2018-10-05 04:20:23'),(516,1150,364,'2018-10-05 04:20:38','2018-10-05 04:20:38'),(517,1150,379,'2018-10-05 04:21:09','2018-10-05 04:21:09'),(518,1150,356,'2018-10-05 04:21:30','2018-10-05 04:21:30'),(519,1150,427,'2018-10-05 04:21:58','2018-10-05 04:21:58'),(520,1150,608,'2018-10-05 04:23:09','2018-10-05 04:23:09'),(521,1150,508,'2018-10-05 04:28:01','2018-10-05 04:28:01'),(522,1150,157,'2018-10-05 04:28:21','2018-10-05 04:28:21'),(523,1150,308,'2018-10-05 04:29:57','2018-10-05 04:29:57'),(524,1150,128,'2018-10-05 04:30:21','2018-10-05 04:30:21'),(525,1150,305,'2018-10-05 04:30:43','2018-10-05 04:30:43'),(526,1150,96,'2018-10-05 04:33:14','2018-10-05 04:33:14'),(527,1150,516,'2018-10-05 04:33:48','2018-10-05 04:33:48'),(528,1150,477,'2018-10-05 04:34:04','2018-10-05 04:34:04'),(529,1150,517,'2018-10-05 04:34:22','2018-10-05 04:34:22'),(530,1150,112,'2018-10-05 04:37:40','2018-10-05 04:37:40'),(531,1150,238,'2018-10-05 04:37:58','2018-10-05 04:37:58'),(532,1150,473,'2018-10-05 04:38:19','2018-10-05 04:38:19'),(533,1150,58,'2018-10-05 04:38:31','2018-10-05 04:38:31'),(534,1150,352,'2018-10-05 04:38:59','2018-10-05 04:38:59'),(535,1150,130,'2018-10-05 04:40:56','2018-10-05 04:40:56'),(536,1150,130,'2018-10-05 04:40:58','2018-10-05 04:40:58'),(537,1150,478,'2018-10-05 04:41:21','2018-10-05 04:41:21'),(538,1150,1469,'2018-10-05 04:41:42','2018-10-05 04:41:42'),(539,1150,295,'2018-10-05 04:42:06','2018-10-05 04:42:06'),(540,1150,306,'2018-10-05 04:42:36','2018-10-05 04:42:36'),(541,1150,477,'2018-10-05 04:42:51','2018-10-05 04:42:51'),(542,1150,467,'2018-10-05 04:44:09','2018-10-05 04:44:09'),(543,1150,377,'2018-10-05 04:45:02','2018-10-05 04:45:02'),(544,1150,94,'2018-10-05 04:45:34','2018-10-05 04:45:34'),(545,1150,153,'2018-10-05 04:49:35','2018-10-05 04:49:35'),(546,1150,307,'2018-10-05 04:51:15','2018-10-05 04:51:15'),(547,1150,80,'2018-10-05 04:51:49','2018-10-05 04:51:49'),(548,1150,140,'2018-10-05 04:52:06','2018-10-05 04:52:06'),(549,1150,519,'2018-10-05 04:52:27','2018-10-05 04:52:27'),(550,1150,125,'2018-10-05 16:16:46','2018-10-05 16:16:46'),(551,1150,126,'2018-10-05 16:17:19','2018-10-05 16:17:19'),(552,1149,242,'2018-10-05 19:09:40','2018-10-05 19:09:40'),(553,1149,375,'2018-10-06 01:00:13','2018-10-06 01:00:13'),(554,1150,175,'2018-10-12 02:45:28','2018-10-12 02:45:28'),(555,1150,175,'2018-10-12 02:47:49','2018-10-12 02:47:49'),(556,1150,97,'2018-10-12 02:55:01','2018-10-12 02:55:01'),(557,1150,530,'2018-10-12 02:56:10','2018-10-12 02:56:10'),(558,1150,294,'2018-10-12 03:28:40','2018-10-12 03:28:40'),(559,1150,191,'2018-10-12 03:29:44','2018-10-12 03:29:44'),(560,1150,89,'2018-10-12 03:39:51','2018-10-12 03:39:51'),(561,1150,86,'2018-10-12 03:41:08','2018-10-12 03:41:08'),(562,1150,673,'2018-10-12 03:46:16','2018-10-12 03:46:16'),(563,1150,593,'2018-10-12 17:27:35','2018-10-12 17:27:35'),(564,1150,167,'2018-10-12 17:28:10','2018-10-12 17:28:10'),(565,1150,478,'2018-10-12 17:28:42','2018-10-12 17:28:42'),(566,1150,98,'2018-10-17 04:27:55','2018-10-17 04:27:55'),(567,1150,925,'2018-10-17 04:34:39','2018-10-17 04:34:39'),(568,1150,925,'2018-10-17 04:35:14','2018-10-17 04:35:14'),(569,1150,171,'2018-10-17 04:38:27','2018-10-17 04:38:27'),(570,1150,187,'2018-10-17 04:40:09','2018-10-17 04:40:09'),(571,1150,295,'2018-10-17 04:41:13','2018-10-17 04:41:13'),(572,1150,295,'2018-10-17 04:41:15','2018-10-17 04:41:15'),(573,1150,295,'2018-10-17 04:41:18','2018-10-17 04:41:18'),(574,1150,295,'2018-10-17 04:41:22','2018-10-17 04:41:22'),(575,1150,295,'2018-10-17 04:41:28','2018-10-17 04:41:28'),(576,1150,135,'2018-10-17 04:46:22','2018-10-17 04:46:22'),(577,1150,85,'2018-10-17 04:48:04','2018-10-17 04:48:04'),(578,1150,459,'2018-10-17 04:48:36','2018-10-17 04:48:36'),(579,1150,140,'2018-10-17 04:49:15','2018-10-17 04:49:15'),(580,1150,144,'2018-10-17 04:50:31','2018-10-17 04:50:31'),(581,1150,185,'2018-10-17 04:51:14','2018-10-17 04:51:14'),(582,1150,466,'2018-10-17 04:52:31','2018-10-17 04:52:31'),(583,1150,467,'2018-10-17 04:53:34','2018-10-17 04:53:34'),(584,1150,468,'2018-10-17 04:54:23','2018-10-17 04:54:23'),(585,1150,477,'2018-10-17 05:00:25','2018-10-17 05:00:25'),(586,1150,478,'2018-10-17 05:01:02','2018-10-17 05:01:02'),(587,1150,593,'2018-10-17 05:10:44','2018-10-17 05:10:44'),(588,1150,377,'2018-10-17 05:11:20','2018-10-17 05:11:20'),(589,1150,537,'2018-10-17 05:17:12','2018-10-17 05:17:12'),(590,1150,19,'2018-10-17 05:17:42','2018-10-17 05:17:42'),(591,1150,118,'2018-10-17 05:19:57','2018-10-17 05:19:57'),(592,1150,117,'2018-10-18 04:45:11','2018-10-18 04:45:11'),(593,1150,252,'2018-10-18 04:50:34','2018-10-18 04:50:34'),(594,1150,663,'2018-10-18 04:51:10','2018-10-18 04:51:10'),(595,1150,635,'2018-10-18 04:51:46','2018-10-18 04:51:46'),(596,1150,239,'2018-10-18 04:52:00','2018-10-18 04:52:00'),(597,1150,240,'2018-10-18 04:53:57','2018-10-18 04:53:57'),(598,1150,646,'2018-10-18 04:55:11','2018-10-18 04:55:11'),(599,1150,201,'2018-10-18 05:00:02','2018-10-18 05:00:02'),(600,1150,521,'2018-10-18 05:00:42','2018-10-18 05:00:42'),(601,1150,1198,'2018-10-19 02:30:37','2018-10-19 02:30:37'),(602,1150,135,'2018-10-19 02:34:40','2018-10-19 02:34:40'),(603,1150,1155,'2018-10-19 02:35:01','2018-10-19 02:35:01'),(604,1150,96,'2018-10-19 02:35:17','2018-10-19 02:35:17'),(605,1150,191,'2018-10-19 02:35:54','2018-10-19 02:35:54'),(606,1150,167,'2018-10-19 02:37:03','2018-10-19 02:37:03'),(607,1150,451,'2018-10-19 02:38:52','2018-10-19 02:38:52'),(608,1150,631,'2018-10-19 02:39:31','2018-10-19 02:39:31'),(609,1150,306,'2018-10-19 02:42:21','2018-10-19 02:42:21'),(610,1150,628,'2018-10-19 02:44:15','2018-10-19 02:44:15'),(611,1150,90,'2018-10-19 02:52:42','2018-10-19 02:52:42'),(612,1150,555,'2018-10-19 02:53:23','2018-10-19 02:53:23'),(613,1150,172,'2018-10-19 02:54:04','2018-10-19 02:54:04'),(614,1150,625,'2018-10-19 02:54:39','2018-10-19 02:54:39'),(615,1150,263,'2018-10-19 03:06:57','2018-10-19 03:06:57'),(616,1150,595,'2018-10-19 03:07:09','2018-10-19 03:07:09'),(617,1150,217,'2018-10-19 03:07:34','2018-10-19 03:07:34'),(618,1150,187,'2018-10-19 03:07:57','2018-10-19 03:07:57'),(619,1150,60,'2018-10-19 03:08:29','2018-10-19 03:08:29'),(620,1150,514,'2018-10-19 03:08:46','2018-10-19 03:08:46'),(621,1150,208,'2018-10-19 03:09:14','2018-10-19 03:09:14'),(622,1150,297,'2018-10-19 03:09:31','2018-10-19 03:09:31'),(623,1150,525,'2018-10-19 03:09:59','2018-10-19 03:09:59'),(624,1150,1241,'2018-10-19 03:14:52','2018-10-19 03:14:52'),(625,1150,205,'2018-10-30 16:01:51','2018-10-30 16:01:51'),(626,1150,648,'2018-10-30 16:02:52','2018-10-30 16:02:52'),(627,1150,520,'2018-10-30 16:04:14','2018-10-30 16:04:14'),(628,1150,510,'2018-10-30 16:04:34','2018-10-30 16:04:34'),(629,1150,121,'2018-10-30 16:08:31','2018-10-30 16:08:31'),(630,1150,349,'2018-10-30 16:09:37','2018-10-30 16:09:37'),(631,1150,353,'2018-10-30 16:11:35','2018-10-30 16:11:35'),(632,1150,163,'2018-10-30 16:18:23','2018-10-30 16:18:23'),(633,1150,233,'2018-10-30 16:19:14','2018-10-30 16:19:14'),(634,1150,643,'2018-10-30 16:20:16','2018-10-30 16:20:16'),(635,1150,525,'2018-10-30 16:22:43','2018-10-30 16:22:43'),(636,1150,297,'2018-10-30 16:23:25','2018-10-30 16:23:25'),(637,1150,38,'2018-10-30 16:24:09','2018-10-30 16:24:09'),(638,1150,39,'2018-10-30 16:24:51','2018-10-30 16:24:51'),(639,1150,514,'2018-10-30 16:25:25','2018-10-30 16:25:25'),(640,1150,202,'2018-10-30 16:26:06','2018-10-30 16:26:06'),(641,1150,263,'2018-10-30 16:27:36','2018-10-30 16:27:36'),(642,1150,230,'2018-10-30 16:30:08','2018-10-30 16:30:08'),(643,1150,667,'2018-10-30 16:30:44','2018-10-30 16:30:44'),(644,1150,680,'2018-10-30 16:31:02','2018-10-30 16:31:02'),(645,1150,680,'2018-10-30 16:31:56','2018-10-30 16:31:56'),(646,1150,473,'2018-11-06 06:30:23','2018-11-06 06:30:23'),(647,1150,536,'2018-11-06 06:30:50','2018-11-06 06:30:50'),(648,1150,479,'2018-11-06 06:34:37','2018-11-06 06:34:37'),(649,1150,186,'2018-11-06 06:35:24','2018-11-06 06:35:24'),(650,1150,476,'2018-11-06 06:36:16','2018-11-06 06:36:16'),(651,1150,256,'2018-11-06 06:37:04','2018-11-06 06:37:04'),(652,1150,228,'2018-11-06 06:37:34','2018-11-06 06:37:34'),(653,1150,216,'2018-11-06 06:38:46','2018-11-06 06:38:46'),(654,1150,338,'2018-11-06 06:39:15','2018-11-06 06:39:15'),(655,1150,19,'2018-11-06 06:40:06','2018-11-06 06:40:06'),(656,1150,241,'2018-11-06 06:45:24','2018-11-06 06:45:24'),(657,1150,44,'2018-11-06 06:46:16','2018-11-06 06:46:16'),(658,1150,333,'2018-11-06 06:46:54','2018-11-06 06:46:54'),(659,1150,633,'2018-11-06 06:47:32','2018-11-06 06:47:32'),(660,1150,633,'2018-11-06 06:47:38','2018-11-06 06:47:38'),(661,1150,231,'2018-11-06 06:49:59','2018-11-06 06:49:59'),(662,1150,199,'2018-11-06 06:51:53','2018-11-06 06:51:53'),(663,1150,111,'2018-11-06 06:53:14','2018-11-06 06:53:14'),(664,1150,106,'2018-11-06 06:54:32','2018-11-06 06:54:32'),(665,1150,139,'2018-11-06 06:55:51','2018-11-06 06:55:51'),(666,1150,100,'2018-11-06 06:56:30','2018-11-06 06:56:30'),(667,1150,135,'2018-11-06 06:58:32','2018-11-06 06:58:32'),(668,1150,264,'2018-11-06 06:59:26','2018-11-06 06:59:26'),(669,1150,275,'2018-11-07 04:54:42','2018-11-07 04:54:42'),(670,1150,275,'2018-11-07 04:56:34','2018-11-07 04:56:34'),(671,1150,320,'2018-11-07 04:58:06','2018-11-07 04:58:06'),(672,1150,328,'2018-11-07 04:58:57','2018-11-07 04:58:57'),(673,1150,69,'2018-11-07 05:00:22','2018-11-07 05:00:22'),(674,1150,471,'2018-11-07 05:00:46','2018-11-07 05:00:46'),(675,1150,234,'2018-11-07 05:01:17','2018-11-07 05:01:17'),(676,1150,313,'2018-11-07 05:01:57','2018-11-07 05:01:57'),(677,1150,24,'2018-11-07 05:03:42','2018-11-07 05:03:42'),(678,1150,25,'2018-11-07 05:06:00','2018-11-07 05:06:00'),(679,1150,173,'2018-11-07 05:10:13','2018-11-07 05:10:13'),(680,1150,161,'2018-11-07 05:10:46','2018-11-07 05:10:46'),(681,1150,174,'2018-11-07 05:13:04','2018-11-07 05:13:04'),(682,1150,456,'2018-11-07 05:13:40','2018-11-07 05:13:40'),(683,1150,274,'2018-11-07 05:16:50','2018-11-07 05:16:50'),(684,1150,649,'2018-11-07 05:17:16','2018-11-07 05:17:16'),(685,1150,602,'2018-11-07 05:17:34','2018-11-07 05:17:34'),(686,1150,600,'2018-11-07 05:17:46','2018-11-07 05:17:46'),(687,1150,553,'2018-11-07 05:18:23','2018-11-07 05:18:23'),(688,1150,149,'2018-11-07 05:18:36','2018-11-07 05:18:36'),(689,1150,148,'2018-11-07 05:19:01','2018-11-07 05:19:01'),(690,1150,460,'2018-11-07 05:19:41','2018-11-07 05:19:41'),(691,1150,460,'2018-11-07 05:20:48','2018-11-07 05:20:48'),(692,1150,463,'2018-11-07 05:21:21','2018-11-07 05:21:21'),(693,1150,247,'2018-11-07 05:22:03','2018-11-07 05:22:03'),(694,1150,642,'2018-11-07 05:24:39','2018-11-07 05:24:39'),(695,1150,314,'2018-11-07 05:27:27','2018-11-07 05:27:27'),(696,1150,458,'2018-11-07 05:27:40','2018-11-07 05:27:40'),(697,1150,169,'2018-11-07 05:28:41','2018-11-07 05:28:41'),(698,1150,229,'2018-11-07 05:29:00','2018-11-07 05:29:00'),(699,1150,87,'2018-11-07 05:29:15','2018-11-07 05:29:15'),(700,1150,48,'2018-11-07 05:29:25','2018-11-07 05:29:25'),(701,1150,680,'2018-11-07 05:29:35','2018-11-07 05:29:35'),(702,1150,667,'2018-11-07 05:31:06','2018-11-07 05:31:06'),(703,1150,230,'2018-11-07 05:31:16','2018-11-07 05:31:16'),(704,1150,202,'2018-11-07 05:32:02','2018-11-07 05:32:02'),(705,1150,680,'2018-11-09 04:03:57','2018-11-09 04:03:57'),(706,1151,1034,'2018-11-09 04:20:42','2018-11-09 04:20:42'),(707,1150,141,'2018-11-09 05:35:20','2018-11-09 05:35:20'),(708,1150,164,'2018-11-09 05:35:47','2018-11-09 05:35:47'),(709,1150,168,'2018-11-09 05:37:09','2018-11-09 05:37:09'),(710,1150,625,'2018-11-23 04:39:53','2018-11-23 04:39:53'),(711,1150,663,'2018-11-23 04:41:11','2018-11-23 04:41:11'),(712,1150,306,'2018-11-23 04:41:25','2018-11-23 04:41:25'),(713,1150,684,'2018-11-23 04:50:02','2018-11-23 04:50:02'),(714,1150,172,'2018-11-23 04:50:50','2018-11-23 04:50:50'),(715,1150,208,'2018-11-23 04:58:44','2018-11-23 04:58:44'),(716,1150,208,'2018-11-23 04:59:50','2018-11-23 04:59:50'),(717,1150,229,'2018-11-23 05:00:56','2018-11-23 05:00:56'),(718,1150,187,'2018-11-23 05:02:12','2018-11-23 05:02:12'),(719,1150,217,'2018-11-23 05:03:15','2018-11-23 05:03:15'),(720,1150,217,'2018-11-23 05:04:05','2018-11-23 05:04:05'),(721,1150,66,'2018-11-23 05:04:26','2018-11-23 05:04:26'),(722,1150,685,'2018-11-23 05:04:38','2018-11-23 05:04:38'),(723,1150,201,'2018-11-23 05:07:36','2018-11-23 05:07:36'),(724,1150,201,'2018-11-23 05:08:15','2018-11-23 05:08:15'),(725,1104,679,'2018-11-23 16:39:32','2018-11-23 16:39:32'),(726,1104,678,'2018-11-23 16:41:12','2018-11-23 16:41:12'),(727,1149,1508,'2018-11-23 23:11:26','2018-11-23 23:11:26'),(728,1162,30,'2019-01-04 06:27:00','2019-01-04 06:27:00'),(729,1162,302,'2019-01-04 06:32:44','2019-01-04 06:32:44'),(730,1149,192,'2019-01-25 19:13:26','2019-01-25 19:13:26'),(731,1150,761,'2019-03-21 20:27:03','2019-03-21 20:27:03'),(732,1178,978,'2019-04-14 04:35:37','2019-04-14 04:35:37'),(733,1180,29,'2019-04-23 17:42:20','2019-04-23 17:42:20'),(734,1180,30,'2019-04-23 17:42:42','2019-04-23 17:42:42'),(735,1184,662,'2019-05-21 02:03:48','2019-05-21 02:03:48'),(736,1185,1556,'2019-05-23 14:27:52','2019-05-23 14:27:52'),(737,1188,29,'2019-05-30 03:47:01','2019-05-30 03:47:01'),(738,1188,1,'2019-05-30 03:47:22','2019-05-30 03:47:22'),(739,1191,978,'2019-06-13 22:28:56','2019-06-13 22:28:56'),(740,1196,4,'2019-08-21 23:15:21','2019-08-21 23:15:21'),(741,1198,249,'2019-09-03 05:36:22','2019-09-03 05:36:22'),(742,1199,574,'2019-09-06 21:44:13','2019-09-06 21:44:13'),(743,1199,574,'2019-09-06 21:46:40','2019-09-06 21:46:40'),(744,1201,672,'2019-09-24 15:03:54','2019-09-24 15:03:54'),(745,1201,247,'2019-09-24 15:08:29','2019-09-24 15:08:29'),(746,1201,216,'2019-09-24 15:09:09','2019-09-24 15:09:09'),(747,1150,680,'2019-09-26 21:35:09','2019-09-26 21:35:09'),(748,1150,1428,'2019-09-26 21:37:43','2019-09-26 21:37:43'),(749,1150,1203,'2019-09-26 21:38:30','2019-09-26 21:38:30'),(750,1150,799,'2019-09-26 22:11:42','2019-09-26 22:11:42'),(751,1150,776,'2019-09-26 22:14:01','2019-09-26 22:14:01'),(752,1150,688,'2019-09-26 22:15:52','2019-09-26 22:15:52'),(753,1150,1254,'2019-09-28 20:34:17','2019-09-28 20:34:17');

--
-- Table structure for table `tools`
--

CREATE TABLE `tools` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `detail` mediumtext,
  `url` varchar(255) DEFAULT NULL,
  `is_approved` tinyint(1) DEFAULT '0',
  `creators_name` text,
  `creators_email` varchar(255) DEFAULT NULL,
  `creators_url` varchar(255) DEFAULT NULL,
  `image_url` varchar(255) DEFAULT NULL,
  `star_average` float DEFAULT '0',
  `is_hidden` tinyint(1) DEFAULT '0',
  `last_updated` date DEFAULT NULL,
  `documentation_url` varchar(255) DEFAULT NULL,
  `code` mediumtext,
  `repository` varchar(255) DEFAULT NULL,
  `language` int(11) DEFAULT NULL,
  `nature` int(11) DEFAULT '0',
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `recipes` mediumtext NOT NULL,
  PRIMARY KEY (`id`),
  KEY `index_tools_on_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1573 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `tools`
--

INSERT INTO `tools` VALUES (1,NULL,'List Words - HTML (TAPoRware)','<p>This tool lists words in an HTML document, either uploaded by the user or from a web address. List Words works with relatively small texts of under a megabyte in size. It is part of the TAPoRware collection of tools; there are XML and plain text versions available as well.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/listword.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/1.png',4,0,'2011-11-27','http://tada.mcmaster.ca/Main/TAPoRwareHTMLListWords',NULL,'',NULL,0,'2011-05-12 03:12:24','2017-10-31 14:24:25',''),(4,1,'Wordle','<p>Wordle is an online toy for generating <a href=\"http://en.wikipedia.org/wiki/Word_cloud\">word clouds</a> using the text you provide.  Text can be submitted by providing an URL or by pasting raw text into an input.  The most frequent words from the text are then used as the source for the resulting visualization, where frequency is used to determine the size of each word.</p> <p>You may customize the output by choosing from a variety of display options (layout, font, colours) or use the randomize feature to get a random visualization.  Additionally, there is built-in stop word support for many common languages, and the option to change the word case.</p>','http://www.wordle.net/',1,'Jonathan Feinberg','jdf@pobox.com','http://mrfeinberg.com/','images/tools/0/4.png',4,0,'2018-10-17','http://www.wordle.net/faq',NULL,'',NULL,0,'2011-05-24 23:21:12','2018-10-17 02:09:10',''),(5,NULL,'OrlandoVision (OVis)','<p>An application for visualizing a specific collection of authors, and the links or associations between them.  Links are determined by co-occurrence in the Orlando dataset.  The current dataset consists of authors, other people associated with them, and the text entries upon which these associations are based.  The application is designed in such a way that it could be extended to use other datasets as well.<br><br>The display can be customized in the several ways.  Node colours, shapes and sizes can be altered.  More significantly, the layout of the graph can be chosen from amongst several different algorithms.<br><br>As the collection is quite large, there are many filtering options available.  In terms of author, the following categories can be specified: gender, author/non-author, and author nationality.  The user can create complex search queries of the authors and the text, and specify a date restriction for the authors\' life span.<br><br>Each association in the text has been tagged with one or more semantic attributes, i.e. the type or meaning of the relation between the people.  These tags have been organized into a tree, moving from general to more specific relations.  Each tag in the tree can be checked/unchecked, further filtering the results.<br><br>Finally, a data set and customizations can be saved as a session which can then be loaded at a later time.  In addition, screenshots of the current layout can be saved to an image file.</p>','http://www.artsrn.ualberta.ca/orlando/',1,'The Orlando Project','orlando@ualberta.ca','http://www.ualberta.ca/orlando','images/tools/0/5.png',2,0,'2018-11-01','http://',NULL,'',NULL,0,'2011-05-26 03:12:21','2018-11-01 03:09:56',''),(8,NULL,'Voyant Cirrus','<p>Cirrus is a visualization tool that displays a word cloud relating to the frequency of words appearing in one or more documents. One can click on any word appearing in the cloud to obtain detailed information about its relativity.</p>','http://voyant-tools.org/tool/Cirrus/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/8.png',5,0,'2018-10-05','http://docs.voyant-tools.org/tools/cirrus/',NULL,'',NULL,0,'2011-05-26 06:38:13','2018-10-05 03:23:44',''),(9,NULL,'Voyant Links','<p>Links finds collocates for words and displays links between them using a force directed graph. It shows term frequencies in proximity to keyword. It is a visualization and shows a web of terms.</p>','',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/9.png',3,0,'2018-09-18','http://docs.voyant-tools.org/tools/links',NULL,'',NULL,0,'2011-06-02 22:16:41','2018-09-18 01:50:15',''),(10,NULL,'Voyant Bubblelines','<p>Bubblelines is a visualization tool that helps to understand patterns of word repetition in one or more documents. Each document is represented as a horizontal line and each seach term is represented as a bubble – the bubble represents the frequency of the term in the corresponding segment of text (the text is divided into segments of equal length).</p>','http://voyant-tools.org/tool/Bubblelines/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/10.png',5,0,'2018-10-05','http://docs.voyant-tools.org/tools/bubblelines/',NULL,'',NULL,0,'2011-06-02 22:35:59','2018-10-05 02:36:43',''),(11,NULL,'Voyant Bubbles','<p>Bubbles reads the words in a document (or corpus) and displays the highest frequency words within proportionately large bubbles. Once you arrive to Bubbles, insert / upload your content and let the tool perform its analysis.</p>','http://voyant-tools.org/tool/Bubbles/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/11.png',5,0,'2018-10-05','http://docs.voyant-tools.org/tools/bubbles/',NULL,'',NULL,0,'2011-06-02 22:47:35','2018-10-05 02:36:13',''),(12,NULL,'Voyant Corpus Grid','<p>Corpus Grid shows an overview of the corpus, including each document\'s title, number of word tokens (total words), number or word types (unique words), and lexical density (the ratio of tokens to types).</p>','http://voyant-tools.org/tool/CorpusGrid/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/12.png',3,0,'2013-10-30','http://docs.voyant-tools.org/tools/corpusgrid/',NULL,'',NULL,0,'2011-06-02 22:55:54','2017-10-31 14:24:27',''),(13,NULL,'Voyant Corpus Summary','<p>Corpus Summary is a tool that provides a simple, textual overview of the current corpus. Features of this tool include number of words, number of unique words, longest documents, highest vocabulary density, most frequent words, notable peaks in frequency, and distinctive words.</p>','http://voyant-tools.org/tool/CorpusSummary/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/13.png',0,0,'2013-10-30','http://docs.voyant-tools.org/tools/corpussummary/',NULL,'',NULL,0,'2011-06-02 23:00:54','2017-10-31 14:24:27',''),(14,NULL,'Voyant Corpus Term Frequencies','<p>Corpus Term Frequencies shows overall word frequencies for the entire corpus as well as information about how word frequencies are spread out over documents within the corpus. Hover over column headers and buttons for more information.</p>','http://voyant-tools.org/tool/CorpusTypeFrequenciesGrid/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/14.png',5,0,'2013-10-30','http://docs.voyant-tools.org/tools/corpustypefrequenciesgrid/',NULL,'',NULL,0,'2011-06-02 23:04:19','2019-02-15 18:37:04',''),(15,NULL,'Voyant Document Term Frequencies','<p>Document Term Frequencies shows word frequencies for each document in the corpus. You can see the selected word at the top of the window highlighted in yellow. Its relevance to the documents is shown in the table below.</p>','http://voyant-tools.org/tool/DocumentTypeFrequenciesGrid/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/15.png',5,0,'2013-10-30','http://docs.voyant-tools.org/tools/documenttypefrequenciesgrid/',NULL,'',NULL,0,'2011-06-02 23:15:05','2017-10-31 14:24:27',''),(16,NULL,'Voyant Document KWICs','<p>Document KWICs shows a table of keywords in their context. In other words, it provides a list of certain keywords and their occurrence within a corpus or document.</p>','http://voyant-tools.org/tool/DocumentTypeKwicsGrid/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/16.png',4,0,'2013-10-30','http://docs.voyant-tools.org/tools/documenttypekwicsgrid',NULL,'',NULL,0,'2011-06-02 23:23:37','2017-10-31 14:24:28',''),(17,NULL,'Voyant Knots','<p>Knots is a visualization tool that helps to understand patterns of word relevance in one or more documents. Each term is represented as a twisted line &ndash; when the lines overlap it means a relevance or linkage within the terms.</p>','http://voyant-tools.org/tool/Knots/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/17.png',5,0,'2013-10-30','http://docs.voyant-tools.org/tools/knots',NULL,'',NULL,0,'2011-06-02 23:31:52','2017-10-31 14:24:28',''),(18,NULL,'Voyant Lava','<p>Lava allows you to view multiple levels of a corpus in a three-dimensional environment. Clicking on certain documents within the corpus expands the Lava visualization in a ring to explore further.</p>','',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/18.png',0,0,'2018-09-25','http://docs.voyant-tools.org/tools/lava',NULL,'',NULL,0,'2011-06-02 23:43:11','2018-09-25 16:18:09',''),(19,NULL,'Voyant Reader','<p>Reader acts as a method of reading all documents within a specified corpus. It does not provide text analysis but rather a method of viewing the contents of a corpus.</p>','http://voyant-tools.org/tool/Reader/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/19.png',0,0,'2018-10-17','http://docs.voyant-tools.org/tools/reader',NULL,'',NULL,0,'2011-06-03 00:45:06','2018-10-17 05:18:00',''),(20,NULL,'Voyant ScatterPlot','<p>ScatterPlot creates a scatter plot graph of terms, spaced by their variation from one another. Once you arrive to ScatterPlot, insert / upload your content and let the tool perform its analysis. You may hover over these dots and click on them for more information.</p>','http://voyant-tools.org/tool/ScatterPlot/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/20.png',3,0,'2018-10-05','http://docs.voyant-tools.org/tools/scatterplot',NULL,'',NULL,0,'2011-06-03 00:56:37','2018-10-05 02:35:10',''),(21,NULL,'Voyant Term Frequencies Chart','<p>Term Frequencies Chart shows how terms are distributed across document(s) in a corpus (documents are shown in the order in which they were added).</p>','http://voyant-tools.org/tool/TypeFrequenciesChart/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/21.png',1,0,'2018-10-05','http://docs.voyant-tools.org/tools/typefrequencieschart',NULL,'',NULL,0,'2011-06-03 01:03:29','2018-10-05 02:34:33',''),(22,NULL,'Voyant Term Fountain (beta)','<p>Term Fountain is a tool for visualizing word frequencies, and a part of the Voyant suite of tools. It takes the most common words in a corpus and represents them as a fountain. This tool is still in beta.</p>','',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/22.png',1,0,'2018-10-05','http://docs.voyant-tools.org/tools/wordcountfountain',NULL,'',NULL,0,'2011-06-03 01:12:16','2018-10-05 02:32:05',''),(23,NULL,'Voyant Mandala','<p>Mandala is a visualization tool that imports &ldquo;textual&rdquo; files to perform analysis on the frequency and linkage of words. For example, you may import a play and find the linkage and frequency between a word and its speaker.</p> <p>&nbsp;</p>','http://voyant-tools.org/tool/Mandala/',1,'Stéfan Sinclair and Stan Ruecker','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/23.png',2,0,'2013-10-30','http://docs.voyant-tools.org/tools/mandala',NULL,'',NULL,0,'2011-06-10 16:53:19','2018-04-12 19:34:39',''),(24,NULL,'Orlando Degrees of Separation','<p>Orlando contains a relatively large corpus, currently consisting of details about the life and writing careers of roughly 1000 British women writers, amounting to 6.8 million words with 2.2 million semantic tags for everything from paragraphs to politics, plots, or relations with publishers.</p>','',1,'The Orlando Project was led by Patricia Clements, Isobel Grundy, and Susan Brown at the University of Alberta and the University of Guelph. The 6 degrees research team also includes Blair Nonnecke (Guelph), Claire Warwick (UCL), and Stan Ruecker (U of A).','','','images/tools/0/24.png',0,0,'2018-11-07','http://',NULL,'',NULL,0,'2011-06-15 15:44:31','2018-11-07 05:04:50',''),(25,NULL,'Orlando Breadboard','<p>Breadboard is an application that allows one to easily find and view authors, with a compact representation of their connections to other authors, places, literary references, organizations and miscellaneous.</p>','',1,'Susan Brown, Milena Radzikowska, Stan Ruecker, Mark Bieber, Jeffrey Antoniuk','','','images/tools/0/25.png',0,0,'2018-11-07','http://cwrc.cs.ualberta.ca/index.php/General:Breadboard',NULL,'',NULL,0,'2011-06-15 17:58:38','2018-11-07 05:07:12',''),(26,NULL,'Voyant Flowerbed (beta)','<p class=\"western\">Flowerbed is a simple visualization tool for viewing up to two documents. Each document is presented as a “flowerbed”, wherein each word is a flower. The height of the flower is determined by the relative frequency of that word within the document. The petals on each flower represent features associated with the word. When two documents are present in chosen the corpus, the second is mirrored below the first. In this way it is possible to do a cursory comparison of the documents.</p>','',1,'Stéfan Sinclair','','http://stefansinclair.name/','images/tools/0/26.png',0,0,'2018-09-28','http://',NULL,'',NULL,0,'2011-06-15 20:26:38','2018-09-28 03:21:40',''),(27,NULL,'Voyant FeatureClusters (beta)','<p class=\"western\">FeatureClusters is a visualization tool for viewing associations between words, based on commonalities in the feature sets of the words. This is illustrated using a force-directed graph, wherein each word is a node in the graph. Nodes are connected to one another if they share the same feature. Features are represented by the smaller circles (or petals) which surround each word. Moving your mouse over a word will show the feature details associated with that word. Clicking on a word will highlight its connections to other words.</p>','',1,'Stéfan Sinclair','','http://stefansinclair.name/','images/tools/0/27.png',3,0,'2018-10-03','http://',NULL,'',NULL,0,'2011-06-15 20:28:48','2018-10-03 01:49:48',''),(28,NULL,'Voyant Translate Skin (beta)','<p class=\"western\">The translate skin is<img src=\"../../system/icons/28/original/translateskin.png\" alt=\"\"> a custom skin for Voyeur Tools which offers multiple translations of the same document. Target languages for the translations are chosen from a comprehensive list and the Google Translate API is used to provide the resulting texts. These are used to populate the final view which consists of a series of Cirrus tools, one for each translation.</p> <p class=\"western\">Further translations can be produced for any of the texts by selecting one from the “Next Translation” drop-down. The Cirrus tools can be arranged in two layouts: tile, and circular. They can also be re-sized and moved to produce a custom layout.</p>','',1,'Stéfan Sinclair','','http://stefansinclair.name/','images/tools/0/28.png',0,0,'2018-10-03','http://',NULL,'',NULL,0,'2011-06-15 20:31:45','2018-10-03 01:47:15',''),(29,NULL,'List Words - XML (TAPoRware)','<p>This tool lists words in an XML document, either uploaded by the user or from a web address. List Words works with relatively small texts of under a megabyte in size. It is part of the TAPoRware collection of tools; there are HTML and plain text versions available as well.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/listword.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/29.png',0,0,'2011-11-27','http://tada.mcmaster.ca/Main/TAPoRwareXMLListWords',NULL,'',NULL,0,'2011-11-27 21:45:54','2017-10-31 14:24:31',''),(30,NULL,'List Words - Plain Text (TAPoRware)','<p>This tool lists words in an plain text document, either uploaded by the user or from a web address. List Words works with relatively small texts of under a megabyte in size. It is part of the TAPoRware collection of tools; there are XML and HTML versions available as well.</p>','http://taporware.ualberta.ca/~taporware/textTools/listword.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/30.png',1,0,'2011-11-28','http://tada.mcmaster.ca/Main/TAPoRwarePlainListWords',NULL,'',NULL,0,'2011-11-28 21:20:48','2017-10-31 14:24:31',''),(31,NULL,'List Tags - HTML (TAPoRware)','<p>This tool lists all tags found in an HTML document, either uploaded by the user or from a web address. It is part of the TAPoRware collection of tools; see List XML Elements for an XML tool with similar functionality.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/listtags.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/31.png',0,0,'2011-11-28','http://tada.mcmaster.ca/Main/TAPoRwareHTMLListHTMLTags',NULL,'',NULL,0,'2011-11-28 21:44:25','2017-10-31 14:24:32',''),(32,NULL,'List XML Elements (TAPoRware)','<p>This tool is used to display the elements and attributes found in an XML document. It enables users to count all instances of an element and to view the structure/hierarchy of the document, in addition to listing attributes and attribute values. It is part of the TAPoRware collection of tools; please see List HTML Tags for a similar HTML tool.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/listxml.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/32.png',0,0,'2011-11-28','http://tada.mcmaster.ca/Main/TAPoRwareXMLListXMLElements',NULL,'',NULL,0,'2011-11-28 22:07:00','2017-10-31 14:24:32',''),(33,NULL,'Extract Text - HTML (TAPoRware)','<p>This tool extracts text found within specific tags in an HTML document. It is part of the TAPoRware toolset; an XML version is also available.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/extract.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/33.png',1,0,'2011-11-28','http://tada.mcmaster.ca/Main/TAPoRwareHTMLExtractText',NULL,'',NULL,0,'2011-11-28 22:55:59','2017-10-31 14:24:32',''),(34,NULL,'Extract Text - XML (TAPoRware)','<p>This tool extracts text found within specific tags in an XML document. It is part of the TAPoRware toolset; an HTML version is also available.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/xmlquery.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/34.png',0,0,'2011-11-28','http://tada.mcmaster.ca/Main/TAPoRwareExtractXML',NULL,'',NULL,0,'2011-11-28 23:04:36','2017-10-31 14:24:32',''),(35,NULL,'Concordance - HTML (TAPoRware)','<p>This tool finds the context for a specified word or pattern anywhere in an HTML document, and can be narrowed to only the text within specified tags. Users may specify the context length, and whether the tool returns the context length in words, sentences, lines or paragraphs. It is also available for XML and plain text documents, and is a part of the TAPoRware toolset.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/findtext.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/35.png',1,0,'2011-11-29','http://tada.mcmaster.ca/Main/TAPoRwareHTMLConcordance',NULL,'',NULL,0,'2011-11-29 00:38:07','2017-10-31 14:24:33',''),(36,NULL,'Concordance - XML (TAPoRware)','<p>This tool finds the context for a specified word or pattern anywhere in an XML document, and can be narrowed to only the text within specified tags. Users may specify the context length, and whether the tool returns the context length in words, sentences, lines or paragraphs. It is also available for HTML and plain text documents, and is a part of the TAPoRware toolset.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/findtext.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/36.png',0,0,'2011-11-29','http://tada.mcmaster.ca/Main/TAPoRwareXMLConcordance',NULL,'',NULL,0,'2011-11-29 00:49:46','2017-10-31 14:24:33',''),(37,NULL,'Concordance - Plain Text (TAPoRware)','<p>This tool finds the context for a specified word or pattern anywhere in a plain text document. Users may specify the context length, and whether the tool returns the context length in words, sentences, lines or paragraphs. It is also available for XML and HTML documents, and is a part of the TAPoRware toolset.</p>','http://taporware.ualberta.ca/~taporware/textTools/findtext.shtml?',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/37.png',0,0,'2011-11-29','http://tada.mcmaster.ca/Main/TAPoRwarePlainConcordance',NULL,'',NULL,0,'2011-11-29 01:01:24','2017-10-31 14:24:33',''),(38,NULL,'Co-Occurrence - HTML (TAPoRware)','<p>This tool looks for two words a certain distance apart from one another in an HTML document, within the user-specified limits of words, sentences or lines. The results can be narrowed to only include words found within certain tags. XML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/cooccur.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/38.png',0,0,'2011-12-19','http://tada.mcmaster.ca/Main/TAPoRwareHTMLCoOccurrence',NULL,'',NULL,0,'2011-12-19 20:48:29','2018-01-25 23:55:14',''),(39,NULL,'Co-Occurrence - XML (TAPoRware)','<p>This tool looks for two words a certain distance apart from one another in an XML document, within the user-specified limits of words, sentences or lines. The results can be narrowed to only include words found within certain tags. HTML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/cooccur.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/39.png',0,0,'2011-12-19','http://tada.mcmaster.ca/Main/TAPoRwareXMLCoOccurence',NULL,'',NULL,0,'2011-12-19 21:09:50','2017-10-31 14:24:34',''),(40,NULL,'Co-Occurrence - Plain Text (TAPoRware)','<p>This tool looks for two words a certain distance apart from one another in a plain text document, within the user-specified limits of words, sentences or lines. The results can be narrowed to only include words found within certain tags. HTML and XML versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/textTools/cooccur.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/40.png',1,0,'2011-12-19','http://tada.mcmaster.ca/Main/TAPoRwarePlainCoOccurrence',NULL,'',NULL,0,'2011-12-19 21:25:13','2017-10-31 14:24:34',''),(41,NULL,'Collocation - HTML (TAPoRware)','<p>This tool provides all words directly before and after a user-specified word, based on the desired context of words, lines, sentences or paragraphs. The results can be sorted alphabetically, by frequency, or by Z-score (an indication of how far and in what direction that item deviates from its distribution\'s mean, expressed in units of its distribution\'s standard deviation). XML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/collocation.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/41.png',0,0,'2011-12-19','http://tada.mcmaster.ca/Main/TAPoRwareHTMLCollocation',NULL,'',NULL,0,'2011-12-19 22:02:03','2017-10-31 14:24:35',''),(42,NULL,'Collocation - XML (TAPoRware)','<p>This tool provides all words directly before and after a user-specified word, based on the desired context of words, lines or sentences. The results can be sorted alphabetically, by frequency, or by Z-score (an indication of how far and in what direction that item deviates from its distribution\'s mean, expressed in units of its distribution\'s standard deviation). HTML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/collocation.shtml?http://www.ucc.ie/celt/published/E726000-001.html',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/42.png',5,0,'2011-12-19','http://tada.mcmaster.ca/Main/TAPoRwareXMLCollocation',NULL,'',NULL,0,'2011-12-19 22:10:44','2018-11-08 21:06:50',''),(43,NULL,'Collocation - Plain Text (TAPoRware)','<p>This tool provides all words directly before and after a user-specified word, based on the desired context of words, lines, sentences or paragraphs. The results can be sorted alphabetically, by frequency, or by Z-score (an indication of how far and in what direction that item deviates from its distribution\'s mean, expressed in units of its distribution\'s standard deviation). HTML and XML versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/textTools/collocation.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/43.png',1,0,'2011-12-19','http://tada.mcmaster.ca/Main/TAPoRwarePlainCollocates',NULL,'',NULL,0,'2011-12-19 22:41:49','2017-10-31 14:24:35',''),(44,NULL,'Tokenize - HTML (TAPoR)','<p>This tool splits an HTML document at specified points into \'tokens\' - words, lines, sentences, paragraphs or characters. The user can specify characters, patterns, or tags upon which to separate tokens, and choose to have the results listed separator removed, appearing before the split, or appearing after the split. Versions are also available for XML and plain text within the TAPoR toolset.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/tokenize.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/44.png',0,0,'2018-11-06','http://tada.mcmaster.ca/Main/TAPoRwareHTMLTokenize',NULL,'',NULL,0,'2011-12-19 23:16:47','2018-11-06 06:46:35',''),(45,NULL,'Tokenize - XML (TAPoR)','<p>This tool splits an XML document at specified points into \'tokens\' - words, lines, sentences, paragraphs or characters. The user can specify characters, patterns, or tags upon which to separate tokens, and choose to have the results listed separator removed, appearing before the split, or appearing after the split. Versions are also available for HTML and plain text within the TAPoR toolset.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/tokenize.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/45.png',0,0,'2011-12-21','http://tada.mcmaster.ca/Main/TAPoRwareXMLTokenize',NULL,'',NULL,0,'2011-12-21 23:33:38','2017-10-31 14:24:36',''),(46,NULL,'Tokenize - Plain Text (TAPoR)','<p>This tool splits an HTML document at specified points into \'tokens\' - words, lines, sentences, paragraphs or characters. The user can specify characters, patterns, or tags upon which to separate tokens, and choose to have the results listed separator removed, appearing before the split, or appearing after the split. Versions are also available for HTML and plain text within the TAPoR toolset.</p>','http://taporware.ualberta.ca/~taporware/textTools/tokenize.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/46.png',0,0,'2011-12-21','http://tada.mcmaster.ca/Main/TAPoRwarePlainTokenize',NULL,'',NULL,0,'2011-12-21 23:35:38','2017-10-31 14:24:36',''),(47,NULL,'Fixed Phrase - HTML (TAPoRware)','<p>This tool locates fixed phrases of a user-chosen context length containing a specified word and displays all matching phrases in several different ways. Versions are also available for XML and plain text through the TAPoR toolset.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/fixedphrase-html.shtml',1,'Academic Computing Services, New York University','','http://','images/tools/0/47.png',0,0,'2011-12-22','n/a',NULL,'',NULL,0,'2011-12-22 00:12:51','2017-10-31 14:24:37',''),(48,NULL,'Fixed Phrase - XML (TAPoRware)','<p>This tool locates fixed phrases of a user-chosen context length containing a specified word and displays all matching phrases in several different ways. Versions are also available for HTML and plain text through the TAPoR toolset.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/fixedphrase-xml.shtml',1,'Academic Computing Services, New York University','','http://','images/tools/0/48.png',0,0,'2011-12-22','n/a',NULL,'',NULL,0,'2011-12-22 00:19:44','2017-10-31 14:24:37',''),(49,NULL,'Fixed Phrase - Plain Text (TAPoRware)','<p>This tool locates fixed phrases of a user-chosen context length containing a specified word and displays all matching phrases in several different ways. Versions are also available for HTML and XML through the TAPoR toolset.</p>','http://taporware.ualberta.ca/~taporware/textTools/fixedphrase-text.shtml',1,'Academic Computing Services, New York University','','http://','images/tools/0/49.png',1,0,'2011-12-22','http://',NULL,'',NULL,0,'2011-12-22 00:21:31','2017-10-31 14:24:37',''),(50,NULL,'Date Finder - HTML (TAPoRware)','<p>This tool extracts dates from an HTML document from a choice of presets including all dates, years, months, weeks, seasons or North American holidays. Users can also choose to define dates, such as specific month(s), week(s), season(s) or holiday(s). Versions are also available for XML and plain text within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/datefinder.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/50.png',0,0,'2011-12-22','http://tada.mcmaster.ca/Main/TAPoRwareHTMLDateFinder',NULL,'',NULL,0,'2011-12-22 18:32:17','2017-10-31 14:24:37',''),(51,NULL,'Date Finder - XML (TAPoRware)','<p>This tool extracts dates from an XML document from a choice of presets including all dates, years, months, weeks, seasons or North American holidays. Users can also choose to define dates, such as specific month(s), week(s), season(s) or holiday(s). Versions are also available for HTML and plain text within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/datefinder.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/51.png',0,0,'2011-12-22','http://tada.mcmaster.ca/Main/TAPoRwareXMLDateFinder',NULL,'',NULL,0,'2011-12-22 18:35:52','2017-10-31 14:24:38',''),(52,NULL,'Date Finder - Plain Text (TAPoRware)','<p>This tool extracts dates from a plain text document from a choice of presets including all dates, years, months, weeks, seasons or North American holidays. Users can also choose to define dates, such as specific month(s), week(s), season(s) or holiday(s). Versions are also available for HTML and XML within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/textTools/datefinder.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/52.png',0,0,'2011-12-22','http://tada.mcmaster.ca/Main/TAPoRwarePlainDateFinder',NULL,'',NULL,0,'2011-12-22 18:39:27','2017-10-31 14:24:38',''),(53,NULL,'Summarizer - HTML (TAPoRware)','<p>This tool creates a summary of statistical information on a given document, and enables the user to select what types of information to display in the summary. The options include high frequency words, sentences with high frequency words, high frequency word context, collocation and element/text distribution. XML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/summarizer.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/53.png',0,0,'2012-02-29','http://tada.mcmaster.ca/Main/TAPoRwareHTMLSummarizer',NULL,'',NULL,0,'2011-12-22 19:41:09','2017-10-31 14:24:38',''),(54,NULL,'Summarizer - XML (TAPoRware)','<p>This tool creates a summary of statistical information on a given document, and enables the user to select what types of information to display in the summary. The options include high frequency words, sentences with high frequency words, high frequency word context, collocation and element/text distribution. HTML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/summarizer.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/54.png',0,0,'2012-02-29','http://tada.mcmaster.ca/Main/TAPoRwareXMLSummarizer',NULL,'',NULL,0,'2011-12-22 19:42:06','2017-10-31 14:24:38',''),(55,NULL,'Summarizer - Plain Text (TAPoRware)','<p>This tool creates a summary of statistical information on a given document, and enables the user to select what types of information to display in the summary. The options include high frequency words, sentences with high frequency words, high frequency word context, collocation and element/text distribution. HTML and XML versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/textTools/summarizer.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/55.png',0,0,'2012-01-18','http://tada.mcmaster.ca/Main/TAPoRwarePlainSummarizer',NULL,'',NULL,0,'2011-12-22 19:43:34','2017-10-31 14:24:39',''),(56,NULL,'Distribution Graph - HTML (TAPoRware)','<p>This tool creates a graphical distribution list of words found within specific HTML elements. XML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/distgraph.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/56.png',0,0,'2012-01-18','http://tada.mcmaster.ca/Main/TAPoRwareDistributionGraph',NULL,'',NULL,0,'2011-12-22 19:50:13','2017-10-31 14:24:39',''),(57,NULL,'Distribution Graph - XML (TAPoRware)','<p>This tool creates a graphical distribution list of words found within specific XML elements. HTML and plain text versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/patterndistrib.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/57.png',2,0,'2012-01-18','http://tada.mcmaster.ca/Main/TAPoRwareXMLDistribution',NULL,'',NULL,0,'2011-12-22 19:52:39','2017-10-31 14:24:39',''),(58,NULL,'Distribution Graph - Plain Text (TAPoRware)','<p>This tool creates a graphical distribution list of words found within the text document. HTML and XML versions are also available within the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/textTools/patterndistrib.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/58.png',0,0,'2012-01-18','http://tada.mcmaster.ca/Main/TAPoRwarePlainDistribution',NULL,'',NULL,0,'2011-12-22 19:55:22','2017-10-31 14:24:39',''),(59,NULL,'Comparator - HTML (TAPoRware)','<p>This tool compares two documents by comparing the words in each according to user specifications. XML and plain text versions are also available in the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/comparator.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/59.png',0,0,'2012-01-31','http://tada.mcmaster.ca/Main/TAPoRwareHTMLComparator',NULL,'',NULL,0,'2011-12-22 20:12:18','2017-10-31 14:24:40',''),(60,NULL,'Comparator - XML (TAPoRware)','<p>This tool compares two documents by comparing the words in each according to user specifications. HTML and plain text versions are also available in the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/comparator.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/60.png',0,0,'2012-01-31','http://tada.mcmaster.ca/Main/TAPoRwareXMLComparator',NULL,'',NULL,0,'2011-12-22 20:13:32','2017-10-31 14:24:40',''),(61,NULL,'Comparator - Plain Text (TAPoRware)','<p>This tool compares two documents by comparing the words in each according to user specifications. HTML and XML versions are also available in the TAPoRware toolsets.</p>','http://taporware.ualberta.ca/~taporware/textTools/comparator.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/61.png',5,0,'2012-01-31','http://tada.mcmaster.ca/Main/TAPoRwareComparator',NULL,'',NULL,0,'2011-12-22 20:15:28','2017-10-31 14:24:40',''),(62,NULL,'Link Extractor - HTML (TAPoRware)','<p>This tool extracts all the URLs, except image sources, in an HTML text. It also converts relative links to clickable absolute links.</p>','http://taporware.ualberta.ca/~taporware/htmlTools/linkextractor.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/62.png',0,0,'2012-01-18','http://tada.mcmaster.ca/Main/TAPoRwareHTMLLinkExtractor',NULL,'',NULL,0,'2011-12-22 20:23:40','2017-10-31 14:24:40',''),(63,NULL,'Hypergraph - XML (TAPoRware)','<p>Tool uses the Hypergraph Package (http://hypergraph.sourceforge.net/) to display the structure of a user-selected XML file. This tool requires jsdk1.4.2 or later; otherwise only the default hypergraph is displayed.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/hypergraph.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/63.png',1,0,'2012-01-31','http://tada.mcmaster.ca/Main/TAPoRwareXMLHypergraph',NULL,'',NULL,0,'2011-12-22 20:25:01','2017-10-31 14:24:41',''),(64,NULL,'Transformer - XML (TAPoRware)','<p>This tool performs XML to HTML transformation using an XSL stylesheet. The XSL stylesheet can be from another website or as defined by the user.</p>','http://taporware.ualberta.ca/~taporware/xmlTools/transform.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/64.png',0,0,'2013-09-06','http://tada.mcmaster.ca/Main/TAPoRwareXMLTransformer',NULL,'',NULL,0,'2011-12-22 20:26:21','2017-10-31 14:24:41',''),(65,NULL,'Speech Tagger - Plain Text (TAPoRware)','<p>The speech tagger allows you to highlight different parts of a text where each part is identified by a different colour. The tool uses TreeTagger to find the different parts of speech. Note that using the TreeTagger tool is very taxing on the server and may take a long time before results are returned.</p>','http://taporware.ualberta.ca/~taporware/textTools/speechtagger.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/65.png',0,0,'2012-01-18','http://tada.mcmaster.ca/Main/TAPoRwareSpeechTagger',NULL,'',NULL,0,'2011-12-22 21:12:53','2017-10-31 14:24:41',''),(66,NULL,'Aggregator - Other (TAPoRware)','<p>This tool aggregates texts/subtexts from different locations into a single text. The original texts can be from a user-specified web page or files located on one\'s computer. Aggregating subtexts requires all documents to share a common subtext tag, such as the <span class=\"code\">&lt;body&gt;</span> tag. The aggregator tool will grab the contents from the texts to form a single new text.</p>','http://taporware.ualberta.ca/~taporware/otherTools/aggregator.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/66.png',1,0,'2012-02-29','http://tada.mcmaster.ca/Main/TAPoRwareOther',NULL,'',NULL,0,'2011-12-22 21:17:58','2017-10-31 14:24:41',''),(68,NULL,'Raining Words - Other (TAPoR)','<p>\'Raining Words\' is a tool designed to display word frequency information, minus the words in a chosen stop list, from a user-specified document in a Java applet. High frequency words appear larger and move more slowly than lower frequency words. This tool requires Java 1.4.2_08 or a more recent version for your browser.  As the TAPoRware interface defaults to opening the applet in a new window, popups must also be enabled from the TAPoRware site in order to see the results.</p>','http://taporware.ualberta.ca/~taporware/otherTools/rainingwords.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/68.png',0,0,'2018-10-05','http://tada.mcmaster.ca/Main/TAPoRwareRainingWords',NULL,'',NULL,0,'2011-12-22 21:39:35','2018-10-05 03:02:04',''),(69,NULL,'Raw Grep - Other (TAPoRware)','<p>This tool can find a user-specified string of characters anywhere in a text document. If the string is part of a word or another non-space string, the word or the non-space string will be displayed as a unit. The search can also be used to view a concordance of either words, sentences, or lines surrounding the result. The tool will treat HTML or XML text as plain text.</p>','http://taporware.ualberta.ca/~taporware/otherTools/grep.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/69.png',0,0,'2012-01-31','http://tada.mcmaster.ca/Main/TAPoRwareRowGrep',NULL,'',NULL,0,'2011-12-22 21:52:56','2017-10-31 14:24:42',''),(70,NULL,'Tagger - Other (TAPoRware)','<p>This tool was designed by the Globalization &amp; Compendium project to tag glossary terms in an XML file, though it can also be used to tag other text formats. Only the first appearance of a term will be tagged.</p>','http://taporware.ualberta.ca/~taporware/otherTools/tagger.shtml',1,'Globalization & Compendium project','info@globalautonomy.ca','http://www.globalautonomy.ca/','images/tools/0/70.png',0,0,'2012-02-29','http://tada.mcmaster.ca/Main/TAPoRwareTagger',NULL,'',NULL,0,'2011-12-22 21:57:13','2017-10-31 14:24:42',''),(72,NULL,'Weighted Centroid - Other (TAPoRware)','<p>The Weighted Centroid is a java applet designed to display a circular graph based on word distribution data. The text is divided up into an arbitrary number of units, which are positioned around the circumference of the circle in a clockwise sequence. The more times a word appears in a particular text unit, the closer the word will be to that unit in the circle, and the more units it appears in, the closer it will appera to the centre.</p>','http://taporware.ualberta.ca/~taporware/otherTools/wcentroid.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/72.png',0,0,'2018-10-05','http://tada.mcmaster.ca/Main/TAPoRwareWeightedCentroid',NULL,'',NULL,0,'2012-01-09 22:35:57','2018-10-05 03:00:35',''),(73,NULL,'List Word Pairs - Beta (TAPoRware)','<p>This tool lists all word pairs found in a document alphabetically, by frequency, by order of appearance, or in reversed alphabetical order. Users may specify restrictions to narrow the results. This tool is currently only available for plain text documents. It will strip all tags from HTML or XML documents and process them as if they were plain text.</p>','http://taporware.ualberta.ca/~taporware/betaTools/listwordpair.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/73.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareWordPairs',NULL,'',NULL,0,'2012-01-09 22:44:51','2017-10-31 14:24:42',''),(74,NULL,'Principal Components Analysis on Plain Text - Beta (TAPoRware)','<p>This tool applies Principal Components Analysis rules to a text to generate relationships between words and text units. It works best with large texts where users can specify units of over 500 words. HTML and XML versions are not currently avaiable.</p>','http://taporware.ualberta.ca/~taporware/betaTools/pca.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/74.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwarePCA',NULL,'',NULL,0,'2012-01-09 22:54:35','2017-10-31 14:24:43',''),(75,NULL,'Word Cloud - Beta (TAPoRware)','<p>This tool generates a word cloud of the top frequency words from a text document, with word size determined by its frequency. The user can specify how many words are to be included from the document, whether to apply a modified Glasgow Stop Words list, and the order in which the words are displayed. Clicking on a word in the resultant word cloud will generate a concordance for that word. This tool is currently only available for plain text documents. Should the user provide an HTML or XML text, all tags will be stripped and it will be processed as plain text.</p>','http://taporware.ualberta.ca/~taporware/betaTools/wordcloud.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/75.png',1,0,'2018-10-17','http://tada.mcmaster.ca/Main/TAPoRwareWordCloud',NULL,'',NULL,0,'2012-01-09 23:05:02','2018-10-17 02:11:52',''),(76,NULL,'Get TEI Meta Data - Beta (TAPoRware)','<p>This tool extracts metadata from TEI-compatible XML documents and displays it in name/value format. It is only available for XML.</p>','http://taporware.ualberta.ca/~taporware/betaTools/getteimeta.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/76.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareTEIMeta',NULL,'',NULL,0,'2012-01-09 23:12:24','2017-10-31 14:24:43',''),(78,NULL,'Extract Text From HTML - Beta (TAPoRware)','<p>This tool extracts texts from user-specified HTML tags, elements and attributes. There is no XML counterpart at present.</p>','http://taporware.ualberta.ca/~taporware/betaTools/textextractor.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/78.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareHTMLExtract',NULL,'',NULL,0,'2012-01-09 23:21:00','2017-10-31 14:24:43',''),(79,NULL,'Acronym Finder - Beta (TAPoRware)','<p>This tool locates acronyms and matches them with the corresponding full name from a user-specified input text.</p>','http://taporware.ualberta.ca/~taporware/betaTools/acronymfinder.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/79.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareAcronymFinder',NULL,'',NULL,0,'2012-01-09 23:24:30','2017-10-31 14:24:44',''),(80,NULL,'Word Brush - Beta (TAPoRware)','<p>This tool is a Java applet that allows the user to paint with words extracted from an online document. Java 1.4.2_08 or newer is required.</p>','http://taporware.ualberta.ca/~taporware/betaTools/wordbrush.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/80.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareWordBrush',NULL,'',NULL,0,'2012-01-09 23:36:58','2017-10-31 14:24:44',''),(81,NULL,'CAPs Finder - Beta (TAPoRware)','<p>This tool finds groups of capital letters (CAPs) in a user-specified plain text file. If the user submits an XML or HTML document, the tool will strip all tags and then process it as plain text. XML and HTML versions are not currently available.</p>','http://taporware.ualberta.ca/~taporware/betaTools/capsfinder.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/81.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareCapFinder',NULL,'',NULL,0,'2012-01-09 23:45:47','2017-10-31 14:24:44',''),(82,NULL,'Keywords Finder - Beta (TAPoRware)','<p>This tool identifies keywords or key phrases within a user-specified text, using the assumption that they will appear with the greatest frequency. It applies a stemmer to every word. Plain text input is recommended. All tags will be stripped from an HTML or XML file submitted, and the resulting document will be processed as if it were plain text.</p> <p>Please note: This tool takes a few minutes to process a given document.</p>','http://taporware.ualberta.ca/~taporware/betaTools/keywordFinder.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/82.png',0,0,'2012-01-31','http://tada.mcmaster.ca/Main/TAPoRwareKeywordsFinder',NULL,'',NULL,0,'2012-01-09 23:55:16','2017-10-31 14:24:45',''),(83,NULL,'Compare With Control - Beta (TAPoRware)','<p>This tool compare the text submitted by the user with a predefined control corpus.&nbsp;The tool lists the words common in both texts, in an order set by the user. At present, the tool only offers the Brown Corpus, with more predefined control corpus forthcoming. Users can also upload a text of their own as control corpus.</p>','http://taporware.ualberta.ca/~taporware/betaTools/wordbrown.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/83.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareWordBrown',NULL,'',NULL,0,'2012-01-10 17:45:08','2017-10-31 14:24:45',''),(84,NULL,'Web Page Cleaner - Beta (TAPoRware)','<p>This tool removes all HTML formatting from a web page or an uploaded HTML file, leaving the text for further processing. It is particularly good for preparing text-intensive web pages for analysis as plain text.</p>','http://taporware.ualberta.ca/~taporware/betaTools/webcleaner.shtml',1,'Geoffrey Rockwell et. al.','grockwel@ualberta.ca','http://geoffreyrockwell.com/','images/tools/0/84.png',0,0,'2012-01-11','http://tada.mcmaster.ca/Main/TAPoRwareWebPageCleaner',NULL,'',NULL,0,'2012-01-10 17:59:04','2017-10-31 14:24:45',''),(85,NULL,'CHNM: Scribe','<p>Scribe, now in version 3.5, is a free note-taking program available for both PC and Mac. Aimed particularly at historians, this program allows researchers to create digital note cards for managing sources, research notes, contacts, images, glossaries, outlines, timelines and more. Furthermore, it enables organization, keyword indexing, searching, linking and cross-referencing of all entries. Entries can be entered directly or imported from online catalogues such as Amazon.com. Information entered in Scribe can be exported directly to Zotero in addition to assembling, printing or copying formatted bibliographies directly from the program. Articles can be stored directly within the program, enabling researchers to search out and highlight particular words within the text in addition to the relevant researcher notes.</p>','http://chnm.gmu.edu/tools/scribe/',1,'Elena Razlogova','erazlogo@alcor.concordia.ca','http://elenarazlogova.org/','images/tools/0/85.png',0,0,'2018-10-17','http://chnm.gmu.edu/tools/scribe/',NULL,'',NULL,0,'2012-06-26 17:37:14','2018-10-17 04:48:18',''),(86,1,'Anthologize','<p>Anthologize is a free, open-source plugin for WordPress 3.0. It enables WordPress to be used as a platform for publishing electronic texts in PDF, ePUB or TEI format. The plugin enables users to grab their existing blog posts, export content from external feeds or compose new content directly in Anthologize, then apply outlining, create a custom order, and edit content into a single document for export. Anthologize requires a self-hosted or local installation of WordPress.</p>','http://anthologize.org/',1,'One Week, One Tool','info@anthologize.org','http://anthologize.org/about/oneweek/','images/tools/0/86.png',0,0,'2018-10-12','http://anthologize.org/learn/user-guide/',NULL,'',NULL,0,'2012-06-26 18:12:41','2018-10-12 03:41:22',''),(87,NULL,'Flamenco Search','<p>Flamenco Search is a downloadable web-based interface from the UC Berkley School of Information based in Python, designed to run on a server. It streamlines the browsing of large collections. It is particularly valuable for items such as documents or images, enabling website visitors to explore content via a hierarchy of categories and subcategories called facets. Users can assign keywords and metadata which is then used to guide site visitors to the choices that best meet their interests, while allowing them to refine or expand their query and remain oriented in relation to the rest of the collection.</p>','http://flamenco.berkeley.edu/index.html',1,'Marti A. Hearst','hearst@ischool.berkeley.edu ','http://people.ischool.berkeley.edu/~hearst/','images/tools/0/87.png',0,0,'2014-12-31','http://flamenco.berkeley.edu/doc.html',NULL,'',NULL,0,'2012-06-26 19:13:22','2017-10-31 14:24:46',''),(88,NULL,'Commentpress','<p>Commentpress is an open source theme and plugin for Wordpress 3.3.1 or later designed to enable readers to contribute comments to each paragraph of a text and display those comments in the margins. Commentpress turns a text into a conversation, whether a blog or a fixed document such as an essay, book or article. It may also be used to add a gloss or annotations to a document. This tool is also available for BuddyPress and BP Group Blog.</p>','http://www.futureofthebook.org/commentpress/',1,'Eddie Tejeda','','http://www.visudo.com/','images/tools/0/88.png',0,0,'2018-10-05','http://www.futureofthebook.org/commentpress/support/installation/',NULL,'',NULL,0,'2012-06-26 20:06:20','2018-10-05 19:33:47',''),(89,NULL,'TILE (Text Image Linking Environment)','<p>The Text-Image Linking Environment (TILE) is a web-based tool that enables users to select regions of an image and link them to text. TILE is a system for creating and editing image-based electronic editions and connecting them to digital archives of the texts. It has been designed for easy modification by integrating a plugin infrastructure.</p>','http://mith.umd.edu/tile/',1,'Maryland Institute for Technology in the Humanities','contact.tile@gmail.com','http://mith.umd.edu/','images/tools/0/89.png',0,0,'2018-10-12','http://mith.umd.edu/tile/documentation/',NULL,'',NULL,0,'2012-06-27 16:34:14','2018-10-12 03:40:04',''),(90,NULL,'MONK (Metadata Offer New Knowledge)','<p>MONK (Metadata Offer New Knowledge) is a digital environment for humanities scholars. It is desgined to assist with the discovery and analysis of patterns within texts, incorporating full text content from corpora such as ECCO, EEBO and Early American Fiction directly into the tool. The MONK Workbench is the primary environment, permitting users to create worksets, perform analytics and save their results. In addition, the MONK workbench can be used in conjunction with the Flameco faceted browser and Zotero.</p>','http://quest.library.illinois.edu/monk/project/downloads/',1,'MONK Project','monkproject@lis.illinois.edu','http://www.monkproject.org/','images/tools/0/90.png',0,0,'2018-10-19','https://apps.lis.illinois.edu/wiki/display/MONK/The+MONK+Project+Wiki',NULL,'',NULL,0,'2012-06-27 17:01:36','2018-10-19 02:52:55',''),(91,1,'MorphAdorner','<p>MorphAdorner, now in version 2.0, is a Java command-line program for the adornment of words in a text. At present, available adornments include standard spellings, parts of speech and lemmata, in addition to tokenization, the recognition of sentence boundaries and extracting names and places. Version 2.0 features a separate MorphAdorner Server, an improved integration with MONK\'s Abbot and improved processing of the Early English Books Online (EEBO), Eighteenth Century Collections Online (ECCO) and Evans Early American Imprint Collection corpori.</p>','http://morphadorner.northwestern.edu/morphadorner/',1,'Philip R. \"Pib\" Burns','pib@northwestern.edu','https://depot.northwestern.edu/~pib/','images/tools/0/91.png',0,0,'2018-10-05','http://morphadorner.northwestern.edu/morphadorner/documentation/',NULL,'',NULL,0,'2012-06-27 17:44:40','2018-10-05 19:22:44',''),(92,NULL,'NLTK 3.3 (Natural Language Toolkit)','<p>NLTK 2.0 (Natural Language Tooklt) is a free, open source collection of Python modules, linguistic data and documentation for research and development in natural language processing and text analytics, with distributions for Windows, Mac OS X and Linux. It offers a platform for building Python programs to work with human language data, and integrates a guide to programming fundamentals.</p>','http://www.nltk.org/',1,'NLTK Project','','http://nltk.org/','images/tools/0/92.png',5,0,'2018-09-19','http://www.nltk.org/install.html',NULL,'',NULL,0,'2012-06-27 18:04:32','2018-09-19 03:32:42',''),(93,NULL,'WordHoard','<p>WordHoard is a tool for the study of large texts or transcribed speech. It annotates or tags texts by applying morphological, lexical, prosodic, and narratological criteria. Users may apply WordHoard to their own texts, or to the corpora included with the tool. At present, that corpora includes the entire canon of Early Greek epic (original and in translation), Chaucer, Shakespeare and Spencer.</p>','http://wordhoard.northwestern.edu/userman/index.html',1,'WordHoard Team','martinmueller@northwestern.edu','http://wordhoard.northwestern.edu/userman/index.html','images/tools/0/93.png',0,0,'2018-10-05','http://wordhoard.northwestern.edu/userman/getting-started.html',NULL,'',NULL,0,'2012-06-27 18:42:29','2018-10-05 19:10:40',''),(94,1,'PhiloGL','<p>PhiloGL is an open source WebGL Framework for advanced data visualization, creative coding and game development. It includes a module system encompassing Program and Shader management, IO, XHR, JSONP, Web Worker management, Effects and Tweening, among others.</p>','http://www.senchalabs.org/philogl/',1,'Nicholas Garcia Belmonte','philogb@gmail.com','http://cv.thejit.org/','images/tools/0/94.png',0,0,'2018-11-07','http://www.senchalabs.org/philogl/doc/index.html',NULL,'https://github.com/senchalabs/philogl',NULL,0,'2012-06-27 19:05:57','2018-11-07 00:59:42',''),(95,NULL,'RiTa','<p>RiTa is a free, open-source natural language library for work with generative literature, offered as both a \'core\' package of jar files and documentation, and a text-to-speech package. It is designed to be simple and intuitive while still offering flexibility to advanced users via statistical models for tagging, chunking and parsing. RiTa may also be integrated with Processing.</p>','http://www.rednoise.org/rita/',1,'Daniel C. Howe','dhowe@mrl.nyu.edu','http://mrl.nyu.edu/~dhowe/','images/tools/0/95.png',0,0,'2014-11-20','http://www.rednoise.org/rita/reference/index.html',NULL,'',NULL,0,'2012-06-27 19:30:58','2017-10-31 14:24:47',''),(96,1,'RoSE','<p>RoSE is a web-based system blending social computing with humanities bibliographical resources, enabling these resources to be explored as a social network. It incorporates data mined from YAGO and Project Gutenberg, offers profile pages for both persons and documents, keywords, and visualizations of the relationships between people and documents. Users are encouraged to contribute metadata supplementing the standard bibliographical data.</p>','http://rose.english.ucsb.edu/',1,'Alan Liu','ayliu@english.ucsb.edu','http://liu.english.ucsb.edu/','images/tools/0/96.png',0,0,'2018-10-19','http://rosedocumentation.wordpress.com/',NULL,'',NULL,0,'2012-06-27 19:55:02','2018-10-19 02:35:29',''),(97,1,'Scripto','<p>Scripto is a lightweight, open source tool for crowdsourcing transcriptions for Humanities projects. Projects utilizing Scripto can manage contributions via full editorial controls and a versioning history.</p>','http://scripto.org/',1,'Sharon M. Leon','sleon@gmu.edu','http://historyarthistory.gmu.edu/people/sleon','images/tools/0/97.png',0,0,'2018-10-12','http://scripto.org/documentation/',NULL,'',NULL,0,'2012-06-27 20:17:26','2018-10-12 02:55:24',''),(98,1,'Citeline','<p>Citeline was a tool for publishing bibliographies and citation collections on the web. It takes a BibTex file exported from Endnotes, Refworks and similar tools and turns the collection into an interactive, shareable exhibit. Citeline citation collections may also be exported in a variety of formats, such as BibTex, JSON, XML or tab-separated values.</p> <p>The Citeline project has been retired, and the website is no longer available. Information about Citeline is currently only available via the Internet Archive.</p>','',1,'MIT Libraries','citeline-lib@mit.edu','http://libraries.mit.edu/','images/tools/0/98.png',0,0,'2018-10-26','https://web.archive.org/web/20130511221729/http://simile.mit.edu/wiki/Citeline_User%27s_Guide',NULL,'',NULL,0,'2012-07-05 20:48:09','2018-10-26 00:14:58',''),(99,NULL,'SIMILE Widgets: Exhibit 3.0','<p>Exhibit 3.0, a part of the SIMILE Widgets family of tools, is an open source software tool for web-based data publishing. This JavaScript-based browser widget facilitates searching, browsing, navigating and visualization data, and enables users to publish their data collections as websites without requiring programming, a database or access to a server.</p>','http://www.simile-widgets.org/exhibit3/',1,'MIT Libraries, MIT CSAIL and Zepheira','','http://www.simile-widgets.org/','images/tools/0/99.png',0,0,'2018-09-27','https://github.com/zepheira/exhibit3/wiki',NULL,'',NULL,0,'2012-07-05 21:14:41','2018-09-27 21:45:16',''),(100,NULL,'SIMILE Widgets: Gadget','<p>Gadget, a part of the SIMILE Widgets family of tools, is an open source command line XML inspector for generating useful summaries from large amounts of well-formed XML data. It is particularly valuable when exploring, migrating or cleaning XML, in addition to evaluating schema emergence. This tool require a <span class=\"external text\">Java 1.4</span> or later compatible virtual machine and <span class=\"external text\">Maven 2.0</span> or above to run.</p> <p>Gadget is no longer maintained, but information about it is still available via the Internet Archive.</p>','',1,'Stefano Mazzocchi','stefanom@mit.edu','http://www.betaversion.org/~stefano/','images/tools/0/100.png',0,0,'2018-11-06','https://web.archive.org/web/20130523055042/http://simile.mit.edu/wiki/Gadget_user_guide',NULL,'',NULL,0,'2012-07-05 21:47:12','2018-11-06 06:56:58',''),(101,NULL,'SIMILE Widgets: JsTeX','<p>JsTeX, a part of the SIMILE Widgets family of tools, is an open source JavaScript library capable of interpreting basic TeX encodings and transforming them into HTML definitions directly in a web page.</p> <p>This tool has been retired by SIMILE Widgets, and the website is no longer maintained. Captures of the site are currently available via the Internet Archive.</p>','https://web.archive.org/web/*/http://simile.mit.edu/wiki/JsTeX',1,'Stefano Mazzocchi','stefanom@mit.edu','http://www.betaversion.org/~stefano/','images/tools/0/101.png',0,0,'2018-10-26','https://web.archive.org/web/*/http://simile.mit.edu/wiki/JsTeX',NULL,'',NULL,0,'2012-07-05 22:00:34','2018-10-26 00:59:09',''),(102,NULL,'SIMILE Widgets: Timeline','<p>Timeline, a part of the SIMILE Widgets family of tools, is a free, open source tool for creating interactive timelines from temporal data utilizing JavaScript and web markup in HTML and XML.</p>','http://www.simile-widgets.org/timeline/',1,'SIMILE Project','','http://simile.mit.edu/','images/tools/0/102.png',0,0,'2018-10-05','http://code.google.com/p/simile-widgets/wiki/Timeline',NULL,'',NULL,0,'2012-07-05 22:11:44','2018-10-05 03:06:19',''),(103,NULL,'SIMILE Widgets: Timeplot','<p>TimePlot, a part of the SIMILE Widgets family of tools, is a free, open source DHTML-based AJAXy widget for plotting time series and overlaying time-based events over them. The overlays use the same data formats supported by the related SIMILE Widgets Timeline tool. Timeplots are generated with a combination of JavaScript and HTML.</p>','http://www.simile-widgets.org/timeplot/',1,'SIMILE Project','','http://simile.mit.edu/','images/tools/0/103.png',0,0,'2018-10-05','http://www.simile-widgets.org/timeplot/docs/',NULL,'',NULL,0,'2012-07-05 22:30:55','2018-10-05 03:06:54',''),(104,NULL,'Stanford NLP Group: CoreNLP','<p>Stanford CoreNLP is a free Natural Language Processing tool. It processes English language text and provides the base forms of words, parts of speech, indicates whether they are proper names, normalizes dates, times and numeric quantities, and marks up the structure of sentences. This tool integrates all other Stanford NLP tools for English language processing, including parts-of-speech (POS), the named entitiy recognizer (NER), the parser and the coreference resolution system. An online demo is also available.</p>','http://nlp.stanford.edu/software/corenlp.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/104.png',0,0,'2012-10-02','http://nlp.stanford.edu/software/corenlp.shtml',NULL,'',NULL,0,'2012-07-05 22:49:40','2017-10-31 14:24:50',''),(105,NULL,'Stanford NLP Group: Named Entity Recognizer','<p>Stanford Named Entity Recognizer is a free Java implementation for the recognition of proper names and other nouns and a part of the Stanford Natural Language Processing toolset. It also includes person, location and organizational recognition. This tool can be used with English or German text.</p>','http://nlp.stanford.edu/software/CRF-NER.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/105.png',0,0,'2012-07-06','http://nlp.stanford.edu/software/CRF-NER.shtml',NULL,'',NULL,0,'2012-07-06 22:14:43','2017-10-31 14:24:50',''),(106,NULL,'Stanford NLP Group: Part-of-Speech Tagger','<p>Stanford Part-of-Speech Tagger is a free Java implementation for the recognition of parts of speech, and a part of the Stanford Natural Language Processing toolset. It reads text and assigns parts of speech to each word such as noun, verb or adjective. This tool can be used with English, French, Arabic and German text.</p>','http://nlp.stanford.edu/software/tagger.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/106.png',0,0,'2018-11-06','http://nlp.stanford.edu/software/tagger.shtml',NULL,'',NULL,0,'2012-07-06 22:30:54','2018-11-06 06:54:47',''),(107,NULL,'Stanford NLP Group: Stanford Parser','<p>Stanford Parser is a free Java implementation for the statistical parsing of text, and a part of the Stanford Natural Language Processing toolset. This tool can be used with English, Chinese, German and Arabic. A demo web browser version is also available.&nbsp;</p>','http://nlp.stanford.edu/software/lex-parser.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/107.png',0,0,'2012-10-02','http://nlp.stanford.edu/software/lex-parser.shtml',NULL,'',NULL,0,'2012-07-06 22:42:58','2017-10-31 14:24:51',''),(108,NULL,'Stanford NLP Group: Stanford Phrasal','<p>Stanford Phrasal is a a free Java implementation for phrase-based machine translation. It provides an easy to use API for implementating new decoding model features and supports unique capabilities such as translating using phrases that include gaps and conditional extraction of phrase-tables and lexical reordering models.&nbsp;</p>','http://nlp.stanford.edu/software/phrasal/',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/108.png',0,0,'2012-10-02','http://www-nlp.stanford.edu/wiki/Software/Phrasal',NULL,'',NULL,0,'2012-07-06 22:54:41','2017-10-31 14:24:51',''),(109,NULL,'Stanford NLP Group: Stanford Tokenizer','<p>Stanford Tokenizer is a free Java implementation for diving an English text into tokens such as words, and a part of the Stanford Natural Language Processing toolset. This tool is not available on its own, but is bundled with other tools in the same set, including Stanford Parser, Stanford Part-of-Speech Tagger, Stanford Named Entity Recognizer, and Stanford CoreNLP.</p>','http://nlp.stanford.edu/software/tokenizer.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/109.png',0,0,'2012-10-02','http://nlp.stanford.edu/software/tokenizer.shtml',NULL,'',NULL,0,'2012-07-06 23:26:40','2017-10-31 14:24:51',''),(110,NULL,'Stanford NLP Group: Stanford Topic Modelling Toolbox','<p>Stanford Topic Modelling Toolbox is a free collection of topic modelling tools, and a part of the Stanford Natural Language Processing toolset. It is designed for social scientists and other users who need to analyze datasets with a substantial textual component. This tool can accept and generate tab-separated and comma-separated values, and is designed to work in combination with spreadsheet programs like Excel.</p>','https://nlp.stanford.edu/software/tmt/tmt-0.4/',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/110.png',0,0,'2018-09-18','http://nlp.stanford.edu/software/tmt/tmt-0.3/',NULL,'',NULL,0,'2012-07-06 23:46:28','2018-09-18 17:20:22',''),(111,NULL,'Stanford NLP Group: Stanford Tregex and Tsurgeon','<p>Stanford Tregex and Tsurgeon is a bundled pair of tools from the Stanford Natural Language Processing toolset. Tregex is a utility for using tree relationships and regular expressions to match patterns in trees, while Tsurgeon is a tree transformation language.</p>','http://nlp.stanford.edu/software/tregex.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/111.png',0,0,'2018-11-06','http://nlp.stanford.edu/software/tregex.shtml',NULL,'',NULL,0,'2012-07-06 23:58:16','2018-11-06 06:54:16',''),(112,NULL,'d3.js - Data Driven Documents','<p>D3.js is a free, open source JavaScript library for manipulating documents with data utilizing HTML5, SVG and CSS3. It is designed to create visualizations that work with current web standards to make the best possible use of the most recent browsers without requiring a proprietary framework. This tool allows users to bind data to an Document Object Model (DOM) and apply data-driven transformations to the document.</p>','http://d3js.org/',1,'Michael Bostock','mbostock@gmail.com','http://bost.ocks.org/mike/','images/tools/0/112.png',0,0,'2018-10-26','https://github.com/mbostock/d3/wiki',NULL,'',NULL,0,'2012-07-12 20:19:30','2018-10-26 01:00:12',''),(113,NULL,'Stanford Vis Group: Data Wrangler','<p>Data Wrangler is free web-based tool for interactive data cleaning and transformation. It takes raw data and transforms it into data tables for further analysis and cleaning. The results can be exported in a variety of data table formats, including Excel, R, Tableau and Protovis.</p>','http://vis.stanford.edu/wrangler/',1,'Stanford Visualization Group','','http://vis.stanford.edu/','images/tools/0/113.png',0,0,'2013-05-15','http://vis.stanford.edu/wrangler/',NULL,'',NULL,0,'2012-07-12 21:23:49','2017-10-31 14:24:52',''),(114,NULL,'Stanford Vis Group: Protovis','<p>Protovis is a free, open source tool for composing custom views of data from simple elements such as bars or dots. Marks are defined through dynamic properties to allow inheritance, scales and layouts for simplified visualization construction. This tool uses JavaScript and SVG in order to ensure web-native visualizations. Protovis is no longer under active construction; many of the concepts used in its development have been implemented in its successor, D3.js.</p>','http://mbostock.github.io/protovis/',1,'Stanford Visualization Group','','http://vis.stanford.edu/','images/tools/0/114.png',0,0,'2014-11-20','http://mbostock.github.io/protovis/docs/',NULL,'',NULL,0,'2012-07-12 21:33:36','2017-10-31 14:24:53',''),(115,1,'TagCrowd','<p>TagCrowd is a tool for generating a frequency-based word cloud from a source text, with a free browser version available through the TagCrowd website. A commercial version may also be purchased, subject to a creative commons license.</p>','http://tagcrowd.com/',1,'Daniel Steinbock','daniel@steinbock.org','http://steinbock.org/','images/tools/0/115.png',0,0,'2018-09-25','http://tagcrowd.com/faq.html',NULL,'',NULL,0,'2012-07-12 21:59:23','2018-09-25 16:39:12',''),(116,NULL,'TextArc','<p>TextArc is a free visualization tool that represents an entire text on a single page. It has elements of an index, concordance and summary all in one place, encouraging the viewer to use its juxtapositions to uncover meaning. The web-based applet is preloaded with thousands of text collected from Project Gutenberg. <em>Note:</em> TextArc was designed for browsers circa 2002 and requires Java SE 6 to run.</p>','',1,'W. Bradford Paley','brad@didi.com','http://www.textarc.org/','images/tools/0/116.png',5,0,'2018-10-05','http://www.textarc.org/Applications.html',NULL,'',NULL,0,'2012-07-12 22:25:10','2018-10-05 03:11:04',''),(117,NULL,'University of Maryland HCI Group: FeatureLens','<p>FeatureLens is a free tool for visualizing and exploring patterns in text collections. This tool integrates the results of text-mining algorithms, and can assist in finding frequent words or ngrams, enabling the discovery of fuzzy repetition patterns. In addition, the tool will recommend features based on particular pattern types identified in the text.</p>','http://www.cs.umd.edu/hcil/textvis/featurelens/',1,'Anthony Don, Catherine Plaisant and Ben Shneiderman','','http://www.cs.umd.edu/hcil/textvis/featurelens/','images/tools/0/117.png',0,0,'2018-10-18','http://www.cs.umd.edu/hcil/textvis/featurelens/',NULL,'',NULL,0,'2012-07-12 23:17:38','2018-10-18 04:45:28',''),(118,1,'Versioning Machine','<p>The Versioning Machine, now in version 4.0, is a framework and an interface for displaying multiple versions of text, and encodes the text according to TEI guidelines. It incorporates features found in both critical editions and electronic publication, in addition to providing an environment for textual editors to comparatively view the results of their edits. This tool may be downloaded for use on a local machine, or hosted on one\'s server for web usage.</p>','http://v-machine.org/',1,'Susan Schreibman','schreibs@tcd.ie','http://www.tcd.ie/English/staff/academic-staff/susan-schriebman.php','images/tools/0/118.png',0,0,'2018-10-17','http://v-machine.org/documentation.php',NULL,'',NULL,0,'2012-07-12 23:36:36','2018-10-17 05:20:17',''),(119,1,'WordSmith','<p class=\"p_Body\">WordSmith Tools is a commercial integrated suite of programs designed to analyze word behaviour in a text. It can be used to generate a list of all words or word clusters, concord, find keywords and more. This tool is recommended for publishers, language teachers and students, and language researchers.&nbsp;</p>','http://www.lexically.net/wordsmith/index.html',1,'Mike Scott','','http://www.lexically.net/','images/tools/0/119.png',0,0,'2013-05-15','http://www.lexically.net/downloads/version6/HTML/index.html',NULL,'',NULL,0,'2012-07-12 23:51:03','2018-05-14 20:41:54',''),(120,NULL,'Apache Open NLP','<p>Apache OpenNLP is a free, open source toolkit for processing natural language text, based on machine learning. It includes common natural language processing functions such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, and coreference resolution.</p>','http://opennlp.apache.org/index.html',1,'The Apache Software Foundation','','http://www.apache.org/','images/tools/0/120.png',0,0,'2012-07-13','http://opennlp.apache.org/documentation.html',NULL,'',NULL,0,'2012-07-13 00:10:39','2017-10-31 14:24:54',''),(121,NULL,'Apache UIMA','<p>Apache UIMA (Unstructured Information Management application) is a software system for analyzing large amounts of unstructured data, such as a plain text document, and identifying entities, such as persons, places, organizations, or relations between entities. Discrete components (written in Java or C++) may be used within the application, such as language identification or entitiy detection. Each component provides self-describing metadata via XML descriptor files.</p>','http://uima.apache.org/',1,'The Apache Software Foundation','','http://www.apache.org/','images/tools/0/121.png',0,0,'2018-10-30','http://uima.apache.org/documentation.html',NULL,'',NULL,0,'2012-07-13 17:52:00','2018-10-30 16:09:13',''),(122,1,'Cytoscape','<p>Cytoscape is an open source software platform for visualizing data networks and pathways. Though designed for bioinformatic systems, it has been generalized to complex network analysis and has applications extending to the semantic web. Its core distribution has basic features for data integration and visualization, with additional features available via Java-based plugins.</p>','http://cytoscape.org/',1,'Cytoscape Consortium','','http://www.cytoscape.org/','images/tools/0/122.png',0,0,'2018-10-05','http://cytoscape.org/documentation_users.html',NULL,'',NULL,0,'2012-07-13 18:21:01','2018-10-05 03:15:21',''),(123,NULL,'DocuBurst','<p>DocuBurst is a free web-based visualization tool for exploring the contents of a text.  Visitors can upload their own text or view those provided by others. DocuBurst presents an interactive chart called a ‘radial sunburst’ diagram which organizes the nouns extracted from the user-supplied text based on their meaning, and colours them based on frequency, revealing common themes in the text.  The visualization also shows the proper nouns (e.g. character names) in a linked word cloud. The visualization may be zoomed, filtered, or refocused to target types of words of interest (e.g. “animal” words or “feeling” words).  The visualization also provides a comparison tool to contrast word use across two documents.  DocuBurst views can be bookmarked, annotated, shared, and embedded in your own website.</p>','http://vialab.science.uoit.ca/portfolio/docuburst',1,'Christopher Collins, Sheelagh Carpendale, Gerald Penn, Brittany Kondo and Bradley Chicoine','christopher.collins@uoit.ca','http://faculty.uoit.ca/collins/','images/tools/0/123.png',0,0,'2018-09-27','http://vialab.science.uoit.ca/docuburst/help.php',NULL,'',NULL,0,'2012-07-13 18:36:05','2018-09-27 04:09:47',''),(124,NULL,'EURAC: Comparison Arcs','<p>Comparison Arcs is a free proof of concept tool demonstrating a method for comparing the linguistic properties of multiple documents in graphical displays. Both texts may be searched in parallel for words, lemmas and parts of speech. This project is seeking partners for further development.</p>','',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/124.png',0,0,'2018-09-25','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/ComparisonArcs.html',NULL,'',NULL,0,'2012-07-13 19:14:52','2018-09-25 16:32:48',''),(125,NULL,'EURAC: Corpus Clouds','<p>Corpus Clouds is a free Java demo of a novel interface to a corpus query engine. It aims to aid the user in exploratory search by providing visual information about frequency and distribution of search results in combination with the standard KWIC elements.</p>','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/CorpusClouds.html',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/125.png',0,0,'2012-10-02','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/CorpusClouds.html',NULL,'',NULL,0,'2012-07-20 21:27:59','2017-10-31 14:24:56',''),(126,NULL,'EURAC: Double Tree','<p>Double Tree is a free, open source Java application providing a visualization component for supporting exploratory corpus analysis. It focuses particularly on analyzing concordances, and can also represent a KWIC for a single word by collapsing the contexts into a double sided tree.&nbsp;Each side of the tree can be expanded independently to browse the results.</p>','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/DoubleTree.html',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/126.png',0,0,'2012-10-02','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/DoubleTree.html',NULL,'',NULL,0,'2012-07-20 21:42:15','2017-10-31 14:24:56',''),(127,NULL,'EURAC: End to End','<p>End to End is a visualization application for exploratory corpus analysis focused on collocations. This tool starts with two words and constructs a visual network of all collocations of those words within the corpus, while its interface enables interactive zooming and browsing of the resultant graph. <em>Note:</em> this tool is unavailable until licensing issues are resolved.</p>','',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/127.png',0,0,'2018-09-18','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/EndtoEnd.html',NULL,'',NULL,0,'2012-07-20 21:52:09','2018-09-18 02:44:46',''),(128,1,'JavaScript InfoVis Toolkit','<p>The JavaScript InfoVis Toolkit is a free set of tools for creating interactive data visualizations compatible with web standards. Visualization options include bar graphs, radial graphs, tree graphs and more, many integrating animations.</p>','http://philogb.github.io/jit/',1,'Nicolas Garcia Belmonte','philogb@gmail.com','http://philogb.github.com/','images/tools/0/128.png',0,0,'2016-02-15','http://philogb.github.io/jit/docs.html',NULL,'',NULL,0,'2012-07-20 22:40:34','2018-05-14 20:46:26',''),(129,NULL,'Letter-Pairs Analysis','<p>Letter-Pairs Analysis is a free, web-based tool for calculating and visualizing the number of times a pair of letters appears in a given text. Each pair is represented as a \'bubble\', sized according to how frequently that pair appears in the text. An HTML5 version is also now available. <em>Note</em>: this tool forms the basis of Voyant Bubbles.</p>','',1,'Martin Ignacio Bereciartua','','http://www.m-i-b.com.ar/','images/tools/0/129.png',0,0,'2018-10-05','http://www.m-i-b.com.ar/mib/letter_pairs/eng/',NULL,'',NULL,0,'2012-07-20 22:57:31','2018-10-05 03:23:12',''),(130,1,'Processing','<p>Processing is a free, open source programming language and development library for the visual arts. It is a software sketchbook, a way to visually learn programming fundamentals, and a tool for creating finished professional work, including mapping networks, textual analysis and producing visualizations. It runs under Windows, OSX and Linux environments, and can export graphics and applets in a variety of formats.</p>','http://www.processing.org/',1,'Ben Fry and Casey Reas','','http://www.processing.org/','images/tools/0/130.png',0,0,'2018-10-26','http://processing.org/reference/',NULL,'',NULL,0,'2012-07-21 16:00:23','2018-10-26 00:47:55',''),(131,NULL,'RapidMiner','<p>RapidMiner is an open source data mining tool with a GUI interface, available in both a free, unsupported \'community version\' and a for-pay, fully supported \'enterprise edition\'. It utilizes a standardized XML interchange format for processing, and is compatible with common relational databases and spreadsheet applications.</p>','https://rapidminer.com/products/studio/',1,'Rapid-I','','http://rapid-i.com/','images/tools/0/131.png',0,0,'2018-10-05','http://rapidminer.com/documentation/',NULL,'',NULL,0,'2012-07-21 16:16:50','2018-10-05 02:38:19',''),(132,NULL,'SEASR: OpenNLP Entities To Protovis Network Graph','<p>SEASR\'s OpenNLP Entities to Protovis Network Graph is a free tool for extracting entities within a specified sentence distance within a text. The OpenNLP system is used for entity extraction, and their relationships are represented in a link node network graph generated in Protovis.&nbsp;</p> <p>While SEASR is still active, their page for OpenNLP Entities to Protivis Network Graph is no longer available. It can still be viewed via the Internet Archive.</p>','https://web.archive.org/web/20121028053622/http://seasr.org/documentation/example-flows/stanford-entities-to-protovis-network-graph/',1,'SEASR','','http://seasr.org/','images/tools/0/132.png',0,0,'2014-12-29','https://web.archive.org/web/20121028053622/http://seasr.org/documentation/example-flows/stanford-entities-to-protovis-network-graph/',NULL,'',NULL,0,'2012-07-21 16:40:04','2017-10-31 14:24:57',''),(133,NULL,'SEASR: Date Entities to Simile Timeline','<p>SEASR\'s Date Entities to Similie Timeline is a free tool for extracting data entities that may be displayed on a timeline. It uses OpenNLP to extract sentences containing dates, and SIMILE Timeline to display them.</p>','http://www.seasr.org/documentation/example-flows/date-entities-to-simile-timeline/',1,'SEASR','','http://seasr.org/','images/tools/0/133.png',0,0,'2014-11-20','http://www.seasr.org/documentation/example-flows/date-entities-to-simile-timeline/',NULL,'',NULL,0,'2012-07-21 16:52:03','2017-10-31 14:24:57',''),(134,NULL,'SEASR: Flesch-Kincaid Readability Test','<p>SEASR\'s Flesch-Kinkaid Readability Test is a free tool that analyses text from a URL, calculates the Flesch-Kincaid readibility measure of the text, and displays the results.</p>','http://www.seasr.org/documentation/example-flows/flesch-kincaid-readability-test/',1,'SEASR','','http://seasr.org/','images/tools/0/134.png',0,0,'2014-11-20','http://www.seasr.org/documentation/example-flows/flesch-kincaid-readability-test/',NULL,'',NULL,0,'2012-07-21 16:56:23','2017-10-31 14:24:58',''),(135,NULL,'SEASR: Google Search To Entities To Protovis Network Graph','<p>SEASR\'s Google Search To Entities To Protovis Network Graph is a free tool for submitting a search to Google and returning a specified number of documents for further processing. It then analyses the documents for connections within a specified number of sentences, and generates a link node network graph using Protovis from the results.</p> <p>SEASR\'s page for Google Search To Entities To Protovis Network Graph is no longer available. Information about the tool can still be viewed via the Internet Archive.</p>','',1,'SEASR','','http://seasr.org/','images/tools/0/135.png',0,0,'2018-11-06','https://web.archive.org/web/20130218150550/http://seasr.org/documentation/example-flows/google-search-to-entities-to-protovis-network-graph/',NULL,'',NULL,0,'2012-07-21 17:03:50','2018-11-06 06:58:54',''),(136,NULL,'SEASR: Location Entities To Google Map','<p>SEASR\'s Location Entities To Google Map is a tool for extracting locations from a text that can be displayed on a map. It uses OpenNLP to extract the entities, and then displays both the sentences and the locations in Google Maps.</p> <p>The page for this tool on SEASR\'s website is no longer active. However, it can still be viewed via the Internet Archive.</p>','',1,'SEASR','','http://seasr.org/','images/tools/0/136.png',0,0,'2018-09-28','https://web.archive.org/web/20130218194745/http://seasr.org/documentation/example-flows/location-entities-to-google-map/',NULL,'',NULL,0,'2012-07-21 17:20:35','2018-09-28 03:56:01',''),(137,NULL,'SEASR: NGram Tag Cloud Viewer','<p>SEASR\'s NGram Tag Cloud Viewer is a free tool for generating a tag cloud from a text hosted at a URL. It can also process PDF documents.</p> <p>Although the page on SEASR\'s website is no longer active, it can still be viewed via the Internet Archive.</p>','',1,'SEASR','','http://seasr.org/','images/tools/0/137.png',0,0,'2018-10-05','https://web.archive.org/web/20130218144833/http://seasr.org/documentation/example-flows/ngram-tag-cloud-viewer/',NULL,'',NULL,0,'2012-07-21 17:45:28','2018-10-05 03:28:15',''),(138,NULL,'SEASR: Tag Cloud Viewer With Stemming','<p>SEASR\'s Tag Cloud Viewer With Stemming is a free tool for creating a tag cloud from a text hosted at a URL, and can process PDF documents. While this tool is similar to SEASR\'s NGram Tag Cloud Viewer, it applies a stemmer to the text during processing.</p> <p>Though the page for this tool is no longer available on the SEASR website, it can still be viewed via the Internet Archive.</p>','',1,'SEASR','','http://seasr.org/','images/tools/0/138.png',0,0,'2018-10-05','https://web.archive.org/web/20121120114947/http://seasr.org/documentation/example-flows/tag-cloud-viewer',NULL,'',NULL,0,'2012-07-21 17:55:05','2018-10-05 03:29:11',''),(139,NULL,'Stanford HCI Group: PaperToolkit','<p>PaperToolkit is a free, open source toolkit for designing pen and paper applications. Applications generated with this tool are intended for printing on a paper surface that allows some digital interaction, such as the related ButterflyNet or Interactive Gigapixels Prints. Suggested applications include interactive newspapers and smart notebooks. This toolkit is currently under development; code, documentation, tutorials and demo applications are all available.</p>','http://hci.stanford.edu/research/paper/',1,'Ron B. Yeh and Scott Klemmer','ronyeh@cs.stanford.edu','http://www.ronyeh.com/','images/tools/0/139.png',0,0,'2018-11-06','http://hci.stanford.edu/research/paper/documentation/',NULL,'',NULL,0,'2012-07-21 18:10:08','2018-11-06 06:56:14',''),(140,NULL,'Stanford Mobisocial Lab: Muse','<p>Muse is a free, open source JavaScript tool for reflecting on and searching for patterns in the past by examining one\'s personal e-mail archive. It analyses e-mail to generate several views including a sentiment graph from messages that may reflect particular emotions or feelings, inferred groups based on communications with various contacts, a calendar view, or an an attachment wall of all documents attached to e-mails.</p>','http://mobisocial.stanford.edu/muse/',1,'Stanford Mobisocial Lab','','http://mobisocial.stanford.edu/','images/tools/0/140.png',0,0,'2018-10-17','http://mobisocial.stanford.edu/muse/tipsheet.html',NULL,'',NULL,0,'2012-07-26 21:39:49','2018-10-17 04:49:25',''),(141,NULL,'Stanford HCI Group: Gigapixel','<p>Gigapixel is a free tool to facilitate experiments in collaborate workspaces, enabling printed visualizations to be augmented with projectors and mobile devices. This tool has been succeeded by PaperToolKit, and continues to be available as a reference resource.</p>','http://hci.stanford.edu/research/gigaprints/',1,'Ron B. Yeh, Joel Brandt and Scott Klemmer','ronyeh@cs.stanford.edu','http://www.ronyeh.com/','images/tools/0/141.png',0,0,'2018-11-09','http://hci.stanford.edu/research/gigaprints/',NULL,'',NULL,0,'2012-07-26 21:57:09','2018-11-09 05:35:37',''),(142,NULL,'Stanford NLP Group: Stanford Word Segmenter','<p>Stanford Word Segmenter is a free, open source Java-based tokenization tool for Chinese and Arabic text that integrates token pre-processing, or segmentation. For Arabic, the tool processes text according to the Penn Arabic Treebank 3 standard. For Chinese, users can choose between the Chinese Penn Treebank or Peking University standards.</p>','http://nlp.stanford.edu/software/segmenter.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/142.png',0,0,'2012-10-02','http://nlp.stanford.edu/software/segmenter.shtml',NULL,'',NULL,0,'2012-07-26 22:11:03','2017-10-31 14:25:00',''),(143,NULL,'Stanford NLP Group: Classifier','<p>Stanford Classifier is a free, open source Java-based machine learning tool that takes data and applies probibalistic classification. It can also give probability distribution information related to class assignments.</p>','http://nlp.stanford.edu/software/classifier.shtml',1,'Stanford Natural Language Processing Group','','http://nlp.stanford.edu/','images/tools/0/143.png',0,0,'2012-10-02','http://nlp.stanford.edu/software/classifier.shtml',NULL,'',NULL,0,'2012-07-26 22:22:29','2017-10-31 14:25:00',''),(144,NULL,'CommentSpace','<p>CommentSpace is a free, collaborative tool for analysis of comments and visualizations on a website. It uses tags and links to organize the findings and identify contributions from particular users. This tool can assist analysts in identifying evidence and establishing common ground, and can help teams in evidence-gathering and synthesis tasks.</p>','http://vis.berkeley.edu/papers/commentspace/',1,'Wesley Willett, Jeffrey Heer, Joseph Hellerstein, Maneesh Agrawala','willettw@cs.berkeley.edu','http://www.wjwillett.net','images/tools/0/144.png',0,0,'2018-10-17','http://vis.berkeley.edu/papers/commentspace/',NULL,'',NULL,0,'2012-07-26 22:42:23','2018-10-17 04:50:41',''),(145,NULL,'GeoTime','<p>GeoTime is a tool for visualizing complex event-related data available for purchase. It can simultaneously visualize geospatial, temporal and link data to display activities and events. Data can be imported from ArcGIS or Microsoft Excel.</p>','http://www.geotime.com/',1,'Oculus Info Inc.','info@oculusinfo.com','http://www.oculusinfo.com/','images/tools/0/145.png',0,0,'2018-10-05','http://www.geotime.com/Support/Installation---Licensing.aspx',NULL,'',NULL,0,'2012-07-26 23:01:18','2018-10-05 03:31:39',''),(146,1,'Graphviz','<p>Graphviz is a free, open source graph visualization tool in constant development since 1988. It represents structural information as diagrams of abstract graphs and networks.</p>','http://www.graphviz.org/',1,'AT&T Research','','http://www.research.att.com/','images/tools/0/146.png',0,0,'2018-10-05','http://www.graphviz.org/Documentation.php',NULL,'',NULL,0,'2012-07-26 23:15:54','2018-10-05 03:32:12',''),(147,NULL,'Laurence Anthony: AntCLAWS-GUI','<p>AntCLAWS-GUI is a free graphical user interface intended for use with the Lancaster University CLAWS parts of speech tagger. This GUI requires installation of CLAWS to operate.</p>','http://www.laurenceanthony.net/antclawsgui_index.html',1,'Laurence Anthony','anthony@waseda.jp','http://www.antlab.sci.waseda.ac.jp/','images/tools/0/147.png',0,0,'2014-11-26','http://www.laurenceanthony.net/software/antclawsgui110/AntCLAWSGUI_readme.txt',NULL,'',NULL,0,'2012-07-30 17:54:40','2017-10-31 14:25:01',''),(148,NULL,'AntConc','AntConc is free concordance software. It is multi-platform and easy to deploy and use.\n\nAntConc is part of a suite of related tools for text processing and analysis, including applications for parallel corpus analysis, word profiling, PDF to text conversion, text structure analysis, detecting and converting character encodings, Japanese and Chinese segmenter and tokenizer, wordclass tagger, and spelling variant anaysis. The developer is currently drafting a more explicit licence for the use of the software.','http://www.laurenceanthony.net/software/antconc/',1,'Laurence Anthony','anthony@waseda.jp','http://www.antlab.sci.waseda.ac.jp/index.html','images/tools/0/148.png',0,0,'2019-08-19','http://www.laurenceanthony.net/software/antconc335/AntConc_readme.pdf',NULL,'',NULL,0,'2012-07-30 18:25:44','2019-08-19 00:37:45',''),(149,NULL,'Laurence Anthony: AntWordProfiler','<p>AntWordProfiler is a free tool for word profiling. For each word in a document, it will generate the base form and a list of possible related words, provide statistics and frequency data and list word types. It can also process files separately or as a batch.</p>','http://www.laurenceanthony.net/antwordprofiler_index.html',1,'Laurence Anthony','anthony@waseda.jp','http://www.antlab.sci.waseda.ac.jp/','images/tools/0/149.png',0,0,'2018-11-07','http://www.laurenceanthony.net/software/awp131/readme_file_antwordprofiler131.txt',NULL,'',NULL,0,'2012-07-30 18:44:37','2018-11-07 05:18:47',''),(150,NULL,'CLAWS Part-of-Speech Tagger','<p>CLAWS (Constituent Likelihood Automatic Word-tagging System) is a free parts-of-speech tagging tool from Lancaster University. It has been continuously developed since the 1980s, has consistently achieved 96-97% accuracy, and has been applied to the over 100 million word British National Corpus. This tool is available for download in addition to an on-line \'trial\' version.</p>','http://ucrel.lancs.ac.uk/claws/',1,'UCREL','','http://ucrel.lancs.ac.uk/','images/tools/0/150.png',0,0,'2013-05-16','http://ucrel.lancs.ac.uk/claws/',NULL,'',NULL,0,'2012-07-30 19:10:57','2017-10-31 14:25:02',''),(151,NULL,'CHNM: Timeline Builder (Beta)','<p>Timeline Builder is a free tool for creating and maintaining interactive, Flash-based timelines for viewing on the web. Basic text formatting and links to other resources can be added through basic HTML. This tool requires registration through the web page.</p>','http://chnm.gmu.edu/tools/timelines/',1,'Josh West, Josh Greenberg, Jim Safley, and Tom Scheinfeldt','','http://chnm.gmu.edu/tools/timelines/','images/tools/0/151.png',0,0,'2018-10-05','http://chnm.gmu.edu/tools/timelines/help/faq.html',NULL,'',NULL,0,'2012-07-30 20:40:10','2018-10-05 03:34:33',''),(152,NULL,'IBM: Many Eyes','<p>Many Eyes is a free collection of data visualization tools enabling exploration and discussion of the data. Users who post comments on a visualization may also save their view for others to see in conjunction with their comment. Visualizations can be created from the data sets loaded into the site, or one can upload a new dataset for use. <em>Note</em>: Uploaded datasets are shared with the site.</p>','http://www.manyeyes.com/software/analytics/manyeyes/#/',1,'IBM Visualization and Behavior Group','','http://researcher.watson.ibm.com/researcher/view_project.php?id=3419','images/tools/0/152.png',0,0,'2018-10-05','http://www-01.ibm.com/software/analytics/many-eyes/',NULL,'',NULL,0,'2012-07-30 21:00:19','2018-10-05 03:34:58',''),(153,NULL,'INKE: Dynamic Table of Contexts','<p>Dynamic Table of Contexts is a free tool for supplementing a traditional table of contents for a text. It allows users to add or subtract index items based on XML encoding. This tool requires the creation of an account.</p>','',1,'INKE','','http://inke.ca/','images/tools/0/153.png',0,0,'2018-10-05','http://ualbertaprojects.info/dyntoc/dyntoc_v3_2/Main.html',NULL,'',NULL,0,'2012-07-30 21:32:41','2018-10-05 04:50:36',''),(154,NULL,'Mandala Browser','<p>Mandala Browser is a rich-prospect browsing interface for exploring a data set in .txt, .rft, .pdf, .csv or .xml format. Searches can be constrained by columns or fields. A version of this tool is also available in the Voyant toolset.</p>','',1,'Teresa Dobson, Stan Ruecker, Sandra Gabriele, Stéfan Sinclair','','http://mandala.humviz.org/team/','images/tools/0/154.png',0,0,'2018-10-05','http://mandala.humviz.org/help/',NULL,'',NULL,0,'2012-07-30 21:51:46','2018-10-05 03:37:36',''),(155,NULL,'Voyant Skin Builder','<p>Voyant Skin Builder is a function within the larger Voyant toolset that enables users to create a customized selection and arrangement of tools with which to analyze a text. These custom skins can be saved or exported for future use.</p>','http://voyant-tools.org/?corpus=1348598737930.5511&skin=builder',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/155.png',1,0,'2012-09-25','http://docs.voyant-tools.org/',NULL,'',NULL,0,'2012-09-25 19:22:44','2017-10-31 14:25:03',''),(156,NULL,'Visualizing Literature: Words in Context','<p>Words in Context, from the Visualizing Literature toolset, allows users to select a text from Visualizing Literature\'s list of grade school curriculum exemplar creative commons texts and perform a keyword search. The results of the search show all instances of the word, with all surrounding text found on the same line for context. All texts are searchable, and can be sorted by writer, title, publication year, grade level, availability for analysis and availablility of a direct link to the text. Please note that, as this toolset is still in beta, the selection of texts is currently limited, though over 300 texts are forthcoming.</p> <p>As of 2014, this toolset is no longer available as the website has been taken down. It may still be viewed via the Internet Archive.</p>','',1,'Public Learning Media Laboratory','','http://www.plml.org/','images/tools/0/156.png',0,0,'2018-11-06','https://web.archive.org/web/20130114014027/http://www.visualccl.org/data-methodology.php',NULL,'',NULL,0,'2012-10-01 21:50:54','2018-11-06 06:41:11',''),(157,NULL,'Visualizing Literature: Sentiment','<p>Sentiment, from the Visualizing Literature toolset, allows users to select a text from Visualizing Literature\'s list of grade school curriculum exemplar creative commons texts and graph it for keywords suggestive of sentiment. All texts are searchable, and can be sorted by writer, title, publication year, grade level, availability for analysis and availablility of a direct link to the text. Please note that, as this toolset is still in beta, the selection of texts is currently limited, though over 300 texts are forthcoming.</p> <p>As of 2014, this toolset is no longer available as the website has been taken down. It may still be viewed via the Internet Archive.</p>','https://web.archive.org/web/*/http://www.visualccl.org/',1,'Public Learning Media Laboratory','','http://www.plml.org/','images/tools/0/157.png',0,0,'2014-11-20','https://web.archive.org/web/20130114014027/http://www.visualccl.org/data-methodology.php',NULL,'',NULL,0,'2012-10-01 22:21:37','2017-10-31 14:25:04',''),(158,NULL,'Visualizing Literature: Virtue and Vice','<p>Virtue and Vice, from the Visualizing Literature toolset, allows users to select a text from Visualizing Literature\'s list of grade school curriculum exemplar creative commons texts and graph out all instances of words suggestive of virtue and vice within the text. All texts are searchable, and can be sorted by writer, title, publication year, grade level, availability for analysis and availablility of a direct link to the text. Please note that, as this toolset is still in beta, the selection of texts is currently limited, though over 300 texts are forthcoming.</p> <p>As of 2014, this toolset is no longer available as the website has been taken down. It may still be viewed via the Internet Archive.</p>','',1,'Public Learning Media Laboratory','','http://www.plml.org/','images/tools/0/158.png',4,0,'2018-09-27','https://web.archive.org/web/20130114014027/http://www.visualccl.org/data-methodology.php',NULL,'',NULL,0,'2012-10-01 22:23:50','2018-09-27 21:58:28',''),(159,NULL,'Visualizing Literature: Adjectives in the Book','<p>Adjectives in the Book, from the Visualizing Literature toolset, allows users to select a text from Visualizing Literature\'s list of grade school curriculum exemplar creative commons texts and visualize the most common adjectives within the text. Users can search the whole text or chapter by chapter, and incude or exclude stopwords in the results. All texts are searchable, and can be sorted by writer, title, publication year, grade level, availability for analysis and availablility of a direct link to the text. Please note that, as this toolset is still in beta, the selection of texts is currently limited, though over 300 texts are forthcoming.</p> <p>As of 2014, this toolset is no longer available as the website has been taken down. It may still be viewed via the Internet Archive.</p>','',1,'Public Learning Media Laboratory','','http://www.plml.org/','images/tools/0/159.png',0,0,'2018-10-05','https://web.archive.org/web/*/http://www.visualccl.org/',NULL,'',NULL,0,'2012-10-01 22:26:49','2018-10-05 03:43:03',''),(160,NULL,'Visualizing Literature: Adjectives and Character (Treemap)','<p>Adjectives and Character (Treemap), from the Visualizing Literature toolset, allows users to select a text from Visualizing Literature\'s list of grade school curriculum exemplar creative commons texts and search for a character name from the text. The results visualize the most common adjectives associated with that character, and may include or exclude stopwords. All texts are searchable, and can be sorted by writer, title, publication year, grade level, availability for analysis and availablility of a direct link to the text. Please note that, as this toolset is still in beta, the selection of texts is currently limited, though over 300 texts are forthcoming.</p> <p>As of 2014, this toolset is no longer available as the website has been taken down. It may still be viewed via the Internet Archive.</p>','',1,'Public Learning Media Laboratory','','http://www.plml.org/','images/tools/0/160.png',0,0,'2018-11-06','https://web.archive.org/web/20130114014027/http://www.visualccl.org/data-methodology.php',NULL,'',NULL,0,'2012-10-01 22:41:01','2018-11-06 06:42:47',''),(161,NULL,'Old Bailey Data Warehousing Interface','<p>This prototype was produced as a proof-of-concept for the <a title=\"Criminal Intent\" href=\"http://www.criminalintent.org\">Criminal Intent</a> project.  It allows the records of the <a title=\"Old Bailey Online\" href=\"http://www.oldbaileyonline.org\">Old Bailey Online</a> project to be searched such that the returned results can be viewed as either a timeline or a concordance of terms.  The tool allows for reasonably complex queries to be placed and a range of different formats for the returned charts to be selected.  The tool is primarily built with Python and SQLite and makes use of the Google Chart API for some output options.</p>','http://analytics.artsrn.ualberta.ca/digging2data/',1,'John Simpson','john.simpson@ualberta.ca','http://ra.tapor.ualberta.ca/~digging2data/','images/tools/0/161.png',3,0,'2018-11-07','http://analytics.artsrn.ualberta.ca/digging2data/',NULL,'',NULL,0,'2012-10-04 18:25:37','2018-11-07 05:11:00',''),(162,NULL,'I Write Like','<p>I Write Like is a free, web-based text analysis tool that compares a user-provided text to the prose of well-known writers using statistics, word choice and writing style analysis. It then reports on which writer the text most resembles. The tool requires at least two paragraphs of text for best results. At this time, the results are limited to the name of a writer, without offering more detailed insight into the analysis; the tool appears to be offered primarily to promote the Memoires journaling software.</p>','http://iwl.me/',1,'Coding Robots','iwl@codingrobots.com','http://www.codingrobots.com/','images/tools/0/162.png',1.5,0,'2018-09-18','http://iwl.me/',NULL,'',NULL,0,'2012-10-10 16:18:48','2018-09-18 17:45:29',''),(163,1,'Bookworm','<p>Bookworm is a free tool from the Harvard Cultural Observatory designed to generate data from searches on the Open Library and Internet Archives\' collections of public domain books. It allows users to search keywords, including in multiple languages simultaneously, and narrow terms by country, gender, subject and header. At present, Bookworm is restricted to searching books published between 1820 and 1920 due to availabliity. The tool produces a graph showing instances of each keyword over time, enabling easy comparison of results.</p>','http://bookworm.culturomics.org/',1,'Harvard Cultural Observatory','','http://www.culturomics.org/','images/tools/0/163.png',0,0,'2018-10-30','http://bookworm.culturomics.org/docs.php',NULL,'',NULL,0,'2012-10-17 17:59:19','2018-10-30 16:18:42',''),(164,1,'brat rapid annotation tool','<p>The brat rapid annotation tool is an online environment for collaborative structured annotation of texts. It can be run in a browser (optimized for Chrome and Safari) or downloaded for local installation. It can be used for a variety of annotation tasks, from identitifying natural language entities to chunking to adding metadata.</p>','http://brat.nlplab.org/',1,'brat contributors','','http://brat.nlplab.org/about.html','images/tools/0/164.png',0,0,'2018-10-06','http://brat.nlplab.org/manual.html',NULL,'',NULL,0,'2012-10-17 18:36:46','2018-10-06 01:20:44',''),(165,NULL,'CATMA (Computer Aided Textual Markup and Analysis)','<p>CATMA (Computer Aided Textual Markup and Analysis) is a free, open source markup and analysis tool from the University of Hamburg\'s Department of Languages, Literature and Media. It incorporates three interactive modules, a tagger enabling textual markup and markup editing, an analyzer incorporating a query language and predefined functions, and a query builder that allows users to construct queries from combinations of pre-defined questions while allowing for manual modification for more specific questions. It also interfaces with the Voyant toolset. As of version 4.1, CATMA is a web application with collaborative work functions, and improvements to its user interface, queries and corpus analysis capacity.</p>','http://www.catma.de/',1,'Department of Languages, Literature and Media, University of Hamburg','','http://www.catma.de/contact','images/tools/0/165.png',0,1,'2014-03-24','http://www.digitalhumanities.it/catma/manual/',NULL,'',NULL,0,'2012-10-17 19:14:50','2018-10-06 01:24:33',''),(166,1,'Edit Flow','<p>Edit Flow is a free, open source WordPress plugin designed for editorial collaboration. It includes a private discussion environment, metadata management and workflow tools.</p>','http://editflow.org/',1,'Daniel Bachhuber, Mo Jangda, and Scott Bressler','','http://danielbachhuber.com/','images/tools/0/166.png',0,0,'2018-11-06','http://editflow.org/blog/',NULL,'https://github.com/automattic/Edit-Flow',NULL,0,'2012-10-17 20:06:19','2018-11-06 03:31:19',''),(167,1,'PhiloLogic','<p>Philologic is a free, open source full-text search, retrieval and analysis tool developed by the ARTFL Project and the Digital Library Development Centre, at the University of Chicago. This tool supports a wide variety of XML and SGML encoded documents, in addition to plain text, Dublin Core and HTML, and includes a MySQL back end. It is designed ot be light, fast and robust, boasts extensive use and testing, and can be used directly \'out of the box\' with numerous configuration options built in.</p>','https://sites.google.com/site/philologic3/',1,'ARTFL Project and Digital Library Development Centre, University of Chicago','','http://artfl-project.uchicago.edu/','images/tools/0/167.png',0,0,'2018-10-19','https://sites.google.com/site/philologic3/manual',NULL,'',NULL,0,'2012-10-17 20:13:49','2018-10-19 02:37:31',''),(168,1,'FromThePage','<p>FromThePage is a free software for manuscript transcription, allowing volunteers to transcribe document pages online. Transcriptions can then be marked up and annotated in a wiki-like enviroment, with the resultant text displayed on the public web. It includes a discussion environment, enabling collaboration on particularly difficult pages. FromThePage is currently in beta, permitting up to 100 pages per project, and is in the process of developing a paid version for larger projects requiring more server space, with price determined primarily by server and maintenance costs. Privacy features are also under development, and further features forthcoming based on feedback from users.</p>','http://beta.fromthepage.com/',1,'Ben Brumfield','benwbrum@gmail.com','http://beta.fromthepage.com/','images/tools/0/168.png',0,0,'2018-10-12','http://beta.fromthepage.com/static/faq',NULL,'',NULL,0,'2012-10-17 20:28:23','2018-10-12 02:44:55',''),(169,1,'GapVis','<p>GapVis is a free tool developed in conjunction with Google Ancient Places to visualize the locations within and allow the exploration of books referencing ancient places within the Google Books collection. Users can view text summaries, use an enhanced reading interface and explore the location references through a place detail view. It is intended both to enable location-based text discovery, and to allow users to delve more deeply into a text based on the locations referenced within it. GapVis is currently in beta.</p>','http://nrabinowitz.github.io/gapvis/#index',1,'Nick Rabinowitz, Google Ancient Places','','http://googleancientplaces.wordpress.com/','images/tools/0/169.png',0,0,'2014-11-20','http://nrabinowitz.github.io/gapvis/about.html',NULL,'',NULL,0,'2012-10-17 20:53:14','2018-05-14 20:30:58',''),(170,1,'Pundit','<p>Pundit is a free, creative commons tool developed by the SemLib Project for creating structured annotations of web pages. These annotations can be collected in virtual notebooks and shared to create collaborative structured data. Annotations may be comments, links, citations and cross-references. Fine granular image annotation and text-to-text annotation are forthcoming.</p>','http://thepund.it/',1,'SemLib Project','christian.morbidoni@gmail.com','http://www.semlibproject.eu/','images/tools/0/170.png',0,0,'2018-11-06','https://github.com/net7/pundit2',NULL,'https://github.com/net7/pundit2',NULL,0,'2012-10-17 20:55:45','2018-11-06 03:32:51',''),(171,1,'Gephi','<p>Gephi is a free, open source interactive visualization and data exploration tool. Users can manipulate the display to uncover new facets of the data, enabling intutive exploration.</p>','https://gephi.github.io/',1,'Gephi Consortium','','https://consortium.gephi.org/','images/tools/0/171.png',5,0,'2018-10-17','http://wiki.gephi.org/index.php/Main_Page',NULL,'',NULL,0,'2012-10-17 21:29:43','2018-10-17 04:38:41',''),(172,1,'Juxta','<p>Juxta is a free, open source tool for comparing and collating texts, originally intended for comparing multiple versions of the same text. It offers several views and visualization options, including histograms and side by side comparison. Juxta is available as both a desktop application and as a web service that can be integrated into the user\'s own website.</p>','http://www.juxtasoftware.org/',1,'NINES','','http://www.nines.org/','images/tools/0/172.png',0,0,'2018-11-23','https://github.com/performant-software/juxta-desktop/wiki/UserManual',NULL,'',NULL,0,'2012-10-17 21:45:13','2018-11-23 04:51:00',''),(173,1,'Orange','<p>Orange is a free, open source data visualization and analysis tool. It allows users to conduct data mining either through its visual programming language, or via Python scripts, and includes components for machine learning. Orange includes both add-ons for biometrics and text mining, and data analytic features.</p>','http://orange.biolab.si/',1,'Tomaž Curk','','http://www.fri.uni-lj.si/en/tomaz-curk/default.html','images/tools/0/173.png',0,0,'2018-11-07','http://docs.orange.biolab.si/',NULL,'',NULL,0,'2012-10-17 22:09:44','2018-11-07 05:10:30',''),(174,NULL,'ORBIS: Stanford Geospatial Network Model of the Roman World','<p>ORBIS: Stanford Geospatial Network Model of the Roman World is a tool and academic resource for reconstructing the time and financial costs of travel in the ancient world. Its model is based on a simplified network of Roman cities, roads, rivers and sea lanes, and takes into account such factors as time of year and method of travel. Users can enter parameters to generate models and interactive maps.</p>','http://orbis.stanford.edu/',1,'Walter Scheidel and Elijah Meeks','scheidel@stanford.edu','http://www.stanford.edu/~scheidel/','images/tools/0/174.png',0,0,'2018-11-07','http://orbis.stanford.edu/#using',NULL,'',NULL,0,'2012-10-17 22:22:18','2018-11-07 05:13:18',''),(175,1,'Sophie','<p>Sophie is a free, creative commons authoring tool from the Institute for the Future of the Book and the University of Southern California\'s School of Cinematic Arts that enables collaboration, reading and publication. Its highlights include an authoring environment that allows users to create complex networked multimedia documents, a reader than opens books in a browser without downloading additional software, comment frames for adding discussions within books, digital libraries compatible with the Sophe iPad app, timeline creation and collaborative book creation. As of version 2.1, Sophie includes HTML5 export for data integrating multimedia content and for use on a wide variety of devices.</p>','http://sophie2.org/',1,'Institute for the Future of the Book and the University of Southern California\'s School of Cinematic Arts','hwillis@cinema.usc.edu','http://cinema.usc.edu/','images/tools/0/175.png',3,0,'2018-10-12','http://www.sophie2.org/users/help/UserDocumentation.html',NULL,'',NULL,0,'2012-10-18 18:44:54','2018-10-12 02:48:30',''),(176,NULL,'T-PEN','<p>T-PEN is a free toolset from the Center for Digital Theology at Saint Louis University for working with images of manuscripts and attaching transcription data. It has features for collaborative transcription in XML, multiple data viewing, data manipulation and data export. T-PEN includes support for multiple languages with French, Middle English and Old English dictionaries. User accounts are available by request.</p>','http://t-pen.org/TPEN/',1,'Jim Ginther, Abigail Firey','','http://t-pen.org/TPEN/about.jsp','images/tools/0/176.png',0,0,'2012-10-18','http://t-pen.org/TPEN/about.jsp',NULL,'',NULL,0,'2012-10-18 19:15:42','2017-10-31 14:25:09',''),(177,1,'Textalyser','<p>Textalyser is a free web-based text analysis tool offered by the Bernhard Huber Internet Engineering Company. Users can paste text into the provided entry field, upload a file or provide a URL for analysis. Textalyser provides detailed statistics on the text to determine subject, analyse word groupings, determine keyword density and deterimine the most prominent phrase.</p> <p>The Textalyser website is no longer available as of late 2014. It has been captured by the Internet Archive, and can still be viewed there.</p>','http://textalyser.net/',1,'Bernhard Huber Internet Engineering Company','b@bernhard-huber.eu','http://www.bernhard-huber.eu/','images/tools/0/177.png',5,0,'2018-11-09','https://web.archive.org/web/*/textalyser.net',NULL,'',NULL,0,'2012-10-18 19:33:47','2018-11-09 04:25:04',''),(178,NULL,'TextSTAT','<p>TextSTAT is a free text analysis tool offered by Niederl&auml;ndische Philologie, FU Berlin. It is a simple program designed to accept plain text, HTML, Word and OpenOffice files to produce word frequency lists and concordances, and versions are available in English, German, Dutch, Portugese, Spanish, French, Italian, Galician, Finnish, Polish and Czech. TextSTAT also includes a web spider and news reader for adding web pages and news to a corpus.</p>','http://neon.niederlandistik.fu-berlin.de/en/textstat/',1,'Matthias Hüning (Niederländische Philologie, FU Berlin)','matthias.huening@fu-berlin.de','http://neon.niederlandistik.fu-berlin.de/huening/','images/tools/0/178.png',0,0,'2014-11-20','https://blogs.princeton.edu/etc/2009/03/11/quickstart_guide_text_analysis_with_textstat/',NULL,'',NULL,0,'2012-10-18 19:48:56','2017-10-31 14:25:09',''),(179,1,'TokenX','<p>TokenX is a free text visualization and analysis tool for XML documents. It offeres a web-based environment and can generate word clouds, highlight parts of text such as words, non-words and punctuation, KWIC (keyword in context) and more. TokenX also offers more playful options, such as word substitution, or an option to replace words with images.</p>','http://tokenx.unl.edu/',1,'Brian L. Pytlik Zillig','','http://tokenx.unl.edu/','images/tools/0/179.png',0,0,'2013-05-21','http://tokenx.unl.edu/',NULL,'',NULL,0,'2012-10-18 20:20:22','2018-05-14 20:44:02',''),(180,1,'WEAVE (Web-based Analysis and Visualization Environment)','<p>WEAVE (Web-based Analysis and Visualization Environment) is a web-based visualization platform offered by the Institute for Visualization and Perception Research at the University of Massachusetts Lowell. It is designed to visualize any data for any purpose, and to accommodate novice and advanced users alike. It includes the ability to integrate, disseminate and visualize data at nested levels of geography. WEAVE is currently in beta. Both a web-based demo and a download version are available.</p>','http://oicweave.org/',1,'Institute for Visualization and Perception Research, University of Massachusetts Lowell ','','www.uml.edu/centers/ivpr/','images/tools/0/180.png',0,0,'2014-11-20','http://info.oicweave.org/projects/weave/wiki',NULL,'',NULL,0,'2012-10-18 20:34:55','2018-05-14 20:33:16',''),(181,NULL,'Apache Xalan','<p>Apache Xalan is a free XSLT processor for transforming XML documents into HTML, text or other XML document types, offered by the Apache Software Foundation. This tool uses the Xerces XML parser to converty XML into internal nodesets, and is offered as both C++ and Java implementations.</p>','http://xalan.apache.org/',1,'Apache Xalan Project','','http://http://xalan.apache.org/','images/tools/0/181.png',0,0,'2012-10-18','http://xalan.apache.org/',NULL,'',NULL,0,'2012-10-18 20:51:08','2017-10-31 14:25:10',''),(182,1,'XSugar','<p>XSugar is a tool designed to manage dual syntaxes when working with XML documents, developed by the Department of Computer Science, Aarhus University. From a user-provided specification, XSugar translates between XML syntaxs, and makes statistical checks to ensure transformations will be reliably bidirectional and contain valid syntax in accordance with the schema.</p>','http://www.brics.dk/xsugar/',1,'Department of Computer Science, Aarhus University','amoeller@cs.au.dk','http://cs.au.dk/','images/tools/0/182.png',0,0,'2012-10-18','http://www.brics.dk/xsugar/doc/index.html',NULL,'',NULL,0,'2012-10-18 21:10:55','2018-05-14 20:37:24',''),(183,1,'Yutzu','<p>Yutzu is a collaborative tool for collecting and publishing multimedia content online, offered by the Cultureplex Lab at the University of Western Ontario. It is a web environment, designed to assist in the creative process, publication and visualization, and integrating a variety of multimedia tools. Yutzu has been used to showcase work, curate exhibitions and collections, and to facilitate teaching and learning.</p>','',1,'CulturePlex Lab','','http://cultureplex.ca/','images/tools/0/183.png',0,0,'2018-10-05','http://www.yutzu.com/pages/faq',NULL,'',NULL,0,'2012-10-18 21:30:45','2018-10-05 04:02:25',''),(184,1,'ATLAS.ti','<p>ATLAS.ti is a tool for systematic qualitative data analysis released under a for-pay license. It offers multi-window frames, overviews generated through interactive network views utilizing visual interconnections, and cloud views and reports. A free demo version is also availalble, and does not include a time limit. This tool was first developed in 1989 and has been in continous development since. The web edition has been available since 2002.</p>','http://atlasti.com/?q=/index.html',1,'ATLAS.ti Scientific Software Development GmbH','','http://www.atlasti.com/copyright.html','images/tools/0/184.png',0,0,'2018-09-18','http://atlasti.com/downloads/?q=%2Fmanual.html',NULL,'',NULL,0,'2012-10-24 20:08:56','2018-09-18 01:43:58',''),(185,1,'CollateX','<p>CollateX is a free Java library for collating texts offered by Interedition, designed to be the successor to Peter Robinson\'s Collate. It uses a component-oriented architecture, to enable users to mix and match components according to their needs. Though its core library is Java, it also integrates a demo web application, a demo client application and Python language bindings that allow CollateX to be embedded into Python applications.</p>','http://collatex.net/',1,'Interedition','','http://www.interedition.eu/','images/tools/0/185.png',0,0,'2018-10-17','http://collatex.net/doc/',NULL,'',NULL,0,'2012-10-24 20:31:51','2018-10-17 04:51:32',''),(186,1,'cue.language','<p>cue.language is a free library of Java code and resources for basic natural language processing emerging from the development of the Wordle word cloud tool and maintained by Jonathan Feinman of IBM\'s CUE Research Group. Its functions include tokenization, counting strings, detecting the script alphabet or writing system required to represent the text, guess the text\'s language and customizeable stop word detection.</p>','https://github.com/jdf/cue.language',1,'Jonathan Feinberg, CUE Research Group (IBM)','','http://domino.watson.ibm.com/cambridge/research.nsf/pages/cue.html','images/tools/0/186.png',0,0,'2018-11-06','https://github.com/jdf/cue.language#readme',NULL,'',NULL,0,'2012-10-24 20:51:04','2018-11-06 06:35:36',''),(187,1,'CulturalAnalytics','<p>CulturalAnalytics, also known as Cultural Analytics for the Digital Humanities in R, is a free R package of functions for statistical analysis and plotting image properties, developed by Rob Myers specifically for the Digital Humanities, and of value to anyone else with an interest in examining digital or digitized images. It includes statistical functions and can generate histograms, colour clouds, image scatter charts and more.</p>','http://r-forge.r-project.org/projects/rca/',1,'Rob Myers','','https://r-forge.r-project.org/users/robmyers/','images/tools/0/187.png',0,0,'2018-11-23','http://r-forge.r-project.org/projects/rca/',NULL,'',NULL,0,'2012-10-24 21:16:54','2018-11-23 05:02:28',''),(188,1,'Diction','<p>Diction is a text analysis program for purchase, designed to determine the tone of a text, and generate reports and statistical analysis from it. DICTION versions are available for Windows® on a PC and Mac®.</p>','http://www.dictionsoftware.com/',1,'Digitex, Inc.','','http://www.dictionsoftware.com/about-us/','images/tools/0/188.png',0,0,'2018-09-27','http://www.dictionsoftware.com/download.php?file=wp-content/uploads/2013/09/Using_DICTION_7.pdf',NULL,'',NULL,0,'2012-10-24 21:36:39','2018-09-27 03:26:42',''),(189,1,'DiscoverText','<p>DiscoverText is a cloud-based textual analytics tool available for purchase. It is designed to collect data from sources such as social media, blogs and a variety of document formats, and generate tag clouds and reports from the resulting corpus.</p>','http://discovertext.com/',1,'Textifter, LLC.','','http://discovertext.com/aboutdt/about.aspx','images/tools/0/189.png',0,0,'2018-10-06','http://www.discovertext.com/media.html',NULL,'',NULL,0,'2012-10-24 21:53:40','2018-10-06 00:47:10',''),(190,1,'Improvise','<p>Improvise is a free Java software architecture and user interface designed to enable the construction and browsing of interactive visualizations, integrating a declarative visual query language.</p>','http://www.cs.ou.edu/~weaver/improvise/index.html',1,'Chris Weaver','','http://www.cs.ou.edu/~weaver/academic/','images/tools/0/190.png',0,0,'2018-10-05','http://www.cs.ou.edu/~weaver/improvise/downloads.html',NULL,'',NULL,0,'2012-10-24 22:22:02','2018-10-05 03:31:02',''),(191,1,'Pressbooks','<p>Pressbooks is a platform for collaboratively creating ebooks built over WordPress available as both a free service and on a subscription basis. Subscriptions are only required for users wanting to manage more than 5 books. eBooks can be generated in a variety of formats from several provided templates. Pressbooks integrates functionality for importing material from WordPress, Blogger and Tumblr, and assists in collaborative authoring with workflow management tools.</p>','http://pressbooks.com/',1,'PressBooks','','http://pressbooks.com/','images/tools/0/191.png',0,0,'2018-10-19','http://guide.pressbooks.com/',NULL,'',NULL,0,'2012-10-24 22:36:43','2018-10-19 02:36:12',''),(192,NULL,'Tesseract OCR','<p>Tesseract is a free raw OCR engine originally developed by HP Labs and now maintained by Google. It works with the Leptonica Image Processing Library, and is capable of reading a variety of image formats. It can convert images to text in over 40 languages.</p>','http://code.google.com/p/tesseract-ocr/',1,'HP Labs, Google','','http://google.com','images/tools/0/192.png',0,0,'2017-01-16','http://code.google.com/p/tesseract-ocr/w/list',NULL,'',NULL,0,'2012-10-24 22:56:11','2017-10-31 14:25:12',''),(193,1,'Timeline JS','<p>Timeline JS is a free timeline tool that can be poplulated from either a Google spreadsheet or a JSON file, and can draw media material from a variety of sources, such as Twitter, Flickr, Wikipedia, YouTube and more. It has been designed to be both easy to use and easy to embed the results in another web page.</p>','http://timeline.knightlab.com/',1,'VéritéCo','','http://verite.co/','images/tools/0/193.png',0,0,'2017-01-16','http://timeline.knightlab.com/#help',NULL,'',NULL,0,'2012-10-25 20:36:12','2018-05-14 20:30:18',''),(194,1,'TXM','<p>TXM is a free, open source text corpus analysis environment. Its features include concordance, collocate search, frequencies based on the CQP full text search engine and statistical functions based on R packages. It can export results in CSV, XML or SVG format, and runs as a standalone desktop application in Windows, OS X and Linux environments, or as a web portal (download the <a href=\"http://sourceforge.net/projects/txm/files/documentation/TXM%20Leaftlet%20EN.pdf/download\">leaflet </a>for more).<br><br></p>','http://textometrie.ens-lyon.fr/?lang=en',1,'TXM Team','textometrie@ens-lyon.fr','http://textometrie.ens-lyon.fr/?lang=en','images/tools/0/194.png',0,0,'2018-09-21','http://',NULL,'',NULL,0,'2012-10-25 20:49:47','2018-09-21 00:12:03',''),(195,NULL,'VARD 2','<p>VARD 2 is a free, creative commons tool for preprocessing historical corpora. Built in Java, it enables researchers to easily match up historic variant spellings with modern conventions. Though optimized for Early Modern English, other languages can be accomodated with user-supplied variant word lists.</p>','http://ucrel.lancs.ac.uk/vard/about/',1,'Alistair Baron (UCREL)','','http://www.comp.lancs.ac.uk/~barona/home/','images/tools/0/195.png',0,0,'2014-11-20','http://ucrel.lancs.ac.uk/vard/userguide/',NULL,'',NULL,0,'2012-10-25 21:14:11','2017-10-31 14:25:13',''),(196,1,'Wmatrix','<p>Wmatrix is a free tool for corpus analysis and comparison. It provides a web interface for USAS and CLAWS, in addition to enabling standard corpus linguistic functions such as frequency lists and concordances.</p>','http://ucrel.lancs.ac.uk/wmatrix/',1,'Paul Rayson (REVERE Project)','','http://www.comp.lancs.ac.uk/computing/research/cseg/projects/revere/','images/tools/0/196.png',0,0,'2012-10-25','http://ucrel.lancs.ac.uk/wmatrix/',NULL,'',NULL,0,'2012-10-25 21:23:57','2018-05-14 20:41:58',''),(197,1,'Mallet','<p>Mallet is a Java based library and command line framework that provides statistical and machine learning tools for use with natural language processing.</p>','http://mallet.cs.umass.edu/',1,'Andrew McCallum','mccallum@cs.umass.edu','http://people.cs.umass.edu/~mccallum/','images/tools/0/197.png',5,0,'2013-11-06','http://mallet.cs.umass.edu/mallet-tutorial.pdf',NULL,'',NULL,0,'2012-11-01 20:01:13','2018-05-14 20:43:56',''),(198,1,'Abbot','<p>Abbot is a free tool for converting multiple XML texts with multiple markup schema into a common interoperable file, offered by the MONK (Metadata Offer New Knowledge) Project. It can also read an XML schema file and output procedures, and use them to convert other files into valid XML in alignment with the target schema. While Abbot focusses on TEI, it has been designed to flexibly accomodate other standards and can transform texts into any XML schema required.</p>','https://github.com/CDRH/abbot',1,'Brian Pytlik-Zillig, Stephen Ramsay, and Martin Mueller (MONK Project)','monkproject@lis.illinois.edu','http://www.monkproject.org/','images/tools/0/198.png',0,0,'2014-11-20','https://github.com/CDRH/abbot',NULL,'',NULL,0,'2012-11-22 18:03:50','2018-05-14 20:44:05',''),(199,NULL,'TACT (Text Analysis Computing Tools)','<p>TACT (Text Analysis Computing Tools) is a historically important text analysis and retrieval system that was developed from 1986 to 1989 at the University of Toronto in cooperation with IBM and remained in use into the 1990s. It was designed to run in MS-DOS and permitted inquiries on text databases in a number of European languages. Originally available on two 1.44MB floppy disks, the full fileset is now available for free download.</p>','http://projects.chass.utoronto.ca/tact/',1,'John Bradley, Ian Lancashire, Lidio Presutti, and Michael Stairs','','http://projects.chass.utoronto.ca/tact/','images/tools/0/199.png',0,0,'2018-11-06','http://projects.chass.utoronto.ca/tact/',NULL,'',NULL,0,'2012-11-22 18:28:11','2018-11-06 06:52:05',''),(200,1,'SimpleTCT','<p>SimpleTCT (Simple Text Comparison Tool) is a free Java-based text comparison tool offered by Open Digital Arts &amp; Humanities Tools (OpenDAHT). It offers a simplified management environment that enables users to display .rtf files, in which they may define themes, highlight passages and add researcher notes. The modified document can then be exported for later use.</p>','http://opendaht.org/SimpleTCT.html',1,'OpenDAHT','info@opendaht.org','http://opendaht.org/index.html','images/tools/0/200.png',3,0,'2012-11-29','http://opendaht.org/SimpleTCT.html',NULL,'',NULL,0,'2012-11-29 19:43:07','2018-05-14 20:29:33',''),(201,NULL,'TUSTEP','<p>TUSTEP (Tubingen System of Text Processing Tools) is a free, open source, widely-used toolbox for text processing. It is aimed at scholarly audiences, can work with texts in both latin and non-latin scripts, and is primarily designed for humanites applications. Its modules include data capture, information retrieval, text collation, text analysis, sorting and ordering, rule-based textual manipulation, data export and typesetting. The user manual is only available in German at this time. This tool has been in continuous development since the 1960s.</p>','http://www.tustep.uni-tuebingen.de/tustep_eng.html',1,'TUSTEP','tustep@zdv.uni-tuebingen.de','http://www.tustep.uni-tuebingen.de/tustep_eng.html','images/tools/0/201.png',5,0,'2018-11-23','http://www.tustep.uni-tuebingen.de/tustep_eng.html',NULL,'',NULL,0,'2012-11-29 20:42:43','2018-11-23 05:08:34',''),(202,1,'Concordance','<p>Concordance is a commerical text analysis and concordance tool originally developed for the Humanities (formerly available via the University of Dundee School of Humanities). It offers features for text analysis, word lists, indexes, full concordances, word frequencies and more. A free trial version is available.</p>','http://www.concordancesoftware.co.uk/',1,'Rob J. C. Watt','R.J.C.Watt@dundee.ac.uk','http://www.dundee.ac.uk/english/about/staff/robwatt/','images/tools/0/202.png',0,0,'2018-10-30','http://www.concordancesoftware.co.uk/concordance-help-topics.htm',NULL,'',NULL,0,'2012-11-29 21:01:45','2018-10-30 16:26:18',''),(203,NULL,'GINGER II','<p>GINGER II is a word-sense disambiguator for English, offering a new approach to the algorithm developed for GINGER I. It directly extracts semantic disambiguation rules from dictionary example phrases, and semantically tags, syntactically parses and disambiguates those examples. This legacy tool has no affiliated web site and is no longer available.</p>','',1,'Luca Dini, Vittorio di Tomaso and Frederique Segond','','','images/tools/0/203.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2012-11-29 21:47:47','2017-10-31 14:25:15',''),(204,NULL,'Pattern (CLiPS)','<p>Pattern (CLiPS) is a web mining module for Python designed for computational linguistic and psycholinguistic research. It integrates tools for data retrieval from search engines, social media, web spiders and individual websites, and can accomplish text analysis, natural language processing and data visualization.</p>','http://www.clips.ua.ac.be/pages/pattern',1,'CLiPS (Computational Linguistics & Psycholinguistics Research Centre)','walter.daelemans@ua.ac.be','http://www.clips.ua.ac.be/','images/tools/0/204.png',0,0,'2013-11-06','http://www.clips.ua.ac.be/pages/pattern-dev',NULL,'',NULL,0,'2012-11-30 20:10:54','2017-10-31 14:25:15',''),(205,NULL,'INTEX','<p>INTEX is a linguistic development environment active until 2005. It includes large-coverage dictionaries and grammers, can parse texts of several million words in real-time, and tools to create and maintain large-coverage lexical resources, morphological and syntactic grammars, build lemmatized concordances and indices of large texts and identified semantic units.</p>','http://www.nyu.edu/pages/linguistics/intex/',1,'Max Silberztein','max.silberztein@univ-fcomte.fr','http://www.nyu.edu/pages/linguistics/intex/','images/tools/0/205.png',0,0,'2018-10-30','http://www.nyu.edu/pages/linguistics/intex/',NULL,'',NULL,0,'2012-11-30 20:36:31','2018-10-30 16:02:02',''),(206,NULL,'NETMET','<p>NETMET is a tool for generating and interpreting metaphors designed to run in DOS. Though this tool is no longer under development, it is still available for download. It includes a number of sample input metaphor files and is designed to be modified and improved as needed by the user.</p>','http://ericsteinhart.com/ANALOGY/lom-netmet.html',1,'Eric Steinhart','','http://ericsteinhart.com/','images/tools/0/206.png',0,0,'2012-11-30','http://ericsteinhart.com/ANALOGY/lom-netmet.html',NULL,'',NULL,0,'2012-11-30 21:20:42','2017-10-31 14:25:16',''),(207,NULL,'Micro-EYEBALL','<p>Micro-EYEBALL is a microprocessor version of the English language parser developed in the 1970s. This historically important legacy tool could also provide statistical descriptions of many linguistic features of a text. This tool is no longer available, and does not have a web presence.</p>','',1,'Donald Ross and David Hunter','','','images/tools/0/207.png',0,0,'2013-10-31','http://',NULL,'',NULL,0,'2012-11-30 21:59:23','2017-10-31 14:25:16',''),(208,NULL,'Collate: Interactive Collation of Large Textual Traditions','<p>Collate was a program designed for scholars concerned with the difficulties of medieval vernacular traditions. It aimed to help scholars with the preparation of critical editions, and could collate up to a hundred texts. Collate was also capable of handling marked up text. It was available for Macintosh only, and could be purchased directly from its creator.</p>','http://www.hd.uib.no/humdata/2-91/robin.htm',1,'Peter M.W. Robinson','','http://www.petermwrobinson.me.uk/','images/tools/0/208.png',0,0,'2018-11-23','http://www.hd.uib.no/humdata/2-91/robin.htm',NULL,'',NULL,0,'2012-11-30 23:00:57','2018-11-23 04:58:54',''),(209,NULL,'XTRACT','<p>XTRACT was a tool for lexical collocation developed by Frank Smadja, then of Columbia University. It was designed to use statistical techniques to identify collocations of aribitrary length, and to generate syntactic relationships between words. This tool is no longer available and does not have a web presence.</p>','',1,'Frank Smadja','','','images/tools/0/209.png',0,0,'2014-12-30','http://',NULL,'',NULL,0,'2012-11-30 23:34:09','2017-10-31 14:25:17',''),(210,NULL,'JConcorder','<p>JConcorder is Java software for building and managing word catalogues, originally released for the Macintosh as Concorder / Le Concordeur. Amongst its features are functions for listing and cataloguing words, generating concordances, exporting concordances and graphing frequencies. The original version is also available for download, but requires a legacy Macintosh operating system to run.</p>','http://www.concorder.ca/index.html',1,'David Rand','rand@videotron.ca','http://www.concorder.ca/','images/tools/0/210.png',0,0,'2012-12-13','http://www.concorder.ca/index_en.html',NULL,'',NULL,0,'2012-12-06 19:51:23','2017-10-31 14:25:17',''),(211,NULL,'PC-KIMMO','<p>PC-KIMMO is a tool for morphological parsing available since 1985. It is designed to generate and/or parse words, for use by computational linguists, descriptive linguists and others interested in natural language processing. Though this tool is no longer being actively developed, it is still available for download, as is its documentation.</p>','http://www-01.sil.org/pckimmo/',1,'Evan L. Antworth, David Smith, Stephen McConnell and Gary Simons','','','images/tools/0/211.png',0,0,'2014-11-20','http://www-01.sil.org/pckimmo/about_pc-kimmo.html',NULL,'',NULL,0,'2012-12-06 20:30:56','2017-10-31 14:25:17',''),(212,NULL,'URICA! II','<p>URICA! II  (User Response Interactive Collation Assistant) was an interactive collation program for the Macintosh. It semi-automated text collation, and assisted text comparison by \'tagging\' variants or automatically reconciling small differences. URICA! II built upon the foundation of URICA!, the first iteration of the program.</p>','',1,'Michael L. HIlton (URICA! Project, University of South Carolina)','','','images/tools/0/212.png',0,0,'2018-10-18','http://',NULL,'',NULL,0,'2012-12-06 21:25:40','2018-10-18 04:47:42',''),(213,NULL,'VINCI','<p>VINCI is a natural language generation environment, first introduced in 1986 and with a sustained web presence. It provides linguists with a collection of linguist-friendly metalanguages for modelling natural language. It can generate sentences and words according to user specifications to assist in the study of linguistic phenomena.</p>','http://research.cs.queensu.ca/CompLing/',1,'Greg Lessard and Michael Levison (VINCI Laboratory)','','http://research.cs.queensu.ca/CompLing/','images/tools/0/213.png',0,0,'2012-12-06','http://research.cs.queensu.ca/CompLing/documents.html',NULL,'',NULL,0,'2012-12-06 22:22:59','2017-10-31 14:25:18',''),(214,NULL,'Micro-OCP','<p>Micro-OCP (Oxford Concordance Program) was a major and historically important textual analysis tool for microprocessor computers. It enabled users to generate concordances, word lists and indexes, in addition to facilitating text markup in COCOA or other markup languages. Micro-OCP was written in FORTRAN, ran primarily in a DOS environment and could be ported to other operating systems including UNIX.</p>','http://users.ox.ac.uk/~ctitext2/resguide/resources/o125.html',1,'CTI Centre for Textual Studies (Oxford University)','','http://users.ox.ac.uk/~ctitext2/','images/tools/0/214.png',0,0,'2013-01-21','http://',NULL,'',NULL,0,'2012-12-06 23:17:00','2017-10-31 14:25:18',''),(215,NULL,'FINNMORF','<p>FINNMORF was a tool for generating full lexical paradigms for Finnish words. It modelled Finnish morphological competence, to facilitate identification of the most likely forms of a word within its context. Although the program could not select the correct form from context, the complexity of Finnish required sophisticated modelling to correctly determine the possible root form of a given word. As such, FINNMORF represented a significant contribution to computational linguistics.</p>','',1,'Eugene Holman','','','images/tools/0/215.png',0,0,'2018-10-30','http://',NULL,'',NULL,0,'2012-12-07 03:14:22','2018-10-30 16:29:12',''),(216,1,'WordCruncher','<p>WordCruncher is long-standing text indexing, retrieval and analysis program offered by Brigham Young University. Its functions include tagging, contextual searching, collocation and analytical reporting, and its development has been active since the 1980s.</p>','http://www.wordcruncher.com/',1,'WordCruncher','WordCruncher@byu.edu','','images/tools/0/216.png',0,0,'2018-11-06','http://',NULL,'',NULL,0,'2012-12-07 03:35:13','2018-11-06 06:39:00',''),(217,NULL,'DV-COLL (Donne Variorum Textual Collation Program)','<p>DV-COLL (Donne Variorum Textual Collation Program) is a historically important textual collation program first introduced in the 1980s and maintained into the present. It was originally designed to assist in creating a digitized corpus of the works of John Donne, and has been opened to other researchers for collecting, comparing and analyzing the works of other poets.</p>','http://donnevariorum.tamu.edu/resources/down/index.html',1,'Gary A. Stringer','','','images/tools/0/217.png',0,0,'2018-11-23','http://donnevariorum.tamu.edu/resources/down/index.html',NULL,'',NULL,0,'2012-12-07 16:57:57','2018-11-23 05:03:27',''),(218,NULL,'CLOC','<p>CLOC is a general purpose text analysis package originally offered by the University of Birmingham Computing Centre in the late 1970s, and now avaiable for download. It can generate concordances, collocates and word lists for a text. This tool was developed in Fortran.</p>','http://www.textworld.com/cloc/index.html',1,'Alan Reed','','http://www.textworld.com/','images/tools/0/218.png',0,0,'2018-11-09','http://',NULL,'',NULL,0,'2012-12-12 18:54:37','2018-11-09 04:27:47',''),(219,NULL,'WORDS','<p>WORDS was a text analysis program library for content analysis developed by Howard P. Iker at the University of Rochester. It identified major content themes, and generated word frequencies and collocations, and was sufficiently complex to require a 200-page user manual. This program is no longer available and does not have a web presence.</p>','',1,'Howard P. Iker','','','images/tools/0/219.png',0,0,'2014-12-30','http://',NULL,'',NULL,0,'2012-12-12 19:30:05','2017-10-31 14:25:19',''),(220,NULL,'KLIC (Key Letter in Context)','<p>KLIC (Key Letter in Context) was a program for graphological anaylsis particularly useful to scholars analyzing the language of medieval texts, created by Grace B. Logan of the Waterloo Arts Computing Office. It assisted in determining where different spelllings represent different pronunciations, and when they are variant spellings of the same word.</p>','',1,'Grace B. Logan','','','images/tools/0/220.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2012-12-12 20:19:09','2017-10-31 14:25:19',''),(221,NULL,'LEXICO','<p>LEXICO was an interactive system designed to assist lexographers in text analysis. It assisted in storing, editing and concording texts, lemmatizing word lists and generating \'slips\' containing a single word with its lemma, context and source.</p>','',1,'Richard L. Venezky','','','images/tools/0/221.png',0,0,'2013-10-31','http://',NULL,'',NULL,0,'2012-12-12 20:46:52','2017-10-31 14:25:20',''),(222,NULL,'COCOA','<p>COCOA was a program and markup language for generating word counts and concordances written in FORTRAN, from the University College Cardiff and the Atlas Computer Laboratory. It produced keyword-in-context concordances and word frequency profiles for texts, and was considered to be a powerful, highly flexible program for punched card computers.</p>','',1,'G.L.M. Berry-Roghe','','','images/tools/0/222.png',0,0,'2013-09-19','http://',NULL,'',NULL,0,'2012-12-12 21:39:30','2017-10-31 14:25:20',''),(223,NULL,'SELECT (Sum and Evaluate the Largest Exponentiated Correlation Terms)','<p>SELECT (Sum and Evaluate the Largest Exponentiated Correlation Terms) was a computer program for identifying associationally rich words for content analysis emerging from the WORDS research program developed in the 1970s. Although historically important, SELECT is no longer available and does not have an web presence.</p>','',1,'Howard P. Iker','','','images/tools/0/223.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2012-12-13 21:19:00','2017-10-31 14:25:20',''),(224,NULL,'Meandre','<p class=\"Standard\">Meandre is a graphical programming language for creating text analysis flows, built on top of the Seasr infrastructure. Meandre uploads its flows to a Seasr server where they can be accessed and used by anyone who can access the server.</p>','',1,'Michael Welge, Loretta Auvil, John Unsworth','','','images/tools/0/224.png',0,0,'2018-10-26','http://www.seasr.org/meandre/documentation/',NULL,'',NULL,0,'2012-12-17 20:21:02','2018-10-26 00:57:57',''),(225,NULL,'Massive Pixel Environment','<p>Massive Pixel Environment (formerly Most Pixels Ever: Cluster Edition) is a library from the Texas Advanced Computing Center\'s A Thousand Words Project, inspired by and expanding on the original Most Pixels Ever developed by Daniel Shiffman. It extends Processing sketches to multi-node tile displays, enabling users to display output across multiple systems and displays, at the native resolution of those displays. This allows for a dramatic increase in the amount of data that may be visualized at one time, in comparison to a single-screen display.</p>','https://www.tacc.utexas.edu/research-development/tacc-software/massive-pixel-environment',1,'Rob Turknett and Brandt Westing (A Thousand Words Project)','','http://www.tacc.utexas.edu/tacc-projects/a-thousand-words','images/tools/0/225.png',0,0,'2018-10-05','http://tacc.github.io/MassivePixelEnvironment/',NULL,'',NULL,0,'2012-12-19 19:06:39','2018-10-05 02:58:57',''),(226,NULL,'Kaleidoscope','<p>Kaleidoscope is a tool designed to assist users in spotting differences between versions of a text, source files or images. It allows direct comparison of images, texts to be merged into a single edition, and files to be differentiated.</p>','http://www.kaleidoscopeapp.com/',1,'Black Pixel','kaleidoscope@blackpixel.com','http://blackpixel.com/','images/tools/0/226.png',0,0,'2014-12-16','http://www.kaleidoscopeapp.com/releasenotes',NULL,'',NULL,0,'2012-12-19 19:52:22','2017-10-31 14:25:21',''),(227,1,'Meld','<p>Meld is a free, open source tool for comparing files, directories and version-controlled projects developed in Python by Kai Willadsen. It features two- and three-way comparison of files and directories, supports numerous version control systems, and is particularly useful for reviewing changes to code. This tool can be downloaded or run without an install via the command line by copying the source code directly from the repository.</p>','http://meldmerge.org/',1,'Kai Willadsen','','http://fias.uni-frankfurt.de/~willadsen/','images/tools/0/227.png',0,0,'2012-12-20','http://meldmerge.org/help/',NULL,'',NULL,0,'2012-12-20 18:27:53','2018-05-14 20:29:25',''),(228,NULL,'WordSeer','<p>WordSeer is a free, simple to use text analysis tool offered by the University of California Berkeley. It is entirely web based, with tools for search, reading and interrogating, heat maps and frequency. At this time, the only corpus available for exploration is the works of William Shakespeare.</p>','http://wordseer.berkeley.edu/shakespeare/index.php',1,'Aditi Muralidharan and Marti A. Hearst','','http://wordseer.berkeley.edu/people/','images/tools/0/228.png',0,0,'2018-11-06','http://wordseer.berkeley.edu/shakespeare/index.php',NULL,'',NULL,0,'2013-01-28 23:43:47','2018-11-06 06:38:04',''),(229,NULL,'GATE (General Architecture for Text Engineering)','<p>GATE (General Architecture for Text Engineering) is free, open source software offered by the University of Sheffield since 1995. It provides a framework for users to gather a corpus, apply an ontology to it, develop markup, automate the application of the markup to the corpus and add tools such as knowledge facet search, ontology browsing or graphing.</p>','http://gate.ac.uk/',1,'GATE Project','','http://gate.ac.uk/people/','images/tools/0/229.png',3,0,'2018-11-23','http://gate.ac.uk/sale/tao/split.html',NULL,'',NULL,0,'2013-01-29 17:36:50','2018-11-23 05:01:31',''),(230,NULL,'FRANTEXT / Stella','<p>FRANTEXT is a historically and culturally important database of French literary, philosophical and technical texts with an emphasis on diversity and representation, spanning the Middle Ages to the present, and offered on a subscription basis. This resource is aimed at linguists and literary scholars in the humanities and social sciences, and is notable for its inclusion of a powerful search engine called Stella. Stella is a sophisticated NLP search suite, and includes regular expression search, lemmatization, vocabulary list and entity categorization functions.</p>','http://www.frantext.fr/',1,'ATILF - CNRS','frantext@atilf.fr','http://www.atilf.fr/','images/tools/0/230.png',0,0,'2018-10-30','http://www.frantext.fr/dendien/scripts/regular/7fmr.exe?CRITERE=FRANTEXT_DOCUMENTATION;ISIS=isis_bbibftx.txt;OUVRIR_MENU=1',NULL,'',NULL,0,'2013-01-29 17:58:40','2018-10-30 16:30:34',''),(231,NULL,'TACTweb 1.0','<p>TACTweb 1.0 is a free, historically important experimental web-based implementation of the TACT (Text Analysis Computing Tools) analysis and retrieval system, utilizing code originally written for TACT 2.0. TACTweb 1.0 is designed to make a TACT TDB database accessible to web users without requiring them to have a copy of TACT themselves. TACTweb 1.0 enables users to query TACT in its query language without having to learn the rest of the system. It is currently available for download, and is intended for install on a server.</p>','http://tactweb.cch.kcl.ac.uk',1,'John Bradley and Geoffrey Rockwell','john.bradley@kcl.ac.uk','http://www.kcl.ac.uk/artshums/depts/ddh/people/academic/bradley/index.aspx','images/tools/0/231.png',0,0,'2018-11-06','http://tactweb.cch.kcl.ac.uk/doc/twintro.htm',NULL,'',NULL,0,'2013-01-29 18:18:43','2018-11-06 06:50:42',''),(232,NULL,'Flemm v3.1: Analyseur Flexionnel du français pour des corpus étiquetés','<p>Flemm v3.1 is a free, open source tool for lemmatizing and generating inflections for a French text.</p>','http://www.cnrtl.fr/outils/flemm/',1,'CNRTL (Centre National de Ressources Textuelles et Lexicales)','','http://www.cnrtl.fr/','images/tools/0/232.png',0,0,'2013-01-29','http://www.cnrtl.fr/outils/flemm/plus_flemm.php',NULL,'',NULL,0,'2013-01-29 20:49:21','2017-10-31 14:25:22',''),(233,NULL,'CNRTL Extension for Firefox','<p>CNRTL is a free XUI and Javascript extension for Firefox designed to enable users to access the French lexical CNRTL portal directly within their web browser. With its toolbar, users can also double-click on a word within a webpage to view lexical information for it.</p>','http://www.cnrtl.fr/outils/extension-portail/',1,'CNRTL (Centre National de Ressources Textuelles et Lexicales)','','http://www.cnrtl.fr/','images/tools/0/233.png',0,0,'2018-10-30','http://www.cnrtl.fr/outils/extension-portail/',NULL,'',NULL,0,'2013-01-29 21:11:29','2018-10-30 16:19:30',''),(234,NULL,'Pompamo','<p>Pompamo is a free, web based tool for French texts designed to detect candidates for neologisms within a text based on lexical exclusion. Users can apply the built-in lexicon or upload up to six of their own.</p>','http://www.cnrtl.fr/outils/pompamo/',1,'CNRTL (Centre National de Ressources Textuelles et Lexicales)','','http://www.cnrtl.fr/','images/tools/0/234.png',0,0,'2018-11-07','http://www.cnrtl.fr/outils/pompamo/',NULL,'',NULL,0,'2013-01-29 21:34:57','2018-11-07 05:01:36',''),(235,NULL,'DériF (Dérivation en Français)','<p>D&eacute;riF (D&eacute;rivation en Fran&ccedil;ais) is a free, web based morphological analyzer for French. It lemmatizes a text and labels each lemma, out of context, with a grammatical category (noun, verb, adjective, etc.).</p>','http://www.cnrtl.fr/outils/DeriF/',1,'CNRTL (Centre National de Ressources Textuelles et Lexicales)','','http://www.cnrtl.fr/','images/tools/0/235.png',0,0,'2013-01-29','http://www.cnrtl.fr/outils/DeriF/',NULL,'',NULL,0,'2013-01-29 21:48:42','2017-10-31 14:25:23',''),(236,NULL,'FastKwic','<p>FastKwic is a free concordance tool for French and English texts encoded in ISO-Latin-1 (ISO-8859-1) or UTF-8. It is available for download, and compiles a user-provided lexical resource and applies it when indexing or concording a text.<br /><span style=\"color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none;\"><span class=\"Apple-converted-space\"><br /></span></span></p>','http://www.cnrtl.fr/outils/fastkwic/',1,'CNRTL (Centre National de Ressources Textuelles et Lexicales)','','http://www.cnrtl.fr/','images/tools/0/236.png',0,0,'2013-01-29','http://www.cnrtl.fr/outils/fastkwic/',NULL,'',NULL,0,'2013-01-29 22:02:22','2017-10-31 14:25:23',''),(237,NULL,'GRIPHOS (General Retrieval and Information Processor for Humanities Oriented Studies)','<p>GRIPHOS (General Retrieval and Information Processor for Humanities Oriented Studies) is a historically important suite of programs used extensively within the Museum Computer Network, a shared information management system developed jointly by fifteen New York area museums. Designed by Dr. Jack Heller of New York University\'s Institute for Computer Research in the Humanities (ICRH) and debuting in 1967, GRIPHOS enabled museums to store, retrieve and apply textual markup to their records.</p>','',1,'Dr. Jack Heller and the Museum Computer Network, Inc.','','','images/tools/0/237.png',0,0,'2014-05-29','http://',NULL,'',NULL,0,'2013-02-04 17:56:48','2017-10-31 14:25:23',''),(238,1,'R','<p>R is an open source programing language designed for statistical analysis and parallel computing. R began its life as a research project at the University of Aukland, but has since expanded to become a collaborativly run open source project run by the GNU. R has libraries for data import, regular expression data splitting, and visualization of data. R can be run as either a script or as a working environment.</p>','http://www.r-project.org/',1,'GNU','','http://www.gnu.org/','images/tools/0/238.png',4,0,'2018-10-26','http://cran.r-project.org/doc/manuals/R-intro.html',NULL,'',NULL,0,'2013-02-11 23:29:15','2018-10-26 00:55:39',''),(239,NULL,'Trend Miner','<p>Trend Miner is a tool designed to enable portable open-source real-time methods for cross-lingual mining and summarizing of large-scale stream media. It combines elements from natural language processing, knowledge-based reasoning, machine learning, economics and political science. It is designed to access and interpret data from sources such as blogs, Facebook and Twitter.</p>','http://www.trendminer-project.eu/',1,'Trend Miner Project','','','images/tools/0/239.png',0,0,'2013-09-05','http://www.trendminer-project.eu/',NULL,'',NULL,0,'2013-04-08 20:48:30','2017-10-31 14:25:24',''),(240,1,'Textal','<p>Textal is a text analysis app for the iPhone and iPad offered by the UCL Centre for Digital Humanities. It creates word clouds from texts, websites, tweets and documents, then allows users to explore the statistics and relationships between words in the text. As a tool, it is intended as an introduction to to text analysis while expanding the functionality traditionally implemented in word clouds.</p>','http://textal.org/',1,'Melissa Terras and Steven Gray (UCL Centre for Digital Humanities)','','http://www.ucl.ac.uk/dh','images/tools/0/240.png',0,0,'2018-10-18','http://',NULL,'',NULL,0,'2013-04-08 21:00:26','2018-10-18 04:54:06',''),(241,1,'Transana','<p>Transana is a free, open source program offered by the University of Wisconsin-Madison Center for Education Research for transcribing and analyzing large collections of video and audio data aimed at academic researchers. It enables users to manually transcribe in a variety of levels of detail, identify and access analytically significant sections of their data, manage collections, organize video clips into categories, apply keywords to sections or clips, generate graphical or textual reports, data mine and share markup.</p>','http://www.transana.org/',1,'Chris Fassnacht, David K. Woods','','http://www.wcer.wisc.edu/','images/tools/0/241.png',0,0,'2018-11-06','http://www.transana.org/support/documentation.htm',NULL,'',NULL,0,'2013-05-13 17:04:34','2018-11-06 06:45:44',''),(242,1,'NVivo','<p>NVivo is a commercial software package for creating workspaces and corpuses. Its features include importing YouTube videos and comments, social media posts and discussions, web page and PDF capture, multiple language support and support for a wide variety of data formats such as spreadsheets, images, database tables and so on. Users can query their data in a variety of ways, annotate, cross-link and visualize connections, ideas and findings with charts, maps and models</p>','http://www.qsrinternational.com/products_nvivo.aspx',1,'QSR International','','http://www.qsrinternational.com/default.aspx','images/tools/0/242.png',0,0,'2018-09-21','http://www.qsrinternational.com/support_tutorials.aspx',NULL,'',NULL,0,'2013-05-13 17:13:10','2018-09-21 18:07:01',''),(243,NULL,'English Metrics','<p>English Metrics is a free tutorial on English metrics, first written in Hypercard and maintained in a StackRunner version for both OS X and Windows environments. It traces the process of scanning iambic pentameter, and includes reference and exercise material for a range of metrical patterns.</p>','http://oak.conncoll.edu/cohar/Programs.htm',1,'Charles O. Hartman','charles.hartman@conncoll.edu','http://oak.conncoll.edu/cohar/','images/tools/0/243.png',0,0,'2013-08-07','http://oak.conncoll.edu/cohar/Programs.htm',NULL,'',NULL,0,'2013-05-13 17:18:29','2017-10-31 14:25:25',''),(244,NULL,'The Scandroid 1.1','<p>The Scandroid is a free program released under the GNU Public License for OS X and Windows environments designed to scan English verse in iambic and anapestic meters, either from a text file or entered by hand. The program explains its process as it scans the text, such as identifying syllables or lexical stresses, or dividing lines into feet, so users can learn about its analysis in addition from its output.</p>','http://oak.conncoll.edu/cohar/Programs.htm',1,'Charles O. Hartman','charles.hartman@conncoll.edu','http://oak.conncoll.edu/cohar/','images/tools/0/244.png',0,0,'2013-08-07','http://oak.conncoll.edu/cohar/Assets/Programs/Scandroid%20Manual%201-1.pdf',NULL,'',NULL,0,'2013-05-13 17:22:36','2017-10-31 14:25:25',''),(245,NULL,'Prose (Virtual Muse)','<p>Prose is a free program for OS X and Windows written in Python and designed to generate random sentences. Originally described in Charles O. Hartman\'s book <em>Virtual Muse: Experiments in Computer Poetry</em>, it illustrates one approach to using computer programs as adjuncts to the process of composing poetry.</p>','http://oak.conncoll.edu/cohar/Programs.htm',1,'Charles O. Hartman','charles.hartman@conncoll.edu','http://oak.conncoll.edu/cohar/','images/tools/0/245.png',0,0,'2013-08-15','http://oak.conncoll.edu/cohar/Programs.htm',NULL,'',NULL,0,'2013-05-13 17:27:30','2017-10-31 14:25:26',''),(246,NULL,'Concord, the Interactive Concordance Generator (Virtual Muse)','<p>Concord is a free concordance generator written in Python for OS X and Windows XP (a new Windows version is forthcoming). It generates a KWIC concordance entry from a plain-text file for any word or phrase and permits sorting in a variety of ways. Concord can handle large text files, and preliminary testing with the modern Greek alphabet shows it supports non-Latin alphabets. This tool is described in Chris O. Hartman\'s book <em>Virtual Muse: Experiments in Computer Poetry</em>.</p>','http://oak.conncoll.edu/cohar/Programs.htm',1,'Charles O. Hartman','charles.hartman@conncoll.edu','http://oak.conncoll.edu/cohar/','images/tools/0/246.png',0,0,'2013-08-07','http://oak.conncoll.edu/cohar/Programs.htm',NULL,'',NULL,0,'2013-05-13 17:33:04','2017-10-31 14:25:26',''),(247,NULL,'InTEXT','<p>InTEXT is a legacy, commercial suite of programs designed to supplement web search, intranet management and accomplish variety of document generation, search and manipulation functions. It includes natural language query, full-text search and retrieval and an intelligent document organizer. It runs in Windows NT and UNIX.</p>','http://intext.com/',1,'InTEXT Systems','','','images/tools/0/247.png',0,0,'2018-11-07','http://intext.com/',NULL,'',NULL,0,'2013-05-13 17:45:12','2018-11-07 05:22:24',''),(248,1,'MAXQDA','<p>MAXQDA is a commercial software package for facilitating qualitative and mixed methods research. It includes a graphical interface for organizing and categorizing data, and can import data in a wide variety of formats, including web formats, images, audio and video and spreadsheets. Data can be encoded in several ways, such as keywords, colours or symbols. It includes visualization and report generation.</p>','http://www.maxqda.com/',1,'VERBI Software','','http://www.maxqda.com/about','images/tools/0/248.png',0,0,'2018-10-19','http://www.maxqda.com/support/need-help-look-here-for-a-quick-solution',NULL,'',NULL,0,'2013-05-13 17:58:26','2018-10-19 01:29:11',''),(249,NULL,'LIWC (Linguistic Inquiry and Word Count)','<p>LIWC (Linguistic Inquiry and Word Count) is a text analysis program available for purchase. It calculates the degree to which various categories of words are used in a text, and can process texts ranging from e-mails to speeches, poems and transcribed natural language in either plain text or Word formats. A free, minimalist web version is available through the website.</p>','http://www.liwc.net/',1,'LIWC Inc. (James W. Pennebaker, Roger J. Booth, and Martha E. Francis)','','http://www.liwc.net/','images/tools/0/249.png',0,0,'2013-05-13','http://www.liwc.net/howliwcworks.php',NULL,'',NULL,0,'2013-05-13 18:11:12','2017-10-31 14:25:27',''),(250,NULL,'General Inquirer','<p>The General Inquirer is a historically important program for content analysis of textual data originally developed in the 1960s by Philip Stone and his colleagues at the Harvard Laboratory of Social Relations. Though the original release used punched cards, a version the program is available by request, and can be obtained by e-mailing Roger Hurwitz from an academic address. A minimalist web version capable of processing small files is also available. The General Inquirer\'s homepage is maintained in Philip Stone\'s memory.</p>','http://www.wjh.harvard.edu/~inquirer/',1,'Philip Stone (c/o Roger Hurwitz)','rhhu@csail.mit.edu','http://www.wjh.harvard.edu/~inquirer/','images/tools/0/250.png',0,0,'2013-12-30','http://www.wjh.harvard.edu/~inquirer/',NULL,'',NULL,0,'2013-05-13 18:21:12','2017-10-31 14:25:27',''),(251,NULL,'WORDij','<p>WORDij is a free semantic network tool for capturing relationships between words and assigning word-pair link strengths. This information is used as the basis for more sophisticated analysis, such as word network structure mapping. WORDij requires registration for download.</p>','http://wordij.net/',1,'James A. Danowski','jdanowski@gmail.com','http://wordij.net/','images/tools/0/251.png',0,0,'2018-10-05','http://wordij.net/faq.html',NULL,'',NULL,0,'2013-05-13 18:39:50','2018-10-05 03:01:09',''),(252,NULL,'UCINET','<p>UCINET is a software package for analyzing network data, available for purchase and with a 90-day trial period. This tool has been in continuous development since the 1980s, and now includes the capacity to gather and analyze social network data.</p>','https://sites.google.com/site/ucinetsoftware/home',1,'Lin Freeman, Martin Everett and Steve Borgatti','','https://sites.google.com/site/ucinetsoftware/home','images/tools/0/252.png',0,0,'2018-10-18','https://sites.google.com/site/ucinetsoftware/document',NULL,'',NULL,0,'2013-05-13 18:46:46','2018-10-18 04:50:46',''),(253,NULL,'CATPAC','<p>CATPAC is a program available for purchase designed to summarize a text\'s main ideas. It is multilingual and primarily aimed at researchers in the sciences, and can handle large volumes of text. Text must be formatted in ASCII or RTF.</p> <p>The CATPAC website is no longer available or maintained as of 2014. An archived version of the site and its information can be viewed via the Internet Archive.</p>','https://web.archive.org/web/20120626154150/http://www.galileoco.com/N_catpac.asp',1,'Galileo','','http://www.galileoco.com/','images/tools/0/253.png',0,0,'2014-11-26','http://www.galileoco.com/N_manuals.asp',NULL,'',NULL,0,'2013-05-13 18:51:57','2017-10-31 14:25:28',''),(254,NULL,'TextQuest','<p>TextQuest is a text analysis program available for purchase. It is designed to conduct analysis ranging from word lists to concordances to content and readability analyses.</p>','http://www.textquest.de/pages/en/general-information.php?lang=EN',1,'Social Science Consulting','info@textquest.de','http://www.textquest.de/','images/tools/0/254.png',0,0,'2013-05-13','http://www.textquest.de/pages/en/analysis-of-texts.php',NULL,'',NULL,0,'2013-05-13 18:57:27','2017-10-31 14:25:28',''),(255,NULL,'Minnesota Contextul Content Analysis (MCCA)','<p>Minnesota Contextual Content Analysis is a free legacy tool that has been maintained online. It characterizes texts based on relative frequency, and generates statistical analysis from it. It also includes classifications and is designed to handle texts in a wide range of lengths.</p>','http://www.clres.com/cata/',1,'Ken Litkowski and Don McTavish','ken@clres.com','http://www.clres.com/','images/tools/0/255.png',0,0,'2013-05-13','http://www.clres.com/cata/',NULL,'',NULL,0,'2013-05-13 19:05:20','2017-10-31 14:25:28',''),(256,NULL,'WordStat','<p>WordStat is a commercial software package for content analysis and text mining on natural language text such as interview transcripts. It also includes features for automatic document tagging and classification.</p>','http://provalisresearch.com/products/content-analysis-software/',1,'Provalis Research','sales@provalisresearch.com','http://provalisresearch.com/','images/tools/0/256.png',0,0,'2018-11-06','http://provalisresearch.com/resources/manuals-2/',NULL,'',NULL,0,'2013-05-13 19:11:04','2018-11-06 06:37:17',''),(257,NULL,'Profiler Plus','<p>Profiler Plus is a commercial general-purpose text analysis program based on natural language processing. It supports multiple languages and can output in text, XML and CSV.</p>','http://socialscience.net/tech/ProfilerPlus.aspx',1,'Social Science Automation','','http://socialscience.net/','images/tools/0/257.png',0,0,'2013-05-13','http://socialscience.net/tech/ProfilerPlus.aspx',NULL,'',NULL,0,'2013-05-13 19:13:58','2017-10-31 14:25:29',''),(258,NULL,'Crawdad Text Analysis Software','<p>Crawdad is a commercial software package for qualitative data analysis based on natural language processing. It generates a network model of a text and calculates word influence based on its position within the network. It also includes visualization, classification and comparator features. A trial version is available by request.</p> <p>The Crawdad website is no longer maintained or available. It can still be viewed via the Internet Archive.</p>','',1,'Crawdad Technologies (Kevin Dooley, Steven Corman)','','http://www.crawdadtech.com/','images/tools/0/258.png',0,0,'2018-10-05','https://web.archive.org/web/20131012011342/http://www.crawdadtech.com/software.htm',NULL,'',NULL,0,'2013-05-13 19:23:19','2018-10-05 04:09:47',''),(259,NULL,'Tropes','<p>Tropes is a legacy commercial text analysis tool now available for free. It is designed for natural language processing and semantic classification, including chronological analysis of sequential pieces of text and summarization. It includes a graphical interface and can generate a variety of hypertext-based graphs.</p>','http://www.semantic-knowledge.com/tropes.htm',1,'Semantic Knowledge','info@semantic-knowledge.com','http://www.semantic-knowledge.com/','images/tools/0/259.png',0,0,'2013-05-13','http://www.semantic-knowledge.com/doc/V81/text-analysis/quick-guide.htm',NULL,'',NULL,0,'2013-05-13 19:26:44','2017-10-31 14:25:29',''),(260,NULL,'Yoshikoder','<p>Yoshikoder is a free, open source cross-platform content analysis program. It works with text documents to apply basic content analysis in any language, examine KWIC, generate summaries and generate content analysis dictionaries.</p>','http://yoshikoder.sourceforge.net/',1,'W. Lowe','wlowe [at] gov.harvard.edu','http://yoshikoder.sourceforge.net/','images/tools/0/260.png',0,0,'2013-05-13','http://yoshikoder.sourceforge.net/',NULL,'',NULL,0,'2013-05-13 19:30:45','2017-10-31 14:25:30',''),(261,NULL,'Lexa','<p>Lexa is a free legacy set of programs for corpus processing. It is designed to tag and lemmatize texts or series of texts. The website for Lexa is no longer maintained or active, but may still be viewed via the Internet Archive.</p>','https://web.archive.org/web/20131213200928/http://nora.hd.uib.no/lexainf.html',1,'Raymond Hickey','raymond.hickey@uni-due.de','https://www.uni-due.de/~lan300/HICKEY.htm','images/tools/0/261.png',0,0,'2018-09-18','https://web.archive.org/web/20120921041541/http://khnt.hit.uib.no/icame/up_002.htm',NULL,'',NULL,0,'2013-05-13 19:33:37','2018-09-18 16:46:18',''),(262,NULL,'TABARI (Text Analysis By Augmented Replacement Instructions)','<p>TABARI (Text Analysis By Augmented Replacement Instructions) is a legacy open-source successor to the KEDS program, written in C++ and maintained online to the present in an OS X edition. It runs in the Terminal command prompt, and is designed for analyzing short news stories such as wire service reports. It can determine who is acting against whom, the action and extract the date of the release.</p>','http://eventdata.parusanalytics.com/software.dir/tabari.html',1,'KEDS Project (Kansas Event Data System)','','http://web.ku.edu/~keds/index.html','images/tools/0/262.png',0,0,'2014-11-20','http://eventdata.parusanalytics.com/faq.html',NULL,'',NULL,0,'2013-05-13 19:37:56','2017-10-31 14:25:30',''),(263,NULL,'Ethnograph','<p>Ethnograph is a long-standing legacy software package, maintained into the present, for quantitative analysis and data management. It contains features for search, applying metadata and conducting corpus analysis.</p>','http://www.qualisresearch.com/default.htm',1,'Qualis Research','info@qualisresearch.com','http://www.qualisresearch.com/','images/tools/0/263.png',0,0,'2018-10-30','http://www.qualisresearch.com/TipsAndTricks.htm',NULL,'',NULL,0,'2013-05-13 20:12:24','2018-10-30 16:27:49',''),(264,NULL,'SALT (Statistic Analysis of Language Transcripts)','<p>SALT (Systemic Analysis of Language Transcripts) is a commercial software package for working with large datasets derived from transcripts. It includes transcription tools, text analysis based on natural language processing, content analysis, classification, and statistics. The Research version includes expanded search and metadata functions, and common text analysis functions such as word lists. A trial version is available.</p>','http://www.saltsoftware.com/',1,'SALT Software','info@saltsoftware.com','http://www.saltsoftware.com/company/contact/','images/tools/0/264.png',0,0,'2018-11-06','http://saltsoftware.com/resources/',NULL,'',NULL,0,'2013-05-13 20:35:35','2018-11-06 06:59:38',''),(265,NULL,'Voyant RezoViz','<p>Voyant RezoViz is a free, web-based tool in the Voyant toolset for visualizing the relationships between people, locations and organizations in a text or collection of texts.</p>','http://voyant-tools.org/tool/RezoViz/',1,'Stéfan Sinclair and Geoffrey Rockwell','sgs@mcmaster.ca','http://stefansinclair.name/','images/tools/0/265.png',0,0,'2018-10-05','http://docs.voyant-tools.org/tools/rezoviz/',NULL,'',NULL,0,'2013-05-13 21:07:32','2018-10-05 03:03:21',''),(266,NULL,'TEXTPACK V','<p>TEXTPACK V is a historic collection of interrelated text analysis utilities first released for mainframe computers in the 1970s. With the fifth edition, released in the 1980s, it was ported from FORTRAN to run on PC.</p>','',1,'Peter Mohler and Cornelia Zuell of ZUMA (Zentrum fur Umfragen, Methoden und Analysen); original implementation by Jurgen Hoehe, Hans-Dieter Klingemann and Klaus Radermacher','','','images/tools/0/266.png',0,0,'2014-01-15','http://',NULL,'',NULL,0,'2013-05-23 21:42:48','2017-10-31 14:25:31',''),(267,NULL,'INRAC Language Compiler','<p>INRAC was an early language compiler useful for prototyping natural language processing interfaces, designing conversational systems, and experimental prose and poetry.</p>','',1,'INRAC, Inc.','','','images/tools/0/267.png',0,0,'2014-12-29','http://',NULL,'',NULL,0,'2013-05-23 21:52:03','2017-10-31 14:25:31',''),(268,NULL,'Parser 1.0','<p>Parser 1.0 was a commercial program running in DOS for analyzing English-language text, aimed at academics and other researchers.</p>','',1,'Prospero Software','','','images/tools/0/268.png',0,0,'2014-02-25','http://',NULL,'',NULL,0,'2013-05-23 21:58:11','2017-10-31 14:25:32',''),(269,NULL,'FANGORN','<p>FANGORN was a historically important programming language designed for linguistic analysis in the humanities.</p>','',1,'University of Aarhus','','','images/tools/0/269.png',0,0,'2014-12-29','http://',NULL,'',NULL,0,'2013-05-24 20:15:01','2017-10-31 14:25:32',''),(270,NULL,'STASEL (Stylistic Treatment at the Sentence Level)','<p>STASEL (Stylistic Treatment at the Sentence Level) is a historically important program designed to analyze text. It was intended for language and style instruction, but had research-based applications.</p>','',1,'Julie Payette and Graeme Hirst','','','images/tools/0/270.png',0,0,'2014-12-29','http://',NULL,'',NULL,0,'2013-05-24 20:25:41','2017-10-31 14:25:32',''),(271,NULL,'Morfogen, Morffile/Morfword, Inflword (Version 2.0)','<p>Morfogen, Morffile/Morfword and Inflword were four historicially important interrelated tools offered as and designed to operate as single package. Morfogen is a finite state compiler for morphological analysis, while Morffile and Morfword utilize Morfogen\'s compiled rules. Morffile searches a text and replaces them with either their base form or a base form followed by morpheme names. Morfword takes a word input by the user and generates its base forms and morpheme names. Inflword generates inflected words.</p>','',1,'Executive Communication Systems, Inc.','','','images/tools/0/271.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2013-05-24 20:49:14','2017-10-31 14:25:32',''),(272,NULL,'E-Parser','<p>E-Parser was a deterministic parsing system with a syntax of \'heuristic rules\' derived from a GB-related parsing system.</p>','',1,'Torbjorn Nordgard','','','images/tools/0/272.png',0,0,'2014-12-29','http://',NULL,'',NULL,0,'2013-05-24 21:04:51','2017-10-31 14:25:33',''),(273,NULL,'ESTMORF','<p>ESTMORF was a historically important morphological analyzer designed specifically for Estonian text. it included stemming, word classification, suffix identification and so forth.</p>','http://www.eki.ee/keeletehnoloogia/projektid/estmorf/',1,'Heiki-Jaan Kaalep','hkaalep@psych.ut.ee','','images/tools/0/273.png',0,0,'2018-09-27','http://www.filosoft.ee/html_morf_et/morfoutinfo.html',NULL,'',NULL,0,'2013-05-24 21:18:51','2018-09-27 01:20:53',''),(274,NULL,'NITE XML Toolkit (NXT)','<p>The NITE XML Toolkit (NXT) is an open source toolkit for working with language corpora, particularly useful for multimodal and cross-annotated data sets.</p>','http://groups.inf.ed.ac.uk/nxt/index.shtml',1,'Jean Carletta, Stefan Evert, Ulrich Heid and Jonathan Kilgour','','','images/tools/0/274.png',0,0,'2018-11-07','http://groups.inf.ed.ac.uk/nxt/documentation.shtml',NULL,'',NULL,0,'2013-05-24 21:37:43','2018-11-07 05:17:00',''),(275,NULL,'PL/I','<p>PL/I was an early programming language commonly used for humanities research, developed at a time when most programming languages were not intended to work with strings of text. In addition to direct processing, it was also used to program systems and tools developed specifically for the humanities.</p>','',1,'Jack Heller and George W. Logemann','','','images/tools/0/275.png',0,0,'2018-11-07','http://',NULL,'',NULL,0,'2013-05-24 21:58:58','2018-11-07 04:57:02',''),(276,NULL,'SNAP','<p>SNAP was a historically important programming language designed specificially for humanists. It used plain-English syntax, and was particularly suited for automating text processing tasks.</p>','',1,'Michael P. Barnett (Columbia University)','','','images/tools/0/276.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2013-05-24 22:06:49','2018-10-26 01:01:21',''),(277,NULL,'SOLAR (A Semantically Oriented Lexical ARchive)','<p>SOLAR (A Semantically Oriented Lexical ARchive) was a historically important program originally available only over ARPAnet. It facilitated the semantic and conceptual analysis of English-language texts.</p>','',1,'Timothy Diller and John Olney','','','images/tools/0/277.png',0,0,'2014-01-08','http://',NULL,'',NULL,0,'2013-05-24 22:11:14','2017-10-31 14:25:34',''),(278,NULL,'OPCOL','<p>OPCOL was an algorithm developed in the mid-1970s for optimizing the efficiency of text collation from a computer science perspective, created by Robert L. Cannon, Jr. of the University of South Carolina.</p>','',1,'Robert L. Cannon, Jr.','','','images/tools/0/278.png',0,0,'2014-12-10','http://',NULL,'',NULL,0,'2013-05-27 21:36:36','2017-10-31 14:25:34',''),(279,NULL,'FISHER','<p>FISHER was a string-handling package for the FORTRAN programming language. It enabled researchers to manipulate characters and character strings with greater ease than FORTRAN permitted by itself.</p>','',1,'A.C. Day, University College London','','','images/tools/0/279.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2013-05-27 21:51:52','2018-10-26 00:55:11',''),(280,NULL,'Icon','<p>Icon is a historically important programming language that builds on SNOBOL to extend its utility to groups like humanists.</p>','http://www.cs.arizona.edu/icon/',1,'Ralph Griswald','','','images/tools/0/280.png',0,0,'2018-10-26','http://www.cs.arizona.edu/icon/',NULL,'',NULL,0,'2013-05-27 22:00:33','2018-10-26 00:55:05',''),(281,NULL,'REDUX','<p>REDUX was a natural language processing program for making generalizations from cases such as case studies, legal cases, case histories and so forth. It searched for repeated patterns, and was presented as a metalanguage for the analysis of the behavior of types.</p>','',1,'Robert Abramson','','','images/tools/0/281.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2013-05-27 22:13:44','2017-10-31 14:25:35',''),(282,NULL,'Linear Modelling Kit','<p>The Linear Modelling Kit was a tool for modelling structuralist ideas about narrative, intended for use in literature courses.</p>','',1,'Peter Havholm and Larry Stewart','','','images/tools/0/282.png',0,0,'2014-02-10','http://',NULL,'',NULL,0,'2013-05-27 22:26:38','2017-10-31 14:25:35',''),(283,NULL,'ELSE','<p>ELSE was a historically important tool developed to assist the instruction of French and Danish with sophisticated error analysis.</p>','',1,'John Robin Allen','','','images/tools/0/283.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2013-05-27 22:39:37','2017-10-31 14:25:35',''),(284,NULL,'Collocate','<p>Collocate was a tool for language-independent corpus exploration. It interpreted concordances by assessing the significance of co-occuring words.</p>','http://',1,'John Sinclair, Oliver Mason, Jackie Ball and Geoff Barnbrook','','http://','images/tools/0/284.png',0,0,'2013-05-27','http://',NULL,'',NULL,0,'2013-05-27 22:46:45','2017-10-31 14:25:36',''),(285,NULL,'Typical','<p>Typical was a tool for language-independent corpus exploration. It assessed the significance of co-occuring words in a line and evaluated the significance of the whole line, to help in disambiguating words and finding characteristic example lines.</p>','',1,'John Sinclair, Oliver Mason, Jackie Ball and Geoff Barnbrook','','','images/tools/0/285.png',0,0,'2018-09-18','http://',NULL,'',NULL,0,'2013-05-27 22:52:09','2018-09-18 17:17:58',''),(286,NULL,'TATOE (Text Analysis Tool with Object Encoding)','<p>TATOE (Text Analysis Tool with Object Encoding) was a tool for&nbsp;developing limited-context grammar rules for automated markup.</p>','',1,'unknown','','','images/tools/0/286.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2013-05-27 23:02:17','2017-10-31 14:25:36',''),(287,NULL,'SENSE (Self-Expanding linguistic knowledge base from Sense Elicitation)','<p>SENSE (Self-Expanding linguistic knowledge base from Sense Elicitation) was a historically important natural language processing system particularly useful for word sense disambiguation.</p>','',1,'Stefano Federici, Simonetta Montemagni and Vito Pirrelli (Istituto di Linguistica Computazionale)','','','images/tools/0/287.png',0,0,'2014-12-29','http://',NULL,'',NULL,0,'2013-05-30 20:14:16','2017-10-31 14:25:37',''),(288,1,'Prism','<p>Prism is a visualization tool that represents texts based on crowdsourced interpretations. Users are encouraged to highlight words in a text according to categories (\"facets\"). Users\' individual interpretations contribute to a visualization combining the interpretations of all users of the text. As such, it reveals patterns in subjective readings of a text.</p>','http://prism.scholarslab.org/',1,'Scholars\' Lab (University of Virginia)','','http://www2.lib.virginia.edu/scholarslab/','images/tools/0/288.png',0,0,'2018-11-06','http://prism.scholarslab.org/pages/about?locale=en',NULL,'https://github.com/scholarslab/prism',NULL,0,'2013-05-30 20:37:06','2018-11-06 03:52:07',''),(289,NULL,'ARRAS','<p>ARRAS is a historically important tool for analyzing and concording text. It notably provided inspiration for the TACT system.</p>','',1,'John B. Smith, Department of Computer Science, University of North Carolina','','','images/tools/0/289.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2013-06-03 17:06:06','2017-10-31 14:25:37',''),(290,1,'Digital Mappa','<p>The DM is an environment for studying and annotating images and texts. It enables users to link together images, texts, or fragments of images or texts, such as a textual annotation of an image or text. It is aimed at scholars of English and French literature, art history, and musicology, and to work with digitized Old English, Latin and Old French manuscripts, medieval maps and scrolls.</p>','https://digitalmappa.org/',1,'Martin Foys, Asa Mittman and Shannon Bradshaw','','','images/tools/0/290.png',0,0,'2018-10-06','http://',NULL,'',NULL,0,'2013-06-04 17:28:53','2018-10-06 01:10:25',''),(291,1,'Domeo Annotation Toolkit','<p>The Domeo Annotation Toolkit was an extensible web application for creating and sharing ontology-based stand-off annotations on HTML or XML documents. Users could add annotations manually, or via the tool\'s full or partial automation options. It also included functions for controlling access authorization and control for both personal and community annotations.</p>','',1,'Pauolo Ciccares and TIm Clark (Massachusets General Hospital)','paolo.ciccarese@gmail.com','','images/tools/0/291.png',0,0,'2018-10-05','http://swan.mindinformatics.org/v2.html',NULL,'https://github.com/domeo/domeo',NULL,0,'2013-06-04 17:49:14','2018-10-05 20:05:37',''),(292,1,'Quadrigram','<p>Quadrigram is an environment for data gathering, query and visualization, based on a visual programming language and intended for users with no experience programming or creating visualizations. At present, it contains 50 different visualizers.</p>','http://www.quadrigram.com/',1,'Bestairo','info@quadrigram.com','http://www.bestiario.org/','images/tools/0/292.png',0,0,'2018-10-02','http://www.quadrigram.com/become-an-expert/course',NULL,'',NULL,0,'2013-06-04 18:20:33','2018-10-02 16:15:50',''),(293,1,'Digitate','<p>Digitate is a free, open source application for making notes and annotations directly on an image of a cultural artifact such as a manuscript or a painting. Images can also be grouped into projects, saved for later or exported. This application is only available for the iPad.</p>','https://itunes.apple.com/us/app/digitate/id610952790?mt=8',1,'James O\'Sullivan','info@opendaht.org','http://josullivan.org/','images/tools/0/293.png',0,0,'2018-10-05','https://itunes.apple.com/us/app/digitate/id610952790?mt=8',NULL,'',NULL,0,'2013-06-04 18:30:43','2018-10-05 20:09:38',''),(294,NULL,'AustESE (Australian Electronic Scholarly Editing)','<p>AustESE (Australian Electronic Scholarly Editing) is a workbench environment for facilitating the prodiction of electronic scholarly editions. Its features include functions for text import, markup, collation, textual analysis, annotation and tagging.</p>','http://austese.net/',1,'University of Queensland','','','images/tools/0/294.png',0,0,'2018-10-12','http://austese.net/documentation',NULL,'',NULL,0,'2013-06-04 18:38:45','2018-10-12 03:29:20',''),(295,1,'Circos','<p>Circos is a free visualization tool for creating publication-quality infographics and illustrations. Its visualizations are arranged in a circle to facilitate exploring relationships between objects and positions, which also has the benefit of offering a high data-to-ink ratio. Though promoted for the sciences, it is highly flexible and can visualize datasets from a wide variety of fields.</p>','',1,'Martin Krzywinski; Michael Smith Genome Sciences Centre','martink@bcgsc.ca','http://www.bcgsc.ca/','images/tools/0/295.png',0,0,'2018-10-17','http://circos.ca/documentation/',NULL,'',NULL,0,'2013-06-04 18:53:33','2018-10-17 04:42:28',''),(296,1,'OpenRefine','<p>OpenRefine (formerly Google Refine) is a free, open-source tool for working with messy data. It enables users to clean data, transform it between a variety of formats, extend it with web services, and link it to databases. This tool is available for Windows, Mac and Linux.</p>','http://openrefine.org/',1,'OpenRefine Community','','http://openrefine.org/OpenRefine/community','images/tools/0/296.png',0,0,'2013-11-06','http://openrefine.org/documentation.html',NULL,'',NULL,0,'2013-06-04 19:28:17','2018-05-14 20:28:58',''),(297,1,'Classical Text Editor','<p>Classical Text Editor is a tool for scholars working on critical editions or an a text with commentary and translation, to aid in preparing a camera-ready copy or electronic publication. Its features includes but is not limited to collation, text retrieval, XML and HTML export and tagging, and a full range of formatting options. This tool has been in continuous development since 1997.</p>','http://cte.oeaw.ac.at//',1,'Stefan Hagel','stefan.hagel@oeaw.ac.at','http://homepage.univie.ac.at/Stefan.Hagel/','images/tools/0/297.png',0,0,'2018-10-30','http://',NULL,'',NULL,0,'2013-06-04 20:35:08','2018-10-30 16:23:56',''),(298,1,'Tesserae','<p>Tesserae is a web-based interface for exploring intertextual parallels. At this stage of the project, it only permits comparison of texts from three curated corpuses, representing selections from canonical Latin, Greek and English literature.</p>','http://tesserae.caset.buffalo.edu/',1,' University at Buffalo\'s Department of Classics and Department of Linguistics, and the VAST Lab of the University of Colorado at Colorado Springs.','','','images/tools/0/298.png',0,0,'2014-12-16','http://tesserae.caset.buffalo.edu/help.php',NULL,'',NULL,0,'2013-06-04 20:55:37','2018-05-14 20:29:11',''),(299,1,'Textexture','<p>Textexture is a free, web-based tool for visualizing texts as a network. The visualization gives a quick visual summary of the text. Clicking on nodes brings up the excerpts the tool has identified as most relivant, and permits users to locate similar texts. Users can upload their own text, or visualize texts from Textexture\'s library of public texts.</p>','http://textexture.com/',1,'Nodus Labs','','http://noduslabs.com/','images/tools/0/299.png',0,0,'2018-10-02','http://noduslabs.com/cases/textexture-non-linear-reading-machine/',NULL,'',NULL,0,'2013-06-04 21:11:36','2018-10-02 16:34:29',''),(300,1,'WordFreak','<p>WordFreak is a free, open-source tool for linguistic annotation. It is designed to support both human and automated annotation of linguistic data, and learns human corrections of automatically annotated data.</p>','http://wordfreak.sourceforge.net/',1,'Thomas Morton and Jeremy LaCivita','tsmorton@users.sourceforge.net','','images/tools/0/300.png',0,0,'2018-10-06','http://sourceforge.net/projects/wordfreak/',NULL,'',NULL,0,'2013-06-04 21:22:29','2018-10-06 00:25:19',''),(301,1,'UAM CorpusTool','<p>UAM CorpusTool is an annotation environment for text corpora in linguistic studies. It includes a graphical schema editor and saves annotations in XML format.</p>','http://www.wagsoft.com/CorpusTool/',1,'Mick O\'Donnell','michael.odonnell@uam.es','http://www.wagsoft.com/mick/index.html','images/tools/0/301.png',0,0,'2018-10-06','http://www.wagsoft.com/CorpusTool/documentation.html',NULL,'',NULL,0,'2013-06-04 21:32:50','2018-10-06 00:26:48',''),(302,1,'Lexomics','<p>Lexomics is a free tool for analyzing the frequency, distribution and arrangement of words in large-scale patterns.</p>','http://wheatoncollege.edu/lexomics/',1,'Wheaton College','','http://wheatoncollege.edu/','images/tools/0/302.png',0,0,'2013-06-04','https://github.com/richardneal/Lexomics',NULL,'',NULL,0,'2013-06-04 22:04:28','2018-05-14 20:29:51',''),(303,1,'WebLicht','<p>WebLicht is an architecture for creating annotated text corpora. It offers a fully-functional virtual research environment with chains of RESTful web services, each providing a linguistic tool such as format conversion, tokenizing, tagging or parsing. It outputs corpora as XML documents.</p>','http://weblicht.sfs.uni-tuebingen.de/weblichtwiki/index.php/Main_Page',1,'CLARIN-D','','http://clarin-d.net/en/','images/tools/0/303.png',0,0,'2018-10-06','http://weblicht.sfs.uni-tuebingen.de/weblichtwiki/index.php/FAQ#How_do_I_log_in_to_WebLicht.3F',NULL,'',NULL,0,'2013-06-05 17:29:11','2018-10-06 00:28:53',''),(304,NULL,'ANNIS (ANNotation of Information Structure)','<p>ANNIS (ANNotation of Information Structure), now in version 3.4.3, is an open source browser-based visualization architecture designed to annotate complex multilevel linguistic corpora. Now in its second version, ANNIS enables users to concurrently annotate, query and visualize data for syntax, semantics, morphology, prosody, referntiality, lexis and so forth. It also offers support for spoken language and audio and visual annotation.</p>','http://corpus-tools.org/annis/',1,'Krause,Thomas&Zeldes Amir','annis@corpus-tools.or','http://dsh.oxfordjournals.org/content/31/1/118','images/tools/0/304.png',0,0,'2018-09-18','http://www.sfb632.uni-potsdam.de/annis/download/ANNIS_User_Guide_3.0.0.pdf',NULL,'',NULL,0,'2013-06-05 18:05:03','2018-09-18 02:23:33',''),(305,1,'TimeRime','<p>TimeRime is a free, web-based timeline application for creating, viewing and comparing interactive timelines. This application requires registration, and timelines created within the application are public.</p>','http://www.timerime.com/',1,'Hoppinger','','http://www.hoppinger.com/','images/tools/0/305.png',0,0,'2018-11-06','http://www.timerime.com/en/page/help/5267/',NULL,'',NULL,0,'2013-06-05 18:40:40','2018-11-06 04:31:50',''),(306,1,'Neatline','<p>Neatline is a free, open-source geotemporal exhibit-builder for creating complex maps and narrative sequences from collections of archives and artifacts. It is first and foremost a suite of plugins for the Omeka framework, but can also be accessed as a web-based sandbox independent of Omeka.</p>','http://neatline.org/',1,'Scholars\' Lab (University of Virginia)','','http://www.scholarslab.org/','images/tools/0/306.png',0,0,'2018-11-23','http://docs.neatline.org/',NULL,'',NULL,0,'2013-06-05 19:02:07','2018-11-23 04:41:51',''),(307,1,'VisualEyes','<p>VisualEyes is web-based authoring tool for creating dynamic visualizations offered by the University of Virginia. It can be used to combine images, maps, charts, video and research data into a single visualization. It is comprehensively documented, including a reference guide to its XML structure and scripting, and to structuring data for inclusion.</p>','http://viseyes.org/visualeyes/',1,'Bill Ferster','bferster@virginia.edu','http://www.viseyes.org/bill.htm','images/tools/0/307.png',0,0,'2018-10-05','http://www.viseyes.org/',NULL,'',NULL,0,'2013-06-05 19:24:49','2018-10-05 18:58:14',''),(308,1,'LATtice','<p>LATtice is a free visualization tool for exploring and comparing texts across corpora. It also has features for \'drilling down\' to determine what rhetorical categories make texts similar or different, and shows multiple visualizations in the same view. Documentation is available with download, and LATtice is available in Windows, OS X and Linux versions.</p>','http://winedarksea.org/?p=1285',1,'Anupam Basu','','','images/tools/0/308.png',0,0,'2013-08-06','http://',NULL,'',NULL,0,'2013-06-05 19:45:28','2018-05-14 20:32:47',''),(309,1,'DocuScope','<p>DocuScope is a text analysis environment first developed in 1998. It contains a suite of interactive visualization tools for corpus-based rhetorical analysis. At present, DocuScope is not available outside the originating research group. However, the Working Group for Digital Inquiry at the University of Wisconsin-Madison is currently working on a working environment that includes much of DocuScope\'s functions.</p>','http://www.cmu.edu/hss/english/research/docuscope.html',1,'DocuScope Project','suguru@cmu.edu','','images/tools/0/309.png',0,0,'2018-09-27','http://',NULL,'',NULL,0,'2013-06-05 20:11:27','2018-09-27 21:37:33',''),(310,NULL,'CorpusSearch 2','<p>CorpusSearch 2 is a free Java-based program for constructing syntactically annotated (parsed) corpora and searching them. Its functions include finding and counting lexical and syntactic patterns, correcting systemic errors and coding linguistic features.</p>','http://corpussearch.sourceforge.net/',1,'Anthony Kroch, Beth Randall and Ann Taylor','','','images/tools/0/310.png',0,0,'2018-10-06','http://corpussearch.sourceforge.net/CS-manual/Contents.html',NULL,'',NULL,0,'2013-06-06 19:08:26','2018-10-06 00:43:34',''),(311,NULL,'TAMS Analyzer','<p>TAMS Analyzer is a tool designed to permit TAMS users to assign ethnographic codes to passages of text. It also has features for extracting, analyzing and saving the encoded information.</p>','http://tamsys.sourceforge.net/',1,'Matthew Weinstein','','http://','images/tools/0/311.png',0,0,'2013-06-06','http://tamsys.sourceforge.net/',NULL,'',NULL,0,'2013-06-06 20:11:11','2017-10-31 14:25:42',''),(312,NULL,'TAToo (Text Analysis For Me Too)','<p>TAToo (Text Analysis For Me Too) is a free, Flash-based widget affiliated with the TAPoR project. It is designed to be embedded into a web page, and can be run either from the user\'s own server or from the TAPoR server. The widget embeds TAPoR analytics into a web page, and can run analysis on text dragged and dropped into the provided field.</p>','http://ra.tapor.ualberta.ca/~tatoo/',1,'Peter Organisciak, Geoffrey Rockwell and Stan Ruecker','','http://','images/tools/0/312.png',0,0,'2013-06-06','http://tada.mcmaster.ca/Main/FlashTAT',NULL,'',NULL,0,'2013-06-06 20:28:56','2017-10-31 14:25:43',''),(313,1,'PAIR (Pairwise Alignment for Intertextual Relations)','<p>PAIR (Pairwise Alignment for Intertextual Relations) is a free, open source sequence alignment algorithm for humanities text analysis. It identifies similar passages in a large corpus. Corpuses are indexed for future use, and incoming texts can be compared against the entire corpus.</p>','http://code.google.com/p/text-pair/',1,'Mark Olsen and Russell Horton, Robert Voyer, Richard Whaling, Clovis Gladstone, and the rest of the ARTFL team.','','','images/tools/0/313.png',0,0,'2018-11-07','http://code.google.com/p/text-pair/w/list',NULL,'',NULL,0,'2013-06-06 20:47:41','2018-11-07 05:02:11',''),(314,NULL,'Google Ngram Viewer','<p>The Google Ngram Viewer is a free, web-based tool affiliated with Google Books. It displays a graph showing how a set of user-supplied phrases have occurred in a corpus of books over a selection of years. The tool includes functions for part-of-speech tagging, ngram compositions and word dependencies, to name a few.</p>','https://books.google.com/ngrams/',1,'Google Books','','http://books.google.com','images/tools/0/314.png',0,0,'2014-11-26','http://books.google.com/ngrams/info',NULL,'',NULL,0,'2013-06-10 20:12:44','2017-10-31 14:25:43',''),(315,NULL,'Concordle','<p>Concordle is a free, web based word cloud and concordance tool built in Javascript. It describes itself as the \"not so pretty cousin of Wordle\" and first debuted in 2006. Users can paste text into the provided box and generate a word cloud, concordance or list of words ordered by frequecy. It also includes a field for stop words.</p>','http://folk.uib.no/nfylk/concordle/',1,'Ladislav Kocbach','','http://web.ift.uib.no/~ladi/','images/tools/0/315.png',3,0,'2013-06-14','http://folk.uib.no/nfylk/concordle/',NULL,'',NULL,0,'2013-06-14 16:28:50','2017-10-31 14:25:43',''),(316,1,'HyperPo','<p>HyperPo is an important legacy tool, developed as the first web-based text analysis tool aimed at humanities scholars available from 1996 through 2006. Users could input a web address, upload a file or directly enter text for analysis. HyperPo\'s interface was available in both English and French. Though no longer available for use, a capture of HyperPo can be viewed through the Internet Archive\'s Wayback Machine.</p>','http://web.archive.org/web/20121110191405/http://hyperpo.org/',1,'Stéfan Sinclair','','http://stefansinclair.name/','images/tools/0/316.png',0,0,'2013-06-14','http://',NULL,'',NULL,0,'2013-06-14 16:54:04','2018-05-14 20:43:58',''),(317,NULL,'PRORA','<p>PRORA was a historically important set of six interrelated programs for creating computerized concordances, first released in the 1960s. It output on punched cards, could be used for any language represented by the Latin alphabet, and also had functions for generating word lists and annotating texts. Glickman and Staalman desgined PRORA to reduce the requirement for researchers to learn computers to use them in their literary studies.</p>','',1,'Robert Jay Glickman and Gerrit Joseph Staalman','','','images/tools/0/317.png',0,0,'2013-12-18','http://',NULL,'',NULL,0,'2013-06-14 17:19:08','2017-10-31 14:25:44',''),(318,NULL,'SCAN','<p>SCAN was a conversational programming language available in the 1970s for text analysis. It was specific to text processing and could be used divide a text into sentences or words or split on separators. It was capable of running counts on a text, printing particular sentences, checking whether a particular word has occured, matching word-patterns or finding alliterations.</p>','',1,'P.J. Wilson, University of Kent at Canterbury','','','images/tools/0/318.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2013-06-14 19:31:40','2018-10-26 00:50:56',''),(319,NULL,'CLAS (Computerized Language Analysis System)','<p>CLAS (Computerized Language Analysis System) was an important historic text analysis system available in the 1970s. It was written in PL/I for IBM 360/370 punch card machines and performed standard statistical tests and concordances on natural language texts.</p>','',1,'George A. Borden and James J. Watts','','','images/tools/0/319.png',0,0,'2014-01-03','http://',NULL,'',NULL,0,'2013-06-14 19:55:59','2017-10-31 14:25:44',''),(320,NULL,'SATO (Systeme d\'analyse des textes par ordinateur)','<p>SATO (Systeme d\'analyse des textes par ordinateur) is a longstanding historic text analysis system, now available as a free, web-based tool. Users can either draw off SATO\'s corpus or upload their own for analysis, and the texts for analysis may be in French, English or Spanish. It can perform standard text analysis functions such as word frequencies, comparisons, tokenizing and keyword in context, and has predefined filters for searches.</p>','http://www.ling.uqam.ca/sato/',1,'François Daoust (l\'Université du Québec à Montréal)','','','images/tools/0/320.png',0,0,'2018-11-07','http://www.ling.uqam.ca/sato/satoman-fr.html',NULL,'',NULL,0,'2013-06-19 20:01:24','2018-11-07 04:58:25',''),(328,NULL,'INL BlackLab','<p><strong>From the official BlackLab site:</strong> \"BlackLab is a corpus retrieval engine built on top of Apache Lucene. It allows fast, complex searches with accurate hit highlighting on large, tagged and annotated, bodies of text. It was developed at the Institute of Dutch Lexicology (INL) to provide a fast and feature-rich search interface on our historical and contemporary text corpora.</p> <p>BlackLab is licensed under the Apache License 2.0.\"</p> <p>BlackLab is not an end-user application, but an extension to Apache Lucene.  It requires programming experience to use.  Several sites have so far been built using BlackLab.  The BlackLab FAQ at https://github.com/INL/BlackLab/wiki/Frequently-Asked-Questions lists several of these.</p> <p>BlackLab is very useful as search engine for morphologically adorned corpora.  The principal search language syntax is similar to that of traditional corpus search engine tools such as the Corpus Workbench or the Sketch Engine.</p> <p> </p> <p> </p>','https://github.com/INL/BlackLab',1,'Institute of Dutch Lexicology','jan.niestadt@inl.nl','','images/tools/0/328.png',0,0,'2018-11-07','https://github.com/INL/BlackLab/wiki/BlackLab-blog',NULL,'',NULL,0,'2013-08-02 18:48:33','2018-11-07 04:59:19',''),(333,NULL,'The Chicago Homer','<p><span>The Chicago Homer is a multilingual database that uses the search and display capabilities of electronic texts to make the distinctive features of Early Greek epic accessible to readers with and without Greek. Except for fragments, it contains all the texts of these poems in the original Greek. In addition, the Chicago Homer includes English and German translations, in particular Lattimore\'s Iliad, James Huddleston\'s Odyssey, Daryl Hine\'s translations of Hesiod and the Homeric Hymns, and the German translations of the Iliad and Odyssey by Johan Heinrich Voss. Through the associated web site Eumaios users of the Chicago Homer can also from each line of the poem access pertinent Iliad Scholia and papyrus readings.</span></p> <p> </p>','http://digital.library.northwestern.edu/homer/',1,'Ahuvia Kahane and Martin Mueller, editors.  Craig Berry and Bill Parod, technical editors.','','','images/tools/0/333.png',0,0,'2018-11-06','http://digital.library.northwestern.edu/homer/tutorial.html',NULL,'',NULL,0,'2013-08-02 19:24:16','2018-11-06 06:47:04',''),(338,1,'Word and Phrase','<p>Word and Phrase is a free, web-based text analysis tool created by Dr. Mark Davies of Brigham Young University. Users can paste texts directly into the box provided. The tool provides a range of detailed information on a text\'s words and phrases, on one screen with a single search.</p>','http://www.wordandphrase.info/',1,'Mark Davies','','http://davies-linguistics.byu.edu/personal/','images/tools/0/338.png',4,0,'2018-11-06','http://www.wordandphrase.info/faq.asp',NULL,'',NULL,0,'2013-08-15 18:25:47','2018-11-06 06:39:27',''),(340,1,'NewRadial (INKE)','<p>NewRadial is an interactive visualization environment from the INKE team. It is designed to permit search, sorting and manipulation of database objects, commentary on connections and associations between database objects, and offer a place for large edition projects to create curated environments, browse them and encourage secondary scholarship on them. A web version is available with a number of databases for exploration, including the Canturbury Tales, Shakespeare quartos and selected novels and poetry.</p>','http://inke.acadiau.ca/newradial/',1,'Jon Saklofske, Jake Bruce and the INKE Modelling and Prototyping Team','','','images/tools/0/340.png',0,0,'2013-08-20','http://sourceforge.net/projects/newradial-inke/',NULL,'',NULL,0,'2013-08-20 21:44:46','2018-05-14 20:28:02',''),(341,1,'TextGrid','<p>TextGrid is a virtual research environment for text-based humanities scholarship. It offers a variety of tools and services for collaboratively creating, analyzing, editing and publishing texts. The TextGrid environment is split into two components, the Laboratory housing the tools and services, and the Repository for preserving reserach data and making it available to other scholars.</p>','http://www.textgrid.de/en/',1,'Dr. Heike Neuroth and the TextGrid Team','textgrid-extern@gwdg.de','http://www.textgrid.de/','images/tools/0/341.png',4,0,'2018-10-30','https://dev2.dariah.eu/wiki/display/TextGrid/Main+Page',NULL,'',NULL,0,'2013-08-21 16:47:51','2018-10-30 15:59:51',''),(342,NULL,'Text Variation Explorer (TVE)','<p>Text Variation Explorer (TVE) is a Java tool for text visualization. TVE enables users to explore the effect of window size on a text\'s type-token ratio, proportion of hapax legomena and average word length; it can also cluster text fragments based on principal component analysis and has text comparison features. TVE is in beta and is presented \'as is\'.</p>','http://www.uta.fi/sis/tauchi/virg/projects/dammoc/tve.html',1,'Harri Siirtola & the DAMMOC project','harri.siirtola@sis.uta.fi','http://www.uta.fi/sis/tauchi/virg/projects/dammoc.html','images/tools/0/342.png',0,0,'2018-09-28','http://',NULL,'',NULL,0,'2013-08-21 17:27:24','2018-09-28 03:16:06',''),(343,1,'Pliny','<p>Pliny was a tool for working with annotations when conducting personal scholarly research, and can be used with both digital and print materials. It also had data manangement and organizational features, and was designed to facilitate reading, reacting to that reading and forming an interpretation. Pliny stored all data on the user\'s computer rather than remotely on the web.</p>','http://pliny.cch.kcl.ac.uk/',1,'John Bradley','john.bradley@kcl.ac.uk','','images/tools/0/343.png',0,0,'2018-10-05','http://pliny.cch.kcl.ac.uk/setup.html',NULL,'',NULL,0,'2013-08-26 16:58:34','2018-10-05 19:02:07',''),(345,1,'Virtual Lightbox','<p>Virtual Lightbox is a Java-base tool for comparing images online developed for the academic humanities, the library and museum community, and any users who use images as an important data type. It is available as both an application, which functions as a virual whiteboard and includes peer-to-peer, and an applet, which provides a flexible environment for image comparison. Virtual Lightbox was first developed in 2000, with version 2.0 of applet released in 2004.</p>','http://mith.umd.edu/lightbox/',1,'Matthew Kirschenbaum, Amit Kumar and MITH','lighbox-feedback@mith2.umd.edu','','images/tools/0/345.png',0,0,'2018-09-27','http://mith.umd.edu/lightbox/help.html',NULL,'',NULL,0,'2013-08-30 18:04:49','2018-09-27 01:15:36',''),(348,NULL,'word2vec','<p>word2vec is a tool for computing vector representations of words for natural language processign and other related research. It generates a vocabulary from the user\'s text and learns a vector representation of its words.</p>','http://code.google.com/p/word2vec/',1,'word2vec Team','','http://code.google.com/p/word2vec/','images/tools/0/348.png',0,0,'2013-09-10','http://groups.google.com/forum/#!forum/word2vec-toolkit',NULL,'',NULL,0,'2013-09-10 19:48:18','2017-10-31 14:25:47',''),(349,NULL,'BookLamp','<p>BookLamp, part of the Book Genome Project, is a tool and a resource for finding books. It offers an alternative to social recommendation engines reliant on author popularity by treating its books as equal regardless of number of copies sold. BookLamp\'s goal is to match users to the books relevant to their interests as accurately as possible. Rather than genres, it uses \'StoryDNA\', which identifies the thematic ingredients important to a book\'s narrative, in addition to how prominent that ingredient is within the text.</p> <p>BookLamp has been retired as of April 2014 and the website is no longer available. The site has been captured by the Internet Archive, and may still be viewed there via the Wayback Machine.</p>','',1,'Book Genome Project','','http://bookgenome.com/','images/tools/0/349.png',4,0,'2018-10-30','https://web.archive.org/web/20140209050644/http://storytime.booklamp.org/booklamps-faq/',NULL,'',NULL,0,'2013-09-10 20:36:03','2018-10-30 16:10:36',''),(350,NULL,'BookLamp Labs: Stream Graph Viewer','<p>BookLamp\'s Stream Graph Viewer is a tool for viewing where and how much of a story element (\'StoryDNA\') appears in a book. Books can be searched by title or author, and then graphed for one or several pieces of StoryDNA.</p> <p></p>','',1,'Book Genome Project','','http://bookgenome.com/','images/tools/0/350.png',0,0,'2018-10-30','http://',NULL,'',NULL,0,'2013-09-11 18:20:44','2018-10-30 16:17:13',''),(351,NULL,'BookLamp Labs: StoryDNA Viewer','<p>BookLamp\'s StoryDNA Viewer is a corpus search tool designed to find all books sharing a user-selected set of characteristics (\'StoryDNA\'). From the resultant list, users can then view a book\'s entry in BookLamp to get more information about what characteristics it has, in what proportion, and in relation to other books in the database.</p>','',1,'Book Genome Project','','http://bookgenome.com/','images/tools/0/351.png',0,0,'2018-10-30','http://',NULL,'',NULL,0,'2013-09-11 18:47:05','2018-10-30 16:15:14',''),(352,NULL,'BookLamp Labs: Suggestion Viewer','<p>BookLamp\'s Suggestion Viewer is a faceted search and browser tool for finding new books based on how similar they are to another book. Users can search by either title or author and select the book to center the search on. The Suggestion Viewer then generates a radial visualization of other books similar to the central book, showing the strength of the connection by the thickness of the connecting line and characteristic (\'StoryDNA\'). Users can switch between StoryDNA connections via drop list, and can click on an outer book to recenter the tool on that book.</p> <p>BookLamp and its tools have been retired as of April 2014 and the website is no longer available. The main site has been captured by the Internet Archive (<a href=\"https://web.archive.org/web/20140210212627/http://booklamp.org/\">https://web.archive.org/web/20140210212627/http://booklamp.org/</a>) but this tool is not among the pages available there.</p>','',1,'Book Genome Project','','http://bookgenome.com/','images/tools/0/352.png',0,0,'2018-10-05','http://',NULL,'',NULL,0,'2013-09-11 19:14:42','2018-10-05 04:39:31',''),(353,NULL,'BookLamp Labs: Sentiment Viewer','<p>BookLamp\'s Sentiment Viewer is a visualization tool that graphs out a book\'s sentiments according to intensity and location in the text. Books to graph can be searched by title or author.</p>','',1,'Book Genome Project','','http://bookgenome.com/','images/tools/0/353.png',0,0,'2018-10-30','http://',NULL,'',NULL,0,'2013-09-11 19:30:14','2018-10-30 16:13:22',''),(354,NULL,'Weka (Waikato Environment for Knowledge Analysis)','<p>Weka (Waikato Environment for Knowledge Analysis) is a free Java-based data mining workbench of machine learning algorithms, offered by the Machine Learning Group of the University of Waikato. It includes tools for data pre-processing, classification, clustering and visualization, among others. Development on Weka began in the early 1990s and it is extensively documented.</p>','http://www.cs.waikato.ac.nz/ml/weka/',1,'University of Waikato Machine Learning Group','','http://www.cs.waikato.ac.nz/ml/index.html','images/tools/0/354.png',0,0,'2018-10-05','http://www.cs.waikato.ac.nz/ml/weka/documentation.html',NULL,'',NULL,0,'2013-10-09 18:41:12','2018-10-05 02:45:58',''),(355,NULL,'Textometrica','<p>Textometrica is a free, web based text analysis tool offered by HUMlab at Umeå University. Users can upload a plain-text file and examine its word frequencies, see co-occurrences, and generate visualizations and graphs.</p>','http://www.humlab.umu.se/en/research-development/textometrica/',1,'Simon Lindgren and Fredrik Palm','','http://www.humlab.umu.se/en/about/humlab/','images/tools/0/355.png',0,0,'2018-10-05','http://',NULL,'',NULL,0,'2013-10-09 19:07:47','2018-10-05 02:47:06',''),(356,NULL,'SIMILE Widgets: Welkin','<p>Welkin is a free tool for visualizing complex RDF models offered for download by the SIMILE Project. Rather than permitting users to focus on specific nodes, it provides analytical views such as an overview of a dataset\'s connectivity or potential mappings between resources and ontologies. It runs best through Java WebStart and is compatible with Windows, OS X and Linux.</p>','http://simile.mit.edu/welkin/',1,'Stefano Mazzocchi, Paolo Ciccarese','','http://simile.mit.edu/welkin/','images/tools/0/356.png',0,0,'2018-10-26','http://simile.mit.edu/welkin/guide.html',NULL,'',NULL,0,'2013-10-11 17:42:22','2018-10-26 01:09:34',''),(357,NULL,'LodLive','<p>LodLive is a web-based tool developed to demonstrate Linked Data standards applied to browsing RDF resources with a simple interface. Users can search preset datasets, including DBpedia and Freebase, or search a resource available at a web address of the user\'s choice. LodLive is also available for download.</p>','http://en.lodlive.it/',1,'Diego Valerio Camarda, Silvia Mazzini, Alessandro Antonuccio','','http://en.lodlive.it/','images/tools/0/357.png',4,0,'2018-10-26','http://blog.lodlive.it/',NULL,'',NULL,0,'2013-10-30 23:08:06','2018-10-26 01:09:11',''),(358,NULL,'Tom Sawyer Perspectives','<p>Tom Sawyer Perspectives is a commercial software package for data visualization and analysis. It provides a graphical software development kit and preview environment, including layout and Tom Sawyer Software\'s proprietary data visualization reference architecture. The SDK is particularly aimed at developers seeking to create data-oriented visualization applications, and permits users to customize with toolbars, context menus, and editing behaviour, to name a few. Applications are designed to enable design sharing and reuse, including via web application deployment. The Java version of Tom Sawyer Perspectives is available for Windows, OS X and Linux environments, and .NET for Windows only. Evaluation copies are available on request; no prices are quoted on the site.</p>','https://www.tomsawyer.com/products/perspectives/',1,'Tom Sawyer Software','publicrelations@tomsawyer.com','https://www.tomsawyer.com/company/index.php#contact','images/tools/0/358.png',0,0,'2018-10-05','https://www.tomsawyer.com/products/perspectives/',NULL,'',NULL,0,'2013-11-01 21:36:04','2018-10-05 02:49:24',''),(359,NULL,'TextDNA','<p>TextDNA is a free tool for large-scale overview analysis of linguistic data offered by the University of Wisconsin, Madison. It identifies patterns within a text, and enables users to compare ordered sets of data with its sequence visualization. It can be used with texts stored in databases, Google N-Grams datasets and CSV files.</p>','http://graphics.cs.wisc.edu/Vis/SequenceSurveyor/TextDNA.html',1,'University of Wisconsin, Madison Graphics Group','dalbers@cs.wisc.edu','http://graphics.cs.wisc.edu/','images/tools/0/359.png',0,0,'2018-10-05','http://graphics.cs.wisc.edu/Vis/SequenceSurveyor/TextDNA_User.html',NULL,'',NULL,0,'2013-11-05 18:52:55','2018-10-05 02:49:45',''),(360,NULL,'Prefuse','<p><span>Prefuse is a Java framework for creating interactive information visualization applications from the University of California at Berkeley\'s Visualization Lab. It can be used to design standalone applications, visual components within other applications and web applets.</span></p>','http://prefuse.org/',1,'University of California Berkeley Visualization Lab','lists@sourceforge.net','https://github.com/prefuse/Prefuse','images/tools/0/360.png',0,0,'2018-10-05','http://prefuse.org/doc/',NULL,'',NULL,0,'2013-11-14 21:51:28','2018-10-05 02:50:09',''),(361,NULL,'OntoViz','<p>OntoViz is a tab widget included in the Prot&eacute;g&eacute; software package for visualizing Prot&eacute;g&eacute; ontologies in conjunction with GraphViz. It allows developers to manage and configure visualizations according to their needs.</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p> <p>&nbsp;&nbsp;</p> <p>&nbsp; &nbsp; &nbsp;&nbsp;</p> <p>&nbsp;</p>','http://protegewiki.stanford.edu/wiki/OntoViz',0,' Stanford Center for Biomedical Informatics Research','Michael.Sintek@dfki.de','http://protegewiki.stanford.edu/wiki/OntoViz','images/tools/0/361.png',0,0,'2013-11-29','http://protegewiki.stanford.edu/wiki/OntoViz#Documentation',NULL,'',NULL,0,'2013-11-14 22:47:12','2017-10-31 14:25:50',''),(362,NULL,'NeOn Toolkit','<p><span>The NeOn Toolkit is an open source environment for engineering ontologies. It supports both the F-logic and OWL ontologies, and its functions include annotation, documentation, ontology evaluation and matching and human-ontology interaction.</span></p>','http://neon-toolkit.org/wiki/Main_Page.html',1,'NeOn Foundation','','http://neon-toolkit.org/wiki/About_Us.html','images/tools/0/362.png',0,0,'2018-10-06','http://neon-toolkit.org/wiki/Documentation_and_Support',NULL,'http://neon-toolkit.org/wiki/Developer_Corner.html',NULL,0,'2013-11-15 00:07:42','2018-10-06 00:59:53',''),(363,NULL,'RDF Gravity','<p>RDF Gravity (RDF Graph Visualization Tool) is a free, open-source visualization tool from Salzburg Research\'s Knowledge Information Systems Group. It supports RDF graph structures and OWL ontologies, including multiple RDF files, and offers a variety of filters for its visualizations.</p>','',1,'Sunil Goyal and Rupert Westenthaler, Salzburg Research','','http://www.salzburgresearch.at/','images/tools/0/363.png',0,0,'2018-09-18','http://semweb.salzburgresearch.at/apps/rdf-gravity/user_doc.html',NULL,'',NULL,0,'2013-11-15 00:39:36','2018-09-18 02:28:22',''),(364,NULL,'Visual Browser','<p><span>Visual Browser is a Java application for visualizing RDF data using the Jena framework. The resultant graphs are animated and permit users to expand and hide nodes and switch the view of edges, allowing them to focus on a small part of the network. The visualization engine is derived from TouchGraph LLC and follows the navigation approach of WebOFDAV, a system based on the concept of exploratory navigation to reduce chances of getting “lost in hyperspace” situation. </span>    </p>','http://nlp.fi.muni.cz/projekty/visualbrowser',1,'Masaryk University Natural Language Processing Centre','xpopelk@fi.muni.cz','http://nlp.fi.muni.cz/','images/tools/0/364.png',0,0,'2018-10-26','http://nlp.fi.muni.cz/projekty/visualbrowser/#sec04',NULL,'',NULL,0,'2013-11-22 00:05:28','2018-10-26 01:08:12',''),(365,NULL,'RDF2SVG (Rhizomik)','<p><span>RDF2SVG is a web-based tool from the Rhizomik initiative for transforming RDF/XML data into an SVG representation. It can also accept N-triples and N3 input, and includes a feature for filtering the user\'s defined preferred language from the source data. </span>  </p>','http://rhizomik.net/html/redefer/rdf2svg-form/',1,'GRIHO (Human-Computer Interaction and data integration) Research Group','contact@rhizomik.net','http://griho.udl.cat/','images/tools/0/365.png',0,0,'2018-10-26','http://rhizomik.net/html/',NULL,'',NULL,0,'2013-11-22 16:35:00','2018-10-26 01:06:55',''),(366,NULL,'RelFinder','<p>RelFinder is an RDF relationship discovery tool developed as part of the Visual Data Web toolset and based on the Adobe Flex open source framework. It is designed to provide an overview of RDF data through interactive visualization and exporation. Features include highlighting and filtering, and the tool permits both global and detail views. It is optimized for RDF data that provided standard SPARQL access.</p>','http://www.visualdataweb.org/relfinder.php',1,'DEI Interactive Systems Group','contact@visualdataweb.org','http://www.visualdataweb.org/people.php','images/tools/0/366.png',0,0,'2018-10-26','http://www.visualdataweb.org/relfinder.php',NULL,'',NULL,0,'2013-11-22 18:11:18','2018-10-26 01:06:11',''),(367,NULL,'W3C RDF Validation Service','<p><span>The W3C RDF Validation Service is a free, web-based tool for checking RDF documents for errors and displaying the results. It can display in triples, a graph, or a combination of the two, and can format the graph in a variety of file formats including PNG, SVG and GIF. Documents can be pasted directly into the provided form or from a provided URI.</span></p>','http://www.w3.org/RDF/Validator/',1,'W3C Semantic Web Activity','semantic-web@w3.org','http://www.w3.org/RDF/Interest/','images/tools/0/367.png',0,0,'2018-10-26','http://www.w3.org/RDF/Validator/documentation',NULL,'',NULL,0,'2013-11-22 18:39:43','2018-10-26 01:05:35',''),(368,NULL,'Google Charts','<p>Google Charts (formerly the Google Visualization API) is a web-based interface for interactive data visualization via HTML5 and SVG. It includes a number of preset chart types ranging from line charts to word trees and all are customizable. A separate selection of user community contributed chart types is also available. Within a chart, the API identifies events that users can trigger with presets ranging from simple clicks to Javascript methods, and enable users to construct chart dashboards that can be embedded in their website along with the chart proper.</p>','https://developers.google.com/chart/',1,'Google Developers','','https://developers.google.com/','images/tools/0/368.png',0,0,'2018-10-05','https://developers.google.com/chart/interactive/docs/quick_start',NULL,'',NULL,0,'2013-11-29 18:55:16','2018-10-05 02:53:45',''),(369,NULL,'Wiki Map Project ','<p>Wiki Map Project was designed by Protovis and jQuery to visualize the data provided by Wikipedia. The program provides data animation and graph visualization with an option to explore the nodes connections. &nbsp;</p>','http://ickn.org/wikimaps/',0,'MIT Center for Collective Intelligence','pgloor@mit.edu','http://ickn.org/','images/tools/0/369.png',0,0,'2013-11-30','http://',NULL,'',NULL,0,'2013-11-30 01:53:16','2017-10-31 14:25:52',''),(370,NULL,'EURAC: interHist','<p>interHist is a free visualization prototype offered by EURAC and implemented in JavaScript using the D3.js library. It enables users to interactively explore concordances from search queries and can accomodate large result sets in its display.</p>','http://www.eurac.edu/en/research/autonomies/commul/projects/Pages/Linfovis/programs.aspx#interhist',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/370.png',0,0,'2018-10-17','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/interHist.html',NULL,'',NULL,0,'2013-12-04 21:50:45','2018-10-17 02:15:12',''),(371,NULL,'EURAC: Extended Linguistic Dependency Diagrams (xLDDs)','<p>The Extended Linguistic Dependency Diagrams (xLDDs) is a visualization software package offered by EURAC and implemented in JavaScript using the Protovis tookit. The xLDDs shows dependency structures with dynamic interaction in its visualizations, and can accomodate various types of linguistic information.</p>','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/ExtendedLinguisticDependencyDiagrams.html',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/371.png',0,0,'2013-12-04','http://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/ExtendedLinguisticDependencyDiagrams.html',NULL,'',NULL,0,'2013-12-04 21:51:20','2017-10-31 14:25:52',''),(372,NULL,'EURAC: Structured Parallel Coordinates','<p>Structured Parallel Coordinates is a free JavaScript data visualization tool offered by EURAC. It is intended for data that contains some kind of structure, such as temporal ordering, strings or ranked orderings. EURAC has provided several examples, such as ngram comparisons, (sub)corpus comparison and KWIC with live corpus queries.</p>','',1,'EURAC','','http://www.eurac.edu/en/eurac/welcome/default.html','images/tools/0/372.png',0,0,'2018-09-21','http://www.eurac.edu/ehttp://www.eurac.edu/en/research/institutes/multilingualism/Projects/LInfoVis/StructuredParallelCoordinates.htmln/research/institutes/multilingualism/Projects/LInfoVis/interHist.html',NULL,'',NULL,0,'2013-12-04 22:43:08','2018-09-21 00:18:40',''),(373,NULL,'SplitsTree4','<p>SplitsTree4 is a free Java tool for generating phylogenic (similarity) networks from Universitat Tubingen. While designed for molecular sequence data, it can also visualize humanities data such as document sequence alignments.</p>','http://ab.inf.uni-tuebingen.de/software/splitstree4/',1,'Daniel Huson and David Bryant (Universitat Tubingen)','','http://www.splitstree.org','images/tools/0/373.png',0,0,'2018-10-05','http://ab.inf.uni-tuebingen.de/data/software/splitstree4/download/manual.pdf',NULL,'',NULL,0,'2013-12-05 19:45:37','2018-10-05 03:01:32',''),(374,NULL,'CMU-Cambridge Statistical Language Modelling Toolkit','<p>The CMU-Cambridge Statistical Language Modelling Toolkit is a longstanding set of Unix tools offered by Carnegie Mellon University and Cambridge University. It includes functions for word frequency, n-grams, vocabulary and words marked as \'context cues\'. Version 1 was written by Roni Rosenfel and released in 1994.</p>','http://svr-www.eng.cam.ac.uk/~prc14/toolkit.html',1,'Philip R. Clarkson and Roni Rosenfeld','','','images/tools/0/374.png',0,0,'2013-12-05','http://svr-www.eng.cam.ac.uk/~prc14/toolkit_documentation.html',NULL,'',NULL,0,'2013-12-05 20:25:16','2017-10-31 14:25:53',''),(375,NULL,'Automatic Mapping Among Lexico-Grammatical Annotation Models (AMALGAM)','<p>Automatic Mapping Among Lexico-Grammatical Annotation Models (AMALGAM) is a free, longstanding tool for tagging text according to part of speech (PoS) from Leeds University. It includes eight PoS tag schemes, and a Multi-Tagged Corpus of samples tagged with various schemas.</p>','',1,'Eric Atwell and the Leeds University NLP Research Group','','http://www.comp.leeds.ac.uk/nlp/','images/tools/0/375.png',0,0,'2018-10-06','http://www.scs.leeds.ac.uk/ccalas/amalgam/amalgover.html',NULL,'',NULL,0,'2013-12-05 21:04:05','2018-10-06 01:02:49',''),(376,NULL,'TnT (Trigrams\'n\'Tags)','<p>TnT, which is short for Trigrams\'n\'Tags, is a statistical part-of-speech tagger from Universitat de Saarlandes. It can be trained on a variety of corpora and languages, and is based on the Viterbi algorithm for second order Markov models. It includes language models for English and German. This program is only available on request.</p>','http://www.coli.uni-saarland.de/~thorsten/tnt/',1,'Thorsten Brants, Universitat de Saarlandes Computational Linguistics','','http://www.coli.uni-sb.de/','images/tools/0/376.png',0,0,'2013-12-05','http://www.coli.uni-saarland.de/~thorsten/publications/Brants-TR-TnT.pdf',NULL,'',NULL,0,'2013-12-05 21:26:36','2017-10-31 14:25:54',''),(377,NULL,'YAGO','<p><span>YAGO is a semantic knowledge base of over 10 million entities, and over 120 million facts about those entities, developed by the Max Planck Institut Informatik. Its base derives from Wikipedia, WordNet and GeoNames, and the accuaracy has not only been manually evaluated, but relations are also provided with an annotation stating its confidence value. The YAGO ontology includes spacial and temporal dimensions, and integrates WordNet\'s thematic domains as well. It can be queried or browsed right from the website, and the full ontology is available for download. <br></span></p>','http://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/',1,'Max Planck Institute for Informatics','NameOfTheOntology@mpi-inf.mpg.de','http://www.mpi-inf.mpg.de/','images/tools/0/377.png',0,0,'2018-10-17','http://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/faq/',NULL,'',NULL,0,'2013-12-06 00:21:32','2018-10-17 05:11:37',''),(378,1,'Tableau Public','<p>Tableau Public is a free data visualization tool aimed at online publishers and academics. It can be used to create an interactive visualization, and also enables users to publish it to the web as an embed or share it via a link. Users must download the desktop interface, and all projects created through the system are saved remotely to the Tableau Public server rather than to the user\'s local machine. It is availabe for both Windows and OS X, and has a visual interface with a simple drag and drop process.</p>','http://www.tableausoftware.com/public',1,'Tableau Software','info-public@tableausoftware.com','http://www.tableausoftware.com/','images/tools/0/378.png',0,0,'2018-11-07','http://kb.tableausoftware.com/',NULL,'',NULL,0,'2013-12-06 17:28:27','2018-11-07 01:13:07',''),(379,NULL,'IsaViz','<p>IsaViz is a visual authoring and data browsing tool for RDF models represented as graphs, developed by the W3C. permits uses to both create and edit graphs, and can render graphs from GSS stylesheets as a node-link diagram. It is freely available for download. This tool is no longer in active development.</p>','http://www.w3.org/2001/11/IsaViz/',1,'W3C','www-isaviz@w3.org','http://www.w3.org/','images/tools/0/379.png',0,0,'2018-10-26','http://www.w3.org/2001/11/IsaViz/install.html',NULL,'',NULL,0,'2013-12-06 18:05:26','2018-10-26 01:04:42',''),(380,NULL,'ProcessingJS','<p>ProcessingJS is an open source visual programming language for the work with data visualization, electronic arts and visual design communities. It operates under the web standards and doesn’t require any plug-ins. The tool promotes visual esthetics of computer programming on the web. ProcessingJS is a sister project to <a href=\"../../?highlight=process&amp;id=130\">Processing</a>.</p>','http://processingjs.org/',1,'Processing Foundation, Seneca College’s Centre for Development of Open Technology','ben@fathom.info','http://processing.org/foundation/, http://zenit.senecac.on.ca/wiki/index.php/Main_Page','images/tools/0/380.png',0,0,'2018-10-05','http://processingjs.org/learning/',NULL,'',NULL,0,'2013-12-06 22:57:25','2018-10-05 03:02:55',''),(382,NULL,'Pajek','<p>Pajek is a free tool for large network analysis and visualization in continuous development since 1996. It can handle large datasets from diverse sources, such as collaboration networks, citiation networks, data mining, and Internet-derived networks. Pajek is only available for Windows, and was implemented in Delphi (Pascal).</p>','http://pajek.imfm.si/doku.php?id=pajek',1,'Andrej Mrvar and Vladimir Batagelj, University of Ljubljana','','','images/tools/0/382.png',0,0,'2018-10-05','http://pajek.imfm.si/doku.php?id=resources',NULL,'',NULL,0,'2013-12-09 19:37:18','2018-10-05 03:03:51',''),(383,NULL,'UMDHMM: Hidden Markov Model Toolkit','<p>The UMDHMM: Hidden Markov Model Toolkit is a free UNIX implementation of hidden Markov models useful for speech recognition from Tapas Kanungo. It includes implementations of the Forward-Backward, Viterbi and Baum-Welch algorithms.</p>','http://www.kanungo.com/software/software.html#umdhmm',1,'Tapas Kanugo','anungo@cfar.umd.edu','http://www.kanungo.com/','images/tools/0/383.png',0,0,'2013-12-09','http://www.kanungo.com/software/hmmtut.pdf',NULL,'',NULL,0,'2013-12-09 20:30:44','2017-10-31 14:25:55',''),(384,NULL,'Apple Pie Parser','<p>The Apple Pie Parser is a free tool from the 1990s for generating a grammar from a syntactially tagged corpus offered by the Department of Computer Science at New York University. It generates a syntactic tree like those of the Penn Tree Bank, and is still available for download.</p>','http://nlp.cs.nyu.edu/app/',1,'Satoshi Sekine, New York University Department of Computer Science','','http://cs.nyu.edu/web/index.html','images/tools/0/384.png',0,0,'2013-12-10','http://nlp.cs.nyu.edu/app/manual.ps',NULL,'',NULL,0,'2013-12-10 20:13:44','2017-10-31 14:25:56',''),(385,NULL,'Ngram Statistics Package (NSP)','<p>The Ngram Statistics Package (NSP) is a free suite for identifying word and character ngrams in large corpora developed by Ted Pederson and his team. It also generates frequency data and co-occurrences, and can generate correlations between two files. It has been in continuous development since the 1990s and has been used in developing the SenseCluster and Senseval tools.</p>','http://www.d.umn.edu/~tpederse/nsp.html',1,'Ted Pedersen and the Ngram Development Team, University of Minnesota Duluth','','http://www.d.umn.edu/~tpederse/','images/tools/0/385.png',0,0,'2018-03-23','http://search.cpan.org/dist/Text-NSP/doc/README.pod',NULL,'',NULL,0,'2013-12-10 20:32:05','2018-03-23 19:42:06',''),(386,NULL,'TATOO (ISSCO Tagger Tool)','<p>TATOO (ISSCO Tagger Tool) is a free, trainable text part-of-speech tagger based on hidden Markov models offered by the ISSCO in Geneva. It was developed in the 1990s and is still available for download.</p>','http://www.issco.unige.ch/en/staff/robert/tatoo/tatoo.html',1,'ISSCO (Dalle Molle Institute for Semantic and Cognitive Studies), Geneva, Switzerland','admin-issco@unige.ch','http://www.issco.unige.ch/','images/tools/0/386.png',0,0,'2014-12-30','http://www.issco.unige.ch/en/staff/robert/tatoo/tatoo.html#Tut#',NULL,'',NULL,0,'2013-12-10 21:15:31','2017-10-31 14:25:56',''),(387,1,'UVic Image Markup Tool','<p>The UVic Image Markup Tool is a free tool for annotating images and storing the annotations in XML files from the University of Victoria\'s Humanities Computing and Media Centre. Its interface is designed for users without prior XML experience with additional functions for users familiar with XML, and supports multiple languages. The Image Markup Tool is available for Windows, and will also run in Linux with Wine.</p>','http://tapor.uvic.ca/~mholmes/image_markup/index.php',1,'Martin Holmes, University of Victoria Humanities Computing and Media Centre','mholmes@uvic.ca','http://www.mholmes.com/','images/tools/0/387.png',0,0,'2018-10-05','http://tapor.uvic.ca/~mholmes/image_markup/tutorial/getting_started.htm',NULL,'http://tapor.uvic.ca/~mholmes/image_markup/source.php',NULL,0,'2013-12-12 22:08:37','2018-10-05 19:43:26',''),(388,NULL,'JEUDEMO','<p>JEUDEMO was an information retrieval program developed at the University of Montreal in the 1970s. It built on and extended the functionality of COCOA by including Boolean search functions to search for patterns within a text such as co-occurences, but saw limited adoption as it required texts to be supplied on punched cards or paper tape and was programmed in a language exclusive to the CDC Cyber 74 computer system.</p>','',1,'Paul Bratley, Serge Lusignan and Francine Ouellette at the University of Montreal','','','images/tools/0/388.png',0,0,'2014-01-06','http://',NULL,'',NULL,0,'2014-01-06 17:45:27','2017-10-31 14:25:57',''),(389,NULL,'RATS (Random-Accessible Text Systems)','<p>RATS (Random-Accessible Text Systems) was a PL/I utility for text analysis developed by John B. Smith of Pennsylvania State Univeristy in the early 1970s. It was aimed at researchers with some experience with programming and aimed to streamline the text analysis process while permitting users to customize the program to suit their work. As a system, Smith promoted RATS for concordences, thematic distributions and transitional matrixes.</p>','',1,'John B. Smith, Pennsylvania State University','','','images/tools/0/389.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-01-07 19:04:33','2018-10-26 01:00:54',''),(390,NULL,'etcML','<p>etcML (Easy Text Classification with Machine Learning) is a free text analysis tool from Stanford University that uses machine learning to identify positive and negative sentiments in texts. Users can analyze their own dataset, use a dataset provided with the tool, or search Twitter for keywords of interest.</p>','http://www.etcml.com/',1,'Andrew Ng, Richard Socher and the etcML team','','http://www.etcml.com/team','images/tools/0/390.png',0,0,'2018-10-02','http://',NULL,'',NULL,0,'2014-02-13 00:07:53','2018-10-02 02:25:08',''),(391,NULL,'LitStats','<p>LitStats is a tool for statistical analysis of natural language texts developed in the 1980s by Dr. Stephen Reimer of the University of Alberta. From an ASCII text, it can generate word frequency counts, word lengths, initial letter frequencies, sentence length frequencies and verbal segment frequencies. It was originally developed for an IBM 3033, and can still be run on systems using Windows XP.</p>','',1,'Stephen Reimer','stephen.reimer@ualberta.ca','http://www.efs.ualberta.ca/People/Faculty/StephenReimer.aspx','images/tools/0/391.png',0,0,'2014-03-14','http://',NULL,'',NULL,0,'2014-02-27 23:05:52','2017-10-31 14:25:58',''),(392,NULL,'BIBCON','<p>BIBCON was a key-word-out-of-context system for concordances developed in FORTRAN and available in the 1960s.&nbsp; It was a modified version of another system, KWIC.</p>','',1,'University of Wisconsin Computer Sciences Department','','','images/tools/0/392.png',0,0,'2014-03-05','http://',NULL,'',NULL,0,'2014-03-05 22:19:47','2017-10-31 14:25:58',''),(393,NULL,'KWIC','<p>KWIC was an indexing and concordance tool available in the 1960s. Contrary to its name, KWIC functioned as a \'key-word-out-of-context\' tool.</p>','',1,'CDC','','','images/tools/0/393.png',0,0,'2014-03-05','http://',NULL,'',NULL,0,'2014-03-05 22:24:05','2017-10-31 14:25:58',''),(394,NULL,'CETA Parser','<p>The CETA (Centre pour l\'Etude de la Traduction Automatique) Parser was a program developed in the 1960s that could automatically reduce Russian sentences to a string of words and provide equivalents for each in French. CETA developed its parser in conjunction with Professor Mel\'chuk of Moscow.</p>','',1,'CETA (Centre pour l\'Etude de la Traduction Automatique); Professor Mel\'chuk','','','images/tools/0/394.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 16:54:45','2017-10-31 14:25:58',''),(395,NULL,'MITRE Syntactic Analysis Procedure','<p>The MITRE Syntactic Analysis Procedure was a program developed in the 1960s for analyzing English phrase structures.</p>','',1,'unknown','','','images/tools/0/395.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 17:07:01','2017-10-31 14:25:58',''),(396,NULL,'Berkeley Parser','<p>The Berkeley Parser was a program for parsing English sentences developed at the University of California at Berkeley and available in the 1960s</p>','',1,'University of California at Berkeley','','','images/tools/0/396.png',0,0,'2019-02-15','http://',NULL,'',NULL,0,'2014-03-06 17:15:10','2019-02-15 19:10:43',''),(397,NULL,'Harvard Predictive Analyser','<p>The Harvard Predictive Analyser was a program for analyzing and generating English sentences from Harvard University in the 1960s.</p>','',1,'Harvard University','','','images/tools/0/397.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 17:18:45','2017-10-31 14:25:59',''),(398,NULL,'STAP','<p>STAP (State Transition Network Analysis Procedure) was a program for parsing developed in the 1960s. It could determine correct parsing by following all possible branches until all possibilities permitted by its ruleset were exhausted.</p>','',1,'Daniel G. Bobrow and Bruce Fraser','','','images/tools/0/398.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 17:30:19','2017-10-31 14:25:59',''),(399,NULL,'TEXTAN','<p>TEXTAN was a program developed by Suzanne Hanon of the University of Aarhus in the 1970s for locating English loan words in French texts. It was written in ALGOL 4 and consisted of two programs. TEXTAN 1 learned anglicisms developed manually from French newspapers, while TEXTAN 2 searched a French text and located anglicisms.</p>','',1,'Suzanne Hanon, University of Aarhus','','','images/tools/0/399.png',0,0,'2018-11-06','http://',NULL,'',NULL,0,'2014-03-06 17:55:47','2018-11-06 06:49:30',''),(400,NULL,'T.A.P (Text Analysis Program)','<p>T.A.P (Text Analysis Program) was a program for literary analysis developed in the 1970s at Emory University. It could also generate concordances and word-frequency lists, measure types and tokens, and show collocates for key words defined by the user. T.A.P. was developed in Assembly Language for Emory\'s UNIVAC Spectra 70/17.</p>','',1,'Professor Eseban Egea and Sam Buss, Emory University','','','images/tools/0/400.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 18:11:58','2017-10-31 14:26:00',''),(401,NULL,'UNICORN','<p>UNICORN was a concording system developed in the 1970s. It was developed in FORTRAN IV to replace more restricted programs at at the University of Colorado at Boulder, and could process most machine-readable texts.</p>','',1,'Michael J. Preston and Samuel S. Coleman, Centre for Computer Research in the Humanities (CCRH) at the University of Colorado at Boulder','','','images/tools/0/401.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 18:40:35','2017-10-31 14:26:00',''),(402,NULL,'AUTHOR','<p>AUTHOR was a set of interrelated programs for determining authorship developed in the 1970s at Pennsylvania State University. The system was developed in PL/I and was available for the IBM 370. It integrated RATS for word extraction, and MINITAB II for statistics.</p>','',1,'R.L. Frautschi, Pennsylvania State University','','','images/tools/0/402.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 18:58:27','2017-10-31 14:26:00',''),(403,NULL,'HAWKEYE','<p>HAWKEYE was a program for text analysis for the IBM 370 and developed in the 1970s. It could accept text from an IBM typewriter and had functions to describe text componants such as words and clause lengths, conduct frequency analyses, and generate word-class distributions. HAWKEYE was written in PL/I as an updated and improved verison of EYEBALL.</p>','',1,'Robert Dilligan and Lucy Hawk, University of Southern California','','','images/tools/0/403.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 19:30:41','2017-10-31 14:26:00',''),(404,NULL,'LEMMA','<p>LEMMA was a program package for lemmatizing German word-forms released in 1978. It was designed to work with computer-readable corpora. The algorithm was implemented in PL/I on an IBM 370/168 computer.</p>','',1,'Wolfgang Krause and Gerd Wille, Universitat Bonn.','','','images/tools/0/404.png',0,0,'2014-03-06','http://',NULL,'',NULL,0,'2014-03-06 19:45:22','2017-10-31 14:26:01',''),(405,NULL,'UNICON','<p>UNICON was a concordance generator written in FORTRAN IV and available in the 1960s. It was available first for the IBM 7094, and for IBM 1410/7090 computers after 1970.</p>','',1,'unknown','','','images/tools/0/405.png',0,0,'2014-03-11','http://',NULL,'',NULL,0,'2014-03-11 17:56:53','2017-10-31 14:26:01',''),(406,NULL,'DISCON','<p>DISCON was concordance program available in the 1960s designed to handle bilingual texts.</p>','',1,'unknown','','','images/tools/0/406.png',0,0,'2014-03-11','http://',NULL,'',NULL,0,'2014-03-11 18:06:39','2017-10-31 14:26:01',''),(407,NULL,'TRICON','<p>TRICON was a concordance program developed in the 1960s for the Berkeley Machine Translation Project. The program was designed to work with texts in languages written in non-Roman alphabets, such as Russian (original version) or Judeo Arabic texts (as of 1967). It was developed in FORTRAN G and ran on IBM 360/70 computers.</p>','',1,'Berkeley Machine Translation Project','','','images/tools/0/407.png',0,0,'2014-03-11','http://',NULL,'',NULL,0,'2014-03-11 18:25:09','2017-10-31 14:26:02',''),(408,NULL,'Scharfenberg-Smith Concordance Program','<p>The Scharfenberg-Smith Concordance Program, briefly known as the ICRH (Institute for Computer Research in the Humanities) Concordance Generator, was developed at the Thomas J. Watson Reserach Centre as part of research in machine translation from Russian to English. It was first described in 1964 as a program for teh IBM 7090.</p>','',1,'Kenneth F. Scharfenberg and Philip H. Smith Jr.','','','images/tools/0/408.png',0,0,'2014-03-11','http://',NULL,'',NULL,0,'2014-03-11 18:37:59','2017-10-31 14:26:02',''),(409,NULL,'WATCON','<p>WATCON was a program used extensively at the University of Waterloo for humanities research in the 1970s. It was developed by Philip H. Smith Jr. and WATCHUM (Waterloo Computing in the Humanities) as a text-handling package with concordance applications, and can be regarded as a descendent of the Scharfenberg-Smith Concordance Program.</p>','',1,'Philip H. Smith Jr. and WATCHUM (Waterloo Computing in the Humanities), University of Waterloo','','','images/tools/0/409.png',0,0,'2014-03-11','http://',NULL,'',NULL,0,'2014-03-11 18:47:59','2017-10-31 14:26:02',''),(410,NULL,'CONCORD','<p>CONCORD was a concordance program developed in 1968 to identify and sort collocating words or phrases. Notably, it allowed users to sort words ending in one of several suffixes (such as -er or -est) to be grouped together.</p>','',1,'Neil Hamilton-Smith, Edinburgh Regional Computing Centre','','','images/tools/0/410.png',0,0,'2014-03-12','http://',NULL,'',NULL,0,'2014-03-12 16:40:42','2017-10-31 14:26:03',''),(411,NULL,'AUTOSTYL','<p>AUTOSTYL was a set of linked programs for stylistic analysis developed by Louis T. Milic in the 1980s. Its functions included frequency distributions for letters in words, syllable countering, affix analysis, indexing, and word classification.</p>','',1,'Louis T. Milic','','','images/tools/0/411.png',0,0,'2014-03-12','http://',NULL,'',NULL,0,'2014-03-12 17:10:42','2017-10-31 14:26:03',''),(412,NULL,'SALEM','<p>SALEM was a system for natural language processing developed in the 1970s. It was written in standard FORTRAN, and automated lemmatization of German texts. Its main component was a program known as SATAN (Saarbrucker Automatische Text-analyse).</p>','',1,'The members of the Sonderforschungsbereich 100','','','images/tools/0/412.png',0,0,'2014-12-29','http://',NULL,'',NULL,0,'2014-03-12 17:22:14','2017-10-31 14:26:03',''),(413,NULL,'BALCON (Bilingual Analytical Literary and Linguistic Concordance)','<p>BALCON (Bilingual Analytical Literary and Linguistic Concordance) was a tool for creating bilingual concordances available in the 1970s.</p>','',1,'S. M. Hockey and V. Shibayev','','','images/tools/0/413.png',0,0,'2014-03-12','http://',NULL,'',NULL,0,'2014-03-12 18:00:20','2017-10-31 14:26:03',''),(414,NULL,'CRIC-8 CONCORDER (Cross-Reference in Context)','<p>The CRIC-8 CONCORDER (Cross-Reference in Context) was a tool for creating a \'master\' concordance of a text available in the 1970s.</p>','',1,'unknown','','','images/tools/0/414.png',0,0,'2014-03-12','http://',NULL,'',NULL,0,'2014-03-12 18:23:49','2017-10-31 14:26:04',''),(415,NULL,'TEXTCORD','<p>TEXTCORD is a concordance program available in the 1980s. It was developed in SPITBOL at the University of Toronto\'s Divinity School.</p>','',1,'John Hurd, University of Toronto Divinity School','','','images/tools/0/415.png',0,0,'2014-03-13','http://',NULL,'',NULL,0,'2014-03-13 16:58:20','2018-01-30 14:46:03',''),(416,NULL,'COGS-3','<p>COGS-3 was a general-purpose concordance program for IBM and DEC mainframe computers at the University of Toronto. It was developed in the 1980s in PL/I and also included a lemmatization feature.</p>','',1,'John Bradley, University of Toronto','','','images/tools/0/416.png',0,0,'2014-03-13','http://',NULL,'',NULL,0,'2014-03-13 17:02:48','2017-10-31 14:26:04',''),(417,NULL,'Oxford Concordance Program (OCP)','<p>The Oxford Concordance Program (OCP) was a major and influential early concordance program developed in the late 1970s and early 1980s at the Oxford University Computing Service. It was influnced by CLOC and COCOA, and aimed to be more user-friendly than its predecessors.</p>','',1,'Susan Hockey and Ian Marriott, Oxford University Computing Service','','','images/tools/0/417.png',0,0,'2014-03-13','http://',NULL,'',NULL,0,'2014-03-13 17:40:23','2017-10-31 14:26:05',''),(418,NULL,'DEREDEC','<p>DEREDEC was a programming system and workbench for linguistics and text analysis written in LISP in the 1980s. It enabled syntactic and texual parsing, and could link phrases by their contenxual dependency relations.</p>','',1,'P. Plante, Universite du Quebec a Montreal','','','images/tools/0/418.png',0,0,'2014-03-13','http://',NULL,'',NULL,0,'2014-03-13 18:01:15','2017-10-31 14:26:05',''),(419,NULL,'DISCAN','<p>DISCAN was a tool for content and discourse analysis originally available for mainframe computers, and adapted for PCs with DOS 3.0 in 1991. It accepted ASCII files, could create KWIC and co-occurrence listings, and had modules for both creating content analysis dictionaries and performing content analysis.</p>','',1,'Pierre Maranda, Laval Univerisity; Sylvie Nadeau','','','images/tools/0/419.png',0,0,'2014-12-31','http://',NULL,'',NULL,0,'2014-03-14 16:44:48','2017-10-31 14:26:05',''),(420,NULL,'STRAP 2.0','<p>STRAP 2.0 (Structural Analysis Programs) was a package of interrelated programs for analyzing tagged texts. It was intended to index, conduct contextual searches and generate distribution diagrams for literary texts. It could also recognize punctuation marks, generate word counts, and accommodate alphabets for multiple languages.</p>','',1,'Theresa Snelgrpve (Centre for Computing in the Humanities) and Lidio Presutti (Humanities Support Group, University of Toronto Computing Services)','','','images/tools/0/420.png',0,0,'2014-03-14','http://',NULL,'',NULL,0,'2014-03-14 17:07:37','2017-10-31 14:26:05',''),(421,NULL,'FUNES','<p>FUNES was an NLP system for analyzing short newspaper stories. It was written in Prolog and conducted syntactic parsing and semantic analysis on a text to create a case-based semantic representation.</p>','',1,'Sam Coates-Stephens, The City University (London)','','','images/tools/0/421.png',0,0,'2014-03-14','http://',NULL,'',NULL,0,'2014-03-14 17:29:59','2017-10-31 14:26:05',''),(422,NULL,'VOCAB - U - LISTER','<p>VOCAB - U - LISTER was a tool for lemmatizing texts developed at the University of Toronto in the 1990s. It could handle Spanish text and could process as many as 2000 words at a time.</p>','',1,'Robert Jay Glickman and Gilles Daigle, University of Toronto','','','images/tools/0/422.png',0,0,'2014-03-14','http://',NULL,'',NULL,0,'2014-03-14 17:56:50','2017-10-31 14:26:06',''),(423,NULL,'SimCA 2.0','<p>SimCA 2.0 was a program for correspondence analysis that could generate coordinates in seven dimensions for each data point.</p>','https://umetrics.com/products/simca',1,'Michael Greenacre, University of South Africa','','','images/tools/0/423.png',0,0,'2018-09-25','http://',NULL,'',NULL,0,'2014-03-14 18:21:00','2018-09-25 16:29:21',''),(424,NULL,'ABFREQ','<p>ABFREQ was a tool for identifying key words within a text developed in the 1980s. It identified key words by comparing thier frequency within the user\'s text to the frequency of the same words in a control corpus.</p>','',1,'Alastair McKinnon, McGill University','','','images/tools/0/424.png',0,0,'2014-03-17','http://',NULL,'',NULL,0,'2014-03-17 20:53:39','2017-10-31 14:26:06',''),(425,NULL,'PANVS','<p>PANVS was a system for syntactic analysis of Arabic text developed in the 1990s. It was written in TURBO PROLOG for IBM PS/2 computers, and included lexical and morphological analyzers, a parser, and a module for automatic spelling correction.</p>','',1,'Khalad J. Al Daimi and Maha A. Abdel-Amir, University of Technology, Baghdad','','','images/tools/0/425.png',0,0,'2014-03-17','http://',NULL,'',NULL,0,'2014-03-17 21:07:06','2017-10-31 14:26:07',''),(426,NULL,'GERTWOL','<p>GERTWOL is a tool for the morphological analysis of German texts. A limited version for analyzing single words is now available for free through the developer\'s website.</p>','http://www2.lingsoft.fi/doc/gertwol/',1,'Lingsoft','','http://www.lingsoft.fi/','images/tools/0/426.png',0,0,'2014-11-26','http://www2.lingsoft.fi/doc/',NULL,'',NULL,0,'2014-03-17 21:24:56','2017-10-31 14:26:07',''),(427,1,'Textable','<p><span>Textable is a an add-on tool developed for the Orange data mining and visualization package. Its functions include the ability to build data tables from textual data, to import data from other sources, and to build concordances and collocations. It also enables users to segment and annotate text, systematically recode data, determine subsets, and compute frequency and complexity measures.<br></span></p>','http://textable.io/',1,'LangTech Sàrl on behalf of the Department of Language and Information Sciences (SLI), University of Lausanne','info@langtech.ch','http://langtech.ch','images/tools/0/427.png',0,0,'2018-10-06','http://orange-textable.readthedocs.org/en/latest/',NULL,'https://github.com/axanthos/orange3-textable',NULL,0,'2014-03-17 21:50:22','2018-10-06 00:51:03',''),(428,NULL,'TOSCA','<p>TOSCA was a syntactic analysis system available in the 1990s. It required users to apply word class tags and syntactic markers, which it then used for syntactic parsing.</p>','',1,' Jan Aarts, Hans van Halteren and Nelleke Oostdijk, University of Nijmegen','','','images/tools/0/428.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-17 21:52:08','2017-10-31 14:26:07',''),(429,NULL,'SUSS (Sunderland University SENSEVAL System)','<p>SUSS (Sunderland University SENSEVAL System) was an algorithm for word sense disambiguation developed for the inaugural SENSEVAL event in 1998.</p>','',1,'Jeremy Ellman, Ian Klincke and John Tait, University of Sunderland','','','images/tools/0/429.png',0,0,'2014-03-17','http://',NULL,'',NULL,0,'2014-03-17 22:16:03','2017-10-31 14:26:08',''),(430,NULL,'grling-sdm','<p>grling-sdm (graphical models for linguistic applications - supervised decomposable model search) was a system for assigning probabilistic classification to words developed for the 1998 SENSEVAL competition for word-sense disambiguation. Its selection approach also had applications to related natural language processing problems.</p>','',1,'Tom O\'Hara, Janyce Wiebe and Rebecca Bruce; New Mexico State University and University of North Carolina at Asheville','','','images/tools/0/430.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-18 16:06:25','2017-10-31 14:26:08',''),(431,NULL,'Wisdom','<p>Wisdom was a word sense disambiguation system that participated in the 1998 SENSEVAL competition. It used a simple supervised learning algorithm, drawing on co-occurrence statistics.</p>','',1,'Keith Suderman, University of Manitoba','','','images/tools/0/431.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-18 16:30:30','2017-10-31 14:26:08',''),(432,NULL,'SCBD (Sentence and Chunk Boundaries Detector)','<p>SCBD (Sentence and Chunk Boundaries Detector) was an NLP tool suited to Modern Greek text. It could detect sentence and chunk boundaries within an unrestricted text, could assign style markers, and was effective even on a large corpus of 200,000 words</p>','',1,'E. Stamatatos, N. Fakotakis and G. Kokkinakis, University of Patras','','','images/tools/0/432.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-18 16:52:41','2017-10-31 14:26:08',''),(433,NULL,'EXPLEX','<p>EXPLEX (EXtracting information about Proper nouns to provide LEXical information) was a natural language processing system available in the 1990s. It was developed to create lexical entries for nouns appearing in the <em>Wall Street Journal</em>.</p>','',1,'Jong-Sun Kim, Illinois Institute of Technology','','','images/tools/0/433.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-18 17:24:17','2017-10-31 14:26:09',''),(434,NULL,'IITagger','<p>IITagger was a part of speech tagging system developed in the 1990s to assign part of speech information to words from the <em>Wall Street Journal</em>.</p>','',1,'Yeongkwun Kim, Illinois Institute of Technology','','','images/tools/0/434.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-18 17:30:52','2017-10-31 14:26:09',''),(435,NULL,'WinBrill','<p>WinBrill is a part-of-speech tagger developed by Eric Brill in the 1990s for the French language laboratory ATILF. It was originally available for UNIX, with WinBrill optimized for Windows 95/98/NT as of 1999. The ATILP provided a vocabulary and rules files based on FRANTEXT data. Versions of the Brill tagger are still extant online.</p>','http://www.atilf.fr/spip.php?article899',1,'Eric Brill, University of Pennsylvania; ATILF','','','images/tools/0/435.png',0,0,'2014-03-18','http://',NULL,'',NULL,0,'2014-03-18 17:56:24','2017-10-31 14:26:09',''),(436,NULL,'SRILM (SRI Language Modelling Toolkit)','<p>SRILM (SRI Language Modelling Toolkit) is a toolkit for language modelling first developed in the 1990s and still in active development. It has applications in speech recognition, statistical tagging, segmentation and machine translation. The toolkit is available for Windows and UNIX, and users have developed a variety of extensions for it.</p>','http://www.speech.sri.com/projects/srilm/',1,'Andreas Stolcke and SRI International','stolcke@icsi.berkeley.edu','http://www1.icsi.berkeley.edu/~stolcke/','images/tools/0/436.png',0,0,'2018-09-18','http://www.speech.sri.com/projects/srilm/manpages/',NULL,'',NULL,0,'2014-03-18 18:34:40','2018-09-18 17:53:47',''),(437,NULL,'KH Coder','<p>KH Coder is a tool for quantitative content analysis and text mining that has been under continuous development since 2001. It was originally developed for Japanese text and now supports numerous other languages, including English, Italian and French. KH Coder also has computational linguistics applications.</p>','http://khc.sourceforge.net/en/',1,'Koichi Higuchi, Ritsumeikan University','ko-ichi@ss.ritsumei.ac.jp','http://koichi.nihon.to/psnl/en/','images/tools/0/437.png',5,0,'2018-09-18','http://www.slideshare.net/khcoder/quick-start-tutorial-of-kh-coder-quantitative-content-analysis-or-text-mining-of-english-language-data',NULL,'',NULL,0,'2014-03-19 17:08:30','2018-09-18 17:50:48',''),(439,NULL,'RQDA','<p>RQDA is a free R package for qualitative analysis, developed specifically to analyze textual data. It is available for Windows, Linux/FreeBSD and Mac OS X. It currently requires texts to be in plain text format. RQDA supports non-English texts, and has been tested with Simplified Chinese in particular.</p>','http://rqda.r-forge.r-project.org/',1,'Ronggui Huang, Fudan University','','http://homepage.fudan.edu.cn/rghuang/cv/','images/tools/0/439.png',0,0,'2014-04-02','http://rqda.r-forge.r-project.org/documentation_2.html#manual',NULL,'',NULL,0,'2014-04-02 19:39:50','2017-10-31 14:26:10',''),(443,1,'Annotation Studio','<p>Annotation Studio is an open source, web-based annotation application that integrates a powerful set of textual interpretation tools behind an intuitive and easy-to-use interface. Users can upload their own texts, and annotate with styled text, video, images, and weblinks. To date, the project has been used with great success in disciplines such as Writing, Literature, Foreign Languages, Anthropology, Film and Media Studies, and others at institutions including Harvard, Yale, Stanford, MIT, Barnard College, and Washington University.</p>','http://www.annotationstudio.org/',1,'MIT HyperStudio','hyperstudio@mit.edu','http://hyperstudio.mit.edu/','images/tools/0/443.png',0,0,'2018-10-06','http://www.annotationstudio.org/support/users-manual/',NULL,'https://www.annotationstudio.org/community/open-source/',NULL,0,'2014-05-06 16:18:22','2018-10-06 00:39:53',''),(448,NULL,'Paper Machines','<p>Paper Machines is a topic modelling and visualization tool available as a plugin for Zotero. It analyzes Zotero bibliographic collections based on a selection of text mining processes, and enables users to export a variety of visualizations, such as word clouds, phrase nets or heat maps, from the results.</p>','http://papermachines.org/',1,'Jo Guldi and Chris Johnson-Roberson','info@metalab.harvard.edu','https://www.joguldi.com/','images/tools/0/448.png',0,0,'2018-09-27','http://papermachines.org/how-to-use-paper-machines/',NULL,'',NULL,0,'2014-05-26 21:06:40','2018-09-27 21:41:53',''),(451,1,'Overview','<p><span>Overview is a free, web-based tool for document mining. Developed by and for journalists, Overview is also broadly applicable to other corpus-based research applications. Aside from providing </span><a href=\"http://overview.ap.org/about/overview.ap.org/blog/2013/12/advanced-search-quoted-phrases-boolean-operators-fuzzy-matching-and-more/\">advanced search features</a><span><span> such as regular expressions and fuzzy matching, </span></span><span>Overview automatically </span><a href=\"http://overview.ap.org/blog/2013/04/how-overview-can-organize-thousands-of-documents-for-a-reporter/\">sorts documents according to topic</a><span> and provides a fast visualization and reading interface. You can apply tags to search results, individual documents, or entire topics to track what you\'ve found, then export the entire document set with its tags to perform further processing or create visualization. It’s been used for qualitative research, social media conversation analysis, legal document review, digital humanities, and more. </span></p> <div><span> </span></div> <div>\n<span>Overview can be run via the web interface (max 200 000 documents) or downloaded and installed. </span><span>The system can import documents in PDF or CSV format and currently supports analysis in 9 languages. The code is open source and there is a plugin API to extend Overview\'s analysis and visualization capability.</span>\n</div>','https://www.overviewproject.org/',1,'Jonathan Stray, Jonas Karlsson and Adam Hooper','','http://overview.ap.org/team/','images/tools/0/451.png',0,0,'2018-10-19','http://overview.ap.org/help/',NULL,'',NULL,0,'2014-06-06 17:03:13','2018-10-19 02:39:11',''),(452,1,'RAW','<p>RAW is a free, open-source web application for creating visualizations that can be exported in SVG or PNG format and embedded into a website. Users can upload data with RAW\'s web interface and generate a variety of vector-based visualizations. RAW uses the D3.js library, and is maintained by the Density Design research studio at Polaitecnico di Milano.</p>','http://raw.densitydesign.org/',1,'Giorgio Caviglia, Giorgio Uboldi, Matteo Azzi, and Michele Mauri (Density Design, Polaitecnico di Milano)','raw@densitydesign.org','http://www.densitydesign.org/','images/tools/0/452.png',0,0,'2018-11-30','https://github.com/densitydesign/raw/wiki/API-Reference',NULL,'https://github.com/densitydesign/raw/',NULL,0,'2014-06-10 20:21:38','2018-11-30 04:08:32',''),(453,NULL,'SentiStrength','<p>SentiStrength is a tool for sentiment analysis available for free to academic users (with registration), in Java and Windows-optimized versions. It estimates the strength of sentiment in short texts, and can handle informal language. Strength is expressed in a scale of 1 to 5 for positive sentiments, and -1 to -5 for negative; it also includes an option for assessing neutrality. SentiStrength is available for multiple languages, with extensibility for languages and contexts not already included. According to the developers, SentiStrength has human-level accuracy for short English texts. Commercial users must purchase a license.</p>','http://sentistrength.wlv.ac.uk/',1,'Thelwall, M., Buckley, K., & Paltoglou, G.; CyberEmotions Consortium','','http://www.cyberemotions.eu/','images/tools/0/453.png',0,0,'2014-07-03','http://sentistrength.wlv.ac.uk/',NULL,'',NULL,0,'2014-07-03 15:57:37','2017-10-31 14:26:11',''),(454,NULL,'Compare Lists','<p>Compare Lists is a free, web-based tool for comparing text from two lists of URLs supplied by the user. This tool was developed and is maintained by the Digital Methods Initiative.</p>','https://tools.digitalmethods.net/beta/analyse/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/454.png',0,0,'2014-07-03','https://wiki.digitalmethods.net/Dmi/ToolCompareLists',NULL,'',NULL,0,'2014-07-03 16:30:43','2017-10-31 14:26:12',''),(455,NULL,'Google Blogsearch Scraper','<p>The Google Blogsearch Scraper is a free, web-based tool for batch querying Google Blog Search. Users can submit a list of URLs to search, and a set of keywords to apply to them. For each query, the tool supplies a tag cloud and an HTML table, plus a text file that may be downloaded for further analysis.</p>','https://tools.digitalmethods.net/beta/googleBlogsearch/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/455.png',0,0,'2014-07-03','https://wiki.digitalmethods.net/Dmi/ToolGoogleBlogsearch',NULL,'',NULL,0,'2014-07-03 16:58:26','2017-10-31 14:26:12',''),(456,NULL,'Netvizz','<p>Netvizz is a free, web-based tool for extracting datasets from Facebook. As the tool utilizes Facebook Apps, users must have a Facebook account to access it.</p>','',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/456.png',0,0,'2018-11-07','https://wiki.digitalmethods.net/Dmi/ToolNetvizz',NULL,'',NULL,0,'2014-07-03 17:13:42','2018-11-07 05:14:35',''),(457,NULL,'NetvizzToSentiStrength','<p>NetvizzToSentiStrength is a free, web-based sentiment analysis tool for short texts, designed to work particularly with a Netvizz search of Facebook data. In addition to Netvizz data, it also accepts DMI-TCAT and CSV files.&nbsp;</p>','https://wiki.digitalmethods.net/Dmi/ToolNetvizzToSentiStrength',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/457.png',0,0,'2014-07-03','https://wiki.digitalmethods.net/Dmi/ToolNetvizzToSentiStrength',NULL,'',NULL,0,'2014-07-03 17:34:16','2017-10-31 14:26:12',''),(458,NULL,'Google News Scraper','<p>Google News Scraper is a free, web-based tool for batch querying news.google.com. Users can specify search terms, news sources, date range, location, language, version of Google (ex. .com, .ca, .co.uk, etc.), and what facets to include in the output. The tool returns the results as a table suitable for further analysis, and can also include thumbnail images for each search item.</p>','https://wiki.digitalmethods.net/Dmi/ToolGoogleNewsScraper',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/458.png',0,0,'2014-07-03','https://wiki.digitalmethods.net/Issuecrawler/GoogleNewsInstructionsOfUse',NULL,'',NULL,0,'2014-07-03 17:45:08','2017-10-31 14:26:13',''),(459,NULL,'Googlescraper (Lippmannian Device)','<p>Googlescraper (Lippmannian Device) is a free, web-based tool for querying Google and saving the results for analysis. It allow users to specify URLs, keywords, and which keywords apply to each URL. The tool outputs as HTML, a tag cloud, and a text file. The tool must be used with FireFox, and requires users to first install the <a href=\"https://wiki.digitalmethods.net/Dmi/FirefoxToolBar\">DMI toolbar</a>, which permits the tool to work around Google\'s block against automated requests.</p>','https://tools.digitalmethods.net/beta/scrapeGoogle/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/459.png',0,0,'2018-10-17','https://wiki.digitalmethods.net/Dmi/ToolGoogleScraper',NULL,'',NULL,0,'2014-07-03 18:01:30','2018-10-17 04:48:56',''),(460,NULL,'Issuecrawler','<p>Issuecrawler is a free, web-based tool for performing co-link analysis on URLs, and generating a cluster graph of the results. Its options include snowball crawling for up to three degrees of separation, and inter-actor crawling. Users must request a free account before using the tool.</p>','https://www.issuecrawler.net/',1,'Govcom Foundation','','http://www.govcom.org/','images/tools/0/460.png',0,0,'2018-11-07','http://www.govcom.org/Issuecrawler_instructions.htm',NULL,'',NULL,0,'2014-07-03 18:21:16','2018-11-07 05:20:58',''),(461,NULL,'Compare Networks Over Time','<p>Compare Networks Over Time is a free, web-based tool for comparing Issuecrawler networks, or data from a regularly scheduled crawl. The tool displays ranked actor lists for each comparison, in a format suitable for graphing via spreadsheet software. Tool input must be in XML format. Compare Networks Over Time is designed to be used particularly with output from the Govcom Foundation\'s <a href=\"https://www.issuecrawler.net/\" target=\"_blank\">Issuecrawler </a>tool.</p>','https://tools.digitalmethods.net/beta/ic/comparenetworksovertime/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/461.png',0,0,'2014-07-03','https://wiki.digitalmethods.net/Dmi/ToolCompareNetworksOverTime',NULL,'',NULL,0,'2014-07-03 18:33:24','2017-10-31 14:26:13',''),(462,NULL,'Ranked Deep Pages from Core Issue Crawler Network','<p>The Ranked Deep Pages from Core Issue Crawler Network is a free, web-based tool for ranking pages based on inlink counts from a user-supplied <a href=\"https://www.issuecrawler.net/\" target=\"_blank\">Issuecrawler</a> XML file. It outputs a three-column table with numbers, the inlink count from the core network, and the inlink count from the periphery of the network.</p>','https://tools.digitalmethods.net/beta/ic/rankedDeepPagesFromCore.php',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/462.png',0,0,'2014-07-03','https://wiki.digitalmethods.net/Dmi/ToolRankedDeepPagesCoreNetwork',NULL,'',NULL,0,'2014-07-03 18:43:22','2017-10-31 14:26:14',''),(463,NULL,'Issue Discovery','<p>Issue Discovery is a tool for extracting the most prominent words and phrases from user-supplied URLs, texts or <a href=\"https://www.issuecrawler.net/\">Issuecrawler</a> XML result files. It is designed as a heuristic for data exploration rather than as an empirical tool.</p>','https://tools.digitalmethods.net/beta/issueDiscovery/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/463.png',2,0,'2018-11-07','https://wiki.digitalmethods.net/Dmi/ToolIssueDiscovery',NULL,'',NULL,0,'2014-07-03 19:01:42','2018-11-07 05:21:45',''),(464,NULL,'Lippmannian Device to Gephi','<p>The Lippmannian Device to Gephi is a free, web-based tool for converting the output of the Digital Methods Association\'s <a href=\"../../?id=459\">Googlescraper (Lippmannian Device)</a> tool to a format suitable for Gephi visualization. From a Googlescraper file, it generates a GEXF file with defined nodes and weighted edges based on the queries and URLs in the original file. Once loaded into Gephi, the nodes can be resized to emphasize the most important query/URL combinations.</p>','https://tools.digitalmethods.net/beta/lippmannianDeviceToGephi/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/464.png',0,0,'2018-10-03','https://wiki.digitalmethods.net/Dmi/ToolLippmannianDeviceToGephi',NULL,'',NULL,0,'2014-07-04 16:17:56','2018-10-03 01:36:50',''),(465,NULL,'Open Calais Issue Discovery','<p>Open Calais Issue Discovery is a free, open source tool for textual analysis. From a text file, URLs or an <a href=\"https://www.issuecrawler.net/\" target=\"_blank\">Issuecrawler</a> XML file, it generates a ranked table of terms and an overall count corresponding to the most relevant words and phrases in the source text or issue network.</p>','https://tools.digitalmethods.net/beta/opencalais/',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/465.png',0,0,'2014-07-04','https://wiki.digitalmethods.net/Dmi/ToolOpenCalais',NULL,'',NULL,0,'2014-07-04 16:29:41','2017-10-31 14:26:14',''),(466,NULL,'Twitter Capture and Analysis Toolset (DMI-TCAT)','<p>Twitter Capture and Analysis Toolset (DMI-TCAT) is a free, open source tool for capturing and analyzing tweets. The tool\'s web interface is currently closed to researchers outside the University of Amsterdam\'s Media Studies department, however, the source code is available for download and installation via Github.</p>','https://wiki.digitalmethods.net/Dmi/ToolDmiTcat',1,'Digital Methods Initiative','','https://www.digitalmethods.net/Digitalmethods/WebHome','images/tools/0/466.png',0,0,'2018-10-17','https://github.com/digitalmethodsinitiative/dmi-tcat',NULL,'',NULL,0,'2014-07-04 17:11:22','2018-10-17 04:52:51',''),(467,NULL,'Netlytic','<p>Netlytic is a free, web-based tool for analyzing and visualizing text and social network data. It enables users to capture data from sources such as social media, blogs or online forums; identify themes and actors; and generate both chain and personal name networks for further analysis and visualization. Users can import datasets from RSS, cloud storage (Google Drive or Dropbox), Twitter, YouTube, Instagram and a plain text file. Results can be exported in formats accessible to other network analysis tools, such as CSV.</p>','https://netlytic.org/home/',1,'Dr. Anatoliy Gruzd','netlytic@gmail.com','http://anatoliygruzd.com/','images/tools/0/467.png',0,0,'2018-10-17','https://netlytic.org/home/?page_id=20',NULL,'',NULL,0,'2014-07-04 17:38:04','2018-10-17 04:53:54',''),(468,NULL,'TAGS (Twitter Archiving Google Spreadsheet) v5.1','<p>TAGS (Twitter Archiving Google Spreadsheet) v5.1 is a tool for automatically pulling Twitter search results into a Google spreadsheet for further analysis. Users can set TAGS 5.1 to update the resulting archive hourly or at a frequency of their specification, and includes options for filtering out spam, result pagination, and setting an upper limit on tweets collected (to a maximum of 18000).</p>','https://docs.google.com/spreadsheet/ccc?key=0AqGkLMU9sHmLdGdjakQzeE9GYU05ZFhlVWEwRjJIblE&newcopy',1,'Martin Hawksey','','http://mashe.hawksey.info/','images/tools/0/468.png',0,0,'2018-10-17','http://mashe.hawksey.info/2013/02/twitter-archive-tagsv5/',NULL,'',NULL,0,'2014-07-04 18:06:39','2018-10-17 04:54:40',''),(469,NULL,'Poem Viewer','<p>Poem Viewer is a free, web based experimental tool for exploring, analyzing and visualizing poetry based on linguistic characteristics, for use as a supplement to close reading. Users can choose from a list of pre-loaded poems, or paste a poem of their choosing into the provided text box.</p>','https://oxvii.wordpress.com/2013/04/12/poem-viewer/',1,'Oxford E-Research Centre, University of Oxford','','http://www.oerc.ox.ac.uk/','images/tools/0/469.png',0,0,'2018-10-02','http://ovii.oerc.ox.ac.uk/PoemVis/publications.html',NULL,'',NULL,0,'2014-07-04 18:35:50','2018-10-02 16:36:15',''),(470,NULL,'Macro-Etymological Analyzer','<p>The Macro-Etymological Analyzer is a free, open-source tool for etymological analysis of plain-text documents. Users can upload their own file, or choose from a list of pre-loaded texts. The tool conducts a frequency analysis and then identifies the language families represented in the text from the list of unique words. It outputs a chart showing the percentage of words belonging to each language family identified, a full list of words with those not in the dictionary clearly marked, and a table outputting the full freqency analysis results.</p>','http://jonreeve.com/dev/etym/etym.php',1,'Jonathan Reeve','','http://jonreeve.com/','images/tools/0/470.png',0,0,'2014-07-07','http://github.com/JonathanReeve/bulk-etym/',NULL,'',NULL,0,'2014-07-07 16:49:45','2017-10-31 14:26:16',''),(471,NULL,'Prospéro (PROgramme de Sociologie Pragmatique, Expérimentale et Réflexive sur Ordinateur)','<p>Prospéro (PROgramme de Sociologie Pragmatique, Expérimentale et Réflexive sur Ordinateur) is a free text analysis tool aimed at scholars in the Humanities capable of complex analysis on natural language. It permits users to classify and track records or thematic sets within a text or corpus for the purpose of exploration, analysis and comparison. It identifies places in a text that display uncertainty, controversy, criticism, and enables the user to establish rule and meta-rules to separate factual statements from views and interpretations. Prospéro is particularly designed for complex cases composed of large texts containing heterogenous discourse.</p>','http://prosperologie.org/?sit=22',1,'Francis Chateauraynaud and Jean-Pierre Charriau (Doxa)','','http://prosperologie.org/?sit=61','images/tools/0/471.png',0,0,'2018-11-07','http://prosperologie.org/forum/',NULL,'',NULL,0,'2014-07-07 17:40:50','2018-11-07 05:00:58',''),(472,NULL,'Stanford Sentiment Analysis','<p>The Stanford NLP Group\'s Sentiment Analysis tool is a free, web based live demo based on a sentiment analysis treebank, trained to predict the sentiment in movie reviews. Users can test out the sentiment analysis model with their own text in the box provided. The dataset and code is available for download, and the sentiment analysis model is now integrated into Stanford CoreNLP.</p>','http://nlp.stanford.edu:8080/sentiment/rntnDemo.html',1,'Richard Socher, Alex Perelygin, Jean Wu, Jason Chuang, Christopher Manning, Andrew Ng and Christopher Potts (Stanford NLP Group)','','http://nlp.stanford.edu/','images/tools/0/472.png',0,0,'2014-07-07','http://nlp.stanford.edu/sentiment/index.html',NULL,'',NULL,0,'2014-07-07 18:25:07','2017-10-31 14:26:16',''),(473,1,'twXplorer','<p>twXplorer is a free, web-based tool for querying Twitter and exploring the search results based on common words, hashtags and commonly shared links. Each search brings up the 500 most recent tweets for that search term, and the tool permits users to save \'snapshots\' for later analysis. twXplorer requires users to log in with their Twitter account.</p>','http://twxplorer.knightlab.com/',1,'Northwestern University Knight Lab','','http://knightlab.northwestern.edu/','images/tools/0/473.png',0,0,'2018-11-06','http://twxplorer.knightlab.com/about/',NULL,'',NULL,0,'2014-07-07 19:04:49','2018-11-06 06:30:35',''),(474,NULL,'wordsimilarity (Word 2 Word)','<p>wordsimilarity (Word 2 Word) is a free, open source tool for plotting and visualizing semantic spaces within a corpus. The tool\'s visualizations assign words to nodes, with similarities marked by edges between nodes of varying strength. The visualizations are designed to be easy to manipulate based on graph data, and the system includes a library of ready-to-use relationship models with an interface for training the models based on a variety of language sources.</p>','https://code.google.com/p/wordsimilarity/',1,'iamsqrt1','','https://code.google.com/u/iamsqrt1@gmail.com/','images/tools/0/474.png',0,0,'2018-10-02','https://code.google.com/p/wordsimilarity/w/list',NULL,'',NULL,0,'2014-07-08 17:49:23','2018-10-02 16:32:56',''),(475,NULL,'word tree','<p>word tree is a free, web-based tool for generating dynamic word trees from user-supplied texts. Users can paste their text directly in the box provided, enter a URL or Twitter handle in the search bar, or install the bookmarklet into their browser\'s bookmarks bar to run the tool on their current page. Within the visualization, users can generate trees for any keyword based on search or from a click in the interface, and can reverse the direction of the tree (forward or back from the keyword within the text).</p>','http://www.jasondavies.com/wordtree/',1,'Jason Davies','','http://www.jasondavies.com/','images/tools/0/475.png',0,0,'2018-10-02','http://www.jasondavies.com/wordtree/',NULL,'',NULL,0,'2014-07-08 18:16:40','2018-10-02 16:31:52',''),(476,NULL,'WordWanderer','<p>WordWanderer is a free, web-based tool for visualizing and exploring text. It combines search, concordance and word cloud attributes to enable users to explore their texts. Users can paste their own texts into the box provided, or choose from a list of preloaded texts. It includes the ability to include or hide words based on parts of speech, a stop list or a user-provided list, and can display the text based on relative frequency, context or comparison. To view specific words, users can search them or click on them in the visualization.</p>','http://wordwanderer.org/',1,'Marian Dörk and Dawn Knight, Newcastle University','','http://wordwanderer.org/','images/tools/0/476.png',0,0,'2018-11-06','http://wordwanderer.org/',NULL,'',NULL,0,'2014-07-08 18:32:46','2018-11-06 06:36:45',''),(477,NULL,'Version Variation Visualization','<p>Version Variation Visualization is an interrelated set of free, usable prototypes for visualizing and exploring culturally important works in relation to their world-wide translations. It allows users to explore either the inlcuded corpora or their own texts via time-maps, alignment maps, parallel views or a concordance view accommodating multiple translations in the same viewer. Version Variation Visualization is particularly valuable for its focus on translation and re-translation of text, and its capacity to accommodate and show multiple version of the same text or passage.</p>','http://www.delightedbeauty.org/vvv/',1,'Tom Cheesman, Kevin Flanagan, Sebastian Sadowsky (Studio NAND), Alison Ehrmann, Zhao Geng','','http://www.delightedbeauty.org/vvv/Home/Credits','images/tools/0/477.png',0,0,'2018-10-17','http://www.delightedbeauty.org/vvv/Home/Project',NULL,'',NULL,0,'2014-07-08 19:34:55','2018-10-17 05:00:40',''),(478,NULL,'DfR Browser','<p>The DfR Browser is a free, open source visualization interface for exploring aggragates of articles from the JSTOR database. It uses topic modelling, co-occurrances and document metadata to provide multiple views on the corpus of interest based on topic searches, via several specialized views such as scaled, list and yearly subviews. Users can test the DfR browser via the provided web demo, which incudes a broad selection of pre-loaded topics, or download the source code to use the tool with their own data. The tool\'s output can be imported into Mallet for further analysis.</p>','http://agoldst.github.io/dfr-browser/demo',1,'Andrew Goldstone (Rutgers University)','','http://andrewgoldstone.com/','images/tools/0/478.png',0,0,'2018-10-17','http://agoldst.github.io/dfr-browser/',NULL,'',NULL,0,'2014-07-09 20:07:03','2018-10-17 05:01:18',''),(479,NULL,'jsLDA','<p>jsLDA is a free, open source tool for corpus-based in browser topic modelling. Users can test the tool via the provided demo, or download the source code to run on their own system. Users can load any corpus accessible from a URL, and can train the tool on the topics within the corpus via the iteration function. Once jsLDA has been trained to the user\'s satisfaction, documents can be sorted according to topic and explored based on topic correlations.</p>','http://mimno.infosci.cornell.edu/jsLDA/',1,'David Mimno (Cornell University)','','http://mimno.infosci.cornell.edu/','images/tools/0/479.png',0,0,'2018-11-06','https://github.com/mimno/jsLDA',NULL,'',NULL,0,'2014-07-09 20:48:11','2018-11-06 06:34:47',''),(480,NULL,'The Networked Corpus','<p>The Networked Corpus is a free, open source tool for navigating a corpus of plain text files via topic modelling using MALLET. The tool consistes of a Python script, and generates a collection of HTML files that can be explored further via the user\'s web browser. To use The Networked Corpus, users must have a minimum of Python 2.7.x, NumPy, SciPy and MALLET 2.0.7 installed on their system.</p>','https://github.com/jeffbinder/networkedcorpus',1,'Jeff Binder and Collin Jennings','','http://www.networkedcorpus.com/about-the-authors/','images/tools/0/480.png',0,0,'2014-07-09','http://www.networkedcorpus.com/technical-details/',NULL,'',NULL,0,'2014-07-09 21:00:40','2017-10-31 14:26:19',''),(481,NULL,'Topic Modelling Tool','<p>Topic Modelling Tool is a free, open source tool for Latent Dirichlet Allocation topic modelling with a graphical user interface. The tool learns topics in a user-supplied corpus of plain text files, and outputs results as a CSV file for further analysis.</p>','https://code.google.com/p/topic-modeling-tool/',1,'David Newman','','','images/tools/0/481.png',0,0,'2014-07-09','https://code.google.com/p/topic-modeling-tool/w/list',NULL,'',NULL,0,'2014-07-09 21:43:09','2017-10-31 14:26:19',''),(482,NULL,'NodeXL','<p>NodeXL is a free, open source tool for generating and exploring network graphs from Microsoft Excel files. It is particularly suited to data from social media sources, and includes the ability to directly import data from Twitter, YouTube, Flickr and email, with additional plugins available for gathering data from Facebook, Microsoft Exchange, wikis and URLs. The tool generates visualizations that can be adjusted, zoomed and filtered, with additional features for vertex grouping, graphing metric calculations, and automating tasks. NodeXL can both import and export data in GraphML, Pajek, UCINet and matrix formats.</p>','http://nodexl.codeplex.com/',1,'M. Smith,  N. Milic-Frayling, B. Shneiderman, E. Mendes Rodrigues,  J. Leskovec and C. Dunne','','http://nodexl.codeplex.com/','images/tools/0/482.png',5,0,'2018-10-17','http://nodexl.codeplex.com/documentation',NULL,'',NULL,0,'2014-07-10 18:50:18','2018-10-17 02:07:44',''),(483,NULL,'SNOBOL (String Oriented Symbolic Language)','<p>SNOBOL is a programming language developed in the 1960s capable of symbol and free-form string manipulation that was of particular value to early computer-based Humanities research. SNOBOL4 was the final version released by AT&amp;T Bell Laboratories.</p>','http://www.snobol4.com/',1,'David J. Farber, Ralph E. Griswold and Ivan P. Polonsky (AT&T Bell Laboratories)','','','images/tools/0/483.png',0,0,'2018-10-26','ftp://ftp.snobol4.com/',NULL,'',NULL,0,'2014-07-10 20:48:05','2018-10-26 00:45:51',''),(484,NULL,'FORTRAN','<p>FORTRAN (from \'formula translating system\') was a major programming language first developed by IBM in the late 1950s. While originally intended for science and engineering, with substantial drawbacks for users seeking to conduct text processing, its wide availability in academic computing centres neverthless made it an attractive choice for Humanities scholars seeking to automate research processes.</p>','http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/fortran/',1,'John Backus and IBM','','http://www-03.ibm.com/ibm/history/exhibits/builders/builders_backus.html','images/tools/0/484.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-11 19:19:20','2018-10-26 00:53:51',''),(485,NULL,'COMIT','<p>COMIT was an early string processing programming language developed for IBM 700/7000 computers at MIT from the late 1950s to mid 1960s. It was particularly designed for linguistics and natural language processing, and was taught to humanists to aid their research in the 1960s.</p>','',1,'Victor Yngve and MIT','','','images/tools/0/485.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-11 20:05:49','2018-10-26 00:48:44',''),(486,NULL,'COBOL','<p>COBOL (Common Business-Oriented Language) is a programming language first developed for business applications in the late 1950s. It was frequently referenced by humanists interested in applying computers and algorithms to their research, though infrequently used.</p>','',1,'Conference on Data Systems Languages (CODASYL)','','','images/tools/0/486.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-11 20:23:06','2018-10-26 00:49:39',''),(487,NULL,'ALGOL','<p>ALGOL (Algorithmic Language) was a programming language developed in the mid 1950s and often discussed in relation to humanities research applications, such as concordances or computational linguistics.</p>','',1,'Bauer, Bottenbruch, Rutishauser, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, van Wijngaarden, Woodger, Green, McCarthy','','','images/tools/0/487.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-11 20:48:43','2018-10-26 00:50:49',''),(489,NULL,'EULER','<p>EULER was a general programming language proposed as a successor to and with many of the characteristics of ALGOL 60. Extended EULER, which included string-handling facilities based on ALGOL W, was useful to humanities research for search, frequency count and related operations on text.</p>','',1,'Niklaus Wirth and Helmut Weber','','','images/tools/0/489.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-14 18:35:07','2018-10-26 00:51:40',''),(490,NULL,'PL/C','<p>PL/C (Programming Language Cornell) was a programming language based on PL/I developed at Cornell University in the early 1970s as an entry-level language to facilitate programming instruction. It was occasionally used to introduce humanists to programming concepts, though it is unclear whether it was used for humanities-oriented research in its own right.</p>','',1,'Cornell University','','','images/tools/0/490.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-14 19:05:43','2018-10-26 00:52:32',''),(491,NULL,'SPITBOL','<p>SPITBOL (Speedy Implementation of SNOBOL) was a complied implementation of SNOBOL4 with additional features, such as string reversal, of particular interest to researchers in the humanities.</p>','http://www.snobol4.com/',1,'Robert Dewar and Ken Belcher','','','images/tools/0/491.png',0,0,'2018-10-26','http://www.snobol4.com/spitbol360/',NULL,'',NULL,0,'2014-07-14 20:00:23','2018-10-26 00:52:18',''),(492,NULL,'ProIcon','<p>ProIcon was an implementation and expansion of the Icon programming language for Macintosh computers developed in the late 1980s and early 1990s. Though still best described as a programming language, it was also referred to as a text study and manipulation system, and as an information system. ProIcon functioned as a program development system, with an included an editor and an error handling system, and was compatible with Icon 7.</p>','',1,'Marc Emmer and Ralph Griswold','','','images/tools/0/492.png',0,0,'2018-10-26','https://www.cs.arizona.edu/icon/ftp/doc/proicon.pdf',NULL,'',NULL,0,'2014-07-15 17:26:44','2018-10-26 00:52:08',''),(493,NULL,'AWK','<p>AWK is a programming language well suited to text processing first developed at Bell Labs in the late 1970s. It was particularly useful to humanists in the late 1980s and early 1990s, and was notably used to develop parts of the ARTFL project.</p>','',1,'Alfred Aho, Peter Weinberger and Brian Kernighan (Bell Laboratories)','','http://cm.bell-labs.com/cm/cs/awkbook/','images/tools/0/493.png',0,0,'2018-10-26','http://www.gnu.org/software/gawk/manual/gawk.html',NULL,'',NULL,0,'2014-07-15 18:15:57','2018-10-26 00:53:03',''),(494,NULL,'Prolog','<p>Prolog is a general purpose programming language first developed in the early 1970s with a particular value to computational lingusitics. Within the humanities, it was applied to natural language processing.</p>','',1,'Alain Colmerauer','','','images/tools/0/494.png',0,0,'2014-07-16','http://',NULL,'',NULL,0,'2014-07-16 17:36:50','2017-10-31 14:26:22',''),(495,NULL,'LISP','<p>LISP is a longstanding high-level programming language first developed in the late 1950s. Within the humanities, it was applied to computational linguistics and natural language processing research.</p>','',1,'John McCarthy (MIT)','','','images/tools/0/495.png',0,0,'2018-10-26','http://',NULL,'',NULL,0,'2014-07-16 18:09:02','2018-10-26 00:54:35',''),(500,1,'Umigon','<p>Umigon is a free, web-based and open-source tool for sentiment analysis of tweets. From a person\'s Twitter handle, Umigon retrieves that account\'s tweets and processes it for sentiment with accounting for factual statements (ex: \"I hate war\" will be classified has negative, and \"war in Syria\" will be classified as neutral). Tweets can also be pasted manually in the entry box provided. Beyond sentiment analysis, Umigon can identify characteristics such as whether the tweet contains a question, whether it contains possible promotional/commercial subject matter, or temporal indicators based on tense. Users are encouraged to report inaccurately identified sentiments via the button provided next to each tweet. Results can be exported in Excel or CSV format for futher analysis.</p> <p>The developer of this application can be reached on <a href=\"http://twitter.com/seinecle\">Twitter.</a></p>','http://www.umigon.com',1,'Clement Levallois','levallois@em-lyon.com','http://www.clementlevallois.net','images/tools/1/500.png',0,0,'2014-09-29','http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2281233',NULL,'',NULL,0,'2014-09-13 07:43:49','2018-05-14 20:26:12',''),(506,NULL,'CheckText','<p>CheckText is a free, web-based text analysis tool. Users can paste in text, upload it from their files, or import content from a web page. For each text, CheckText generates statistics such as word count, syllable count or number of complex words, provides a reading ease and level breakdown, and graphs the most frequent words. The tool also offers a uniqueness check aimed at detecting plagiarism, and generates a PDF report containing the full text with the statistical and readability data.</p>','http://www.checktext.org/',1,'Northstone Ltd.','info@checktext.org','http://www.northstone.us/','images/tools/1/506.png',5,0,'2014-09-29','http://',NULL,'',NULL,0,'2014-09-29 17:28:51','2017-10-31 14:26:23',''),(507,NULL,'Discursis','<p>Discursis is a tool for analyzing text-based natural language with a focus on sequential analysis. It is particularly desgined to work with texts that have an internal temporal structure, such as a transcribed conversation. For each text, it generates a statistics-based internal language model and applies tagging to each temporal unit detected. The model and tagging are then used as the basis for an interactive visualization which permits examination at a various levels of granularity, ranging from a whole-text to a unit-by-unit level; it can also show topic usage patterns within the text. Users must purchase a license; both student and academic trial licenses are available.</p>','http://www.discursis.com/',1,'Daniel Angus, Andrew Smith and Janet Wiles (University of Queensland)','tom@tombrunoli.com','http://www.discursis.com/index.php/about/','images/tools/1/507.png',0,0,'2018-10-02','http://discursis.wikispaces.com/Discursis+wiki',NULL,'',NULL,0,'2014-09-29 18:18:55','2018-10-02 16:23:43',''),(508,1,'Leximancer','<p>Leximancer is an application for identifying key concepts in a text, and exploring the results through interactive visualizations and data exports. It includes concept and network cloud visualizations, a sentiment lens, a query system, and multiple data export options for futher analysis. The system accepts texts in a variety of formats including plain text, CSV, HTML and XML, and supports 17 languages beyond English. Users can either purchase a license for the desktop version (Windows and OS X supported), or purchase access to the online LexiPortal, which charges based on months of usage rather than on a subscription basis. A free trial of the LexiPortal is also available.</p>','http://info.leximancer.com/',1,'Andrew Smith and Uniquest (University of Queensland)','contact@leximancer.com','http://uniquestportal.com/','images/tools/1/508.png',0,0,'2014-09-29','http://info.leximancer.com/tutorials/',NULL,'',NULL,0,'2014-09-29 18:52:47','2018-05-14 20:44:48',''),(509,NULL,'Jigsaw','<p>Jigsaw is a free visual analytics application for exploring collections of documents such as text or spreadsheets. It is aimed at analysists and researchers, particularly to \"help analysts reach more timely and accurate understandings of the larger stories and important concepts embedded throughout textual results\" via a collection of visualizations representing aspects such as important entities and their interconnections. The visualizations include graph, temporal and connections-based, and can be viewed on a document or corpus level.</p>','http://www.cc.gatech.edu/gvu/ii/jigsaw/',1,'John Stasko, Carsten Görg, Zhicheng Liu, Anand Sainath, Chad Stolper (Information Interfaces Group, School of Interactive Computing, Georgia Tech)','','http://www.cc.gatech.edu/gvu/ii/index.html','images/tools/1/509.png',0,0,'2018-10-05','http://www.cc.gatech.edu/gvu/ii/jigsaw/tutorial/index.html',NULL,'',NULL,0,'2014-09-29 20:04:14','2018-10-05 03:04:13',''),(510,NULL,'Alt.Text','<p>Alt.Text is a free, working prototype application for exploring a text on both an outline and content level via a graphical user interface. It breaks down texts into components such as sections, passages or documents, and permits users to leverage these components to create outlines and break off sections. Alt.Text includes three interfaces: the Document Editor (define sections, create outlines), the Section Editor (define passages of text within a given section), and the Outline Viewer (choose which passages to include in an outline section). Alt.Text is under active development, and is available for download in both Windows and OS X versions.</p>','',1,'Maher Elkhaldi and Dr. Robert Woodbury, School of Interactive Arts and Technology at Simon Fraser University','','http://www.sfu.ca/siat.html','images/tools/1/510.png',0,0,'2018-10-30','http://www.alttexting.com/tutorials/',NULL,'',NULL,0,'2014-09-29 20:24:28','2018-10-30 16:07:39',''),(511,NULL,'Data Desk','<p>Data Desk  is a commercial application for data exploration, analysis and visualization available for both OS X and Windows systems. It uses a graphical user interface to provide numerous tools for working with data, and can generate several distinct views. Notably, the program is designed from an exploratory rather than inferential analysis perspective. An academic license is available for users with a .edu email address; academic users without a .edu address can purchase by contacting Data Description, Inc. directly. A trial license is also available.</p>','https://datadescription.com/',1,'Data Description, Inc.','','http://www.datadesk.com/','images/tools/1/511.png',0,0,'2018-10-05','http://www.datadesk.com/support/datadesk.php',NULL,'',NULL,0,'2014-11-13 18:32:24','2018-10-05 02:53:06',''),(512,1,'Dataplot','<p>Dataplot is a free software system for data analysis, including characterization, visualization and modelling. It was developed in FORTRAN 77, and has been in continuous development since 1978. Dataplot is well-documented, with numerous tutorials for using and extending it. In addiiton, over 30 graphic types are supported, such as histograms, box plots, scatter plots and normal probability plots. This tool is currently available in Unix, Linux, OS X and Windows versions. Dataplot is open source, but is trademarked rather than licensed.</p>','http://www.itl.nist.gov/div898/software/dataplot/homepage.htm',1,'Alan Heckert and Jim Filliben, National Institute of Standards and Technology','','http://www.itl.nist.gov/div898/','images/tools/1/512.png',0,0,'2018-10-05','http://www.itl.nist.gov/div898/software/dataplot/document.htm',NULL,'',NULL,0,'2014-11-13 19:20:12','2018-10-05 03:02:29',''),(513,1,'Coggle','<p>Coggle is a web-based tool for visualizing and applying non-linear structuring to information. Though Coggle has been used for mind mapping, it is primarily a method of documenting branching and non-linear information, and encompassing multiple perspectives. It utlizes a drag and drop interface for integrating images, permits multiple users to edit at the same time without causing data conflicts, and supports Markdown and LaTeX formatting. Coggle diagrams can be interlinked, branches of one diagram can be spawned off into its own diagram connected back to the original, and individual branches can be linked via hashtags. The tool includes an API that permits users to interface their diagrams with other programs and manupulate or examine them, and diagrams can also be exported in various formats such as plain-text outline, vector PDFs or images. Coggle is free except where users require more than 100 monthly active users or a closed source version.</p>','http://coggle.it/',1,'Coggle','','http://coggle.it','images/tools/1/513.png',0,0,'2018-10-05','https://d3bulw1k28xkbc.cloudfront.net/diagram/532f2f5007eb88f857000976/06b3a62e14eb54cf7e99086f3cf7dd0398af0ecca4476a8778cad4a67eba53bb',NULL,'',NULL,0,'2014-11-14 23:02:01','2018-10-05 04:06:58',''),(514,1,'Community Contributed Collection (CoCoCo)','<p>Community Contributed Collection (CoCoCo) is web software developed by the RunCoCo Project at the University of Oxford for collecting, cataloguing and managing web content such as text or uploaded files contributed by a community of users. It enables administrators to assess contributions for quality, approve project-appropriate contributions, and apply metadata where required. Once a contribution is approved, it is available for searching and browsing through the provided interface. CoCoCo utilizes Ruby on Rails, and is available under an Open Source version 3.0 license.</p>','http://projects.oucs.ox.ac.uk/runcoco/index.html',1,'RunCoCo Project, University of Oxford','runcoco@it.ox.ac.uk','http://projects.oucs.ox.ac.uk/runcoco/index.html','images/tools/1/514.png',0,0,'2018-10-30','http://projects.oucs.ox.ac.uk/runcoco/resources/cococo.html',NULL,'',NULL,0,'2014-11-14 23:17:02','2018-10-30 16:25:38',''),(515,1,'Project Quincy','<p>Project Quincy is a free, open source Django application and MySQL database for tracing the development of social networks and instititions across time and space. Aimed at historians, it enables users to map networks in historical documentation such as biographic, organizational, correspondance or location. Creator Jean Bauer has developed Project Quincy as a single generalizable and extensible database with applications beyond mapping historic connections. All code is available via Github repository, or by contacting the creator directly.</p>','http://projectquincy.org/',1,'Jean Bauer','','http://www.jeanbauer.com/','images/tools/1/515.png',0,0,'2018-10-05','https://github.com/jabauer/projectquincy2',NULL,'',NULL,0,'2014-11-17 17:36:23','2018-10-05 03:00:00',''),(516,1,'Lexos','<p>Lexos is a free, web-based workflow for text analysis offered by Wheaton College\'s Lexomics Project. Lexos is the most recent and distinct iteration of the Lexomics system of tools, enabling users to upload a text and use the Lexos interface to apply transformations, visualizations, scrubbing and analytic processes without needing to re-add the text for each step.</p>','http://lexos.wheatoncollege.edu/upload',1,'Lexomics Research Group, Wheaton College','','http://wheatoncollege.edu/lexomics/','images/tools/1/516.png',0,0,'2014-11-17','http://wheatoncs.github.io/Lexos/',NULL,'',NULL,0,'2014-11-17 18:35:42','2018-05-14 20:28:03',''),(517,1,'Visual Understanding Environment (VUE)','<p>Visual Understanding Environment (VUE) is a free, open source application for mapping concepts, ideas and digital content. It enables users to generate nodes and links, and apply a simple set of tools to explore the relationships. VUE is, in the words of its developers, an application to \"integrate, organize and contextualize electronic content\" in research or learning environments. Its tools include visualization, dynamic content mapping, semantic mapping, enhanced pathways and search functions.</p>','http://vue.tufts.edu/index.cfm',1,'VUE Project, Tufts University','','http://vue.tufts.edu/','images/tools/1/517.png',0,0,'2018-10-12','http://vue.tufts.edu/help/index.cfm',NULL,'https://github.com/VUE/VUE',NULL,0,'2014-11-17 19:27:35','2018-10-12 01:55:06',''),(518,1,'NodeBox','<p>NodeBox is an open-source package of tools that includes the capacity to visualize large data sets. It utilizes interconnected nodes to generate and manipulate data visualizations, and can import data either from common programs such as Excel, or from custom user-developed importers.</p>','https://www.nodebox.net/',1,'Experimental Media Research Group, St. Lucas University College of Art and Design','','http://www.emrg.be/','images/tools/1/518.png',0,0,'2014-11-26','https://www.nodebox.net/node/documentation/',NULL,'',NULL,0,'2014-11-17 20:09:19','2018-05-14 20:27:18',''),(519,1,'Qualrus','<p>Qualrus is a commercial application for qualitative data analysis, including data coding and statistics functions. It can analyze data from a wide variety of sources, including common text, web, image, video and audio files. The data coding functions are supplemented by machine learning processes to assist data processing and analysis. In terms of analysis, it offers a number of common text analysis functions including tokenization, co-occurences, and Boolean search, and can visualize a network view of interrelationships. It is particularly aimed at academic and institutional applications, and both student and free trial versions are avaiable.</p>','http://www.qualrus.com/',1,'The Idea Works, Inc.','','http://www.ideaworks.com/','images/tools/1/519.png',0,0,'2018-10-05','http://www.ideaworks.com/qualrus/support.html',NULL,'',NULL,0,'2014-11-17 21:02:03','2018-10-05 18:44:40',''),(520,1,'ANTHROPAC','<p>ANTHROPAC, now in version 4.98, is a long-standing menu-driven DOS program developed for working with anthropological and other cultural data. It assists both the collection and analysis of datasets, and can accommodate both qualitiative and quantitative information. ANTHROPAC includes analytic tools such as consensus analysis, factor analysis, cluster analysis and correspondance analysis, in addition to data manipulation and transformation functions. It imports and exports data via ASCII formats, and includes an extensive reference manual, a user\'s guide and a methods guide tailored for cultural domain analysis.</p>','http://www.analytictech.com/anthropac/apacdesc.htm',1,'Analytic Technologies','','http://www.analytictech.com/extras/index.htm','images/tools/1/520.png',0,0,'2018-10-17','http://www.analytictech.com/support2.htm',NULL,'',NULL,0,'2014-11-18 16:54:24','2018-10-17 01:54:30',''),(521,1,'SwiftRiver','<p>SwiftRiver is a free, open source platform for filtering and processing large amounts of information. In particular, it can gather and filter data from common web sources such as email, Twitter or RSS. It also enables users to define \'buckets\' according to their own criteria rather than relying on, for example, the information\'s social media popularity status. Utilizing a combination of filters and buckets, users create \'rivers\' of data populated by their chosen sources. Developer Ushahidi has made all code available for general access via Github, though a custom, full-service, hosted version is available for a fee by contacting the company directly.</p>','',1,'Ushahidi','','http://www.ushahidi.com/','images/tools/1/521.png',0,0,'2018-10-18','https://wiki.ushahidi.com/display/WIKI/SwiftRiver',NULL,'',NULL,0,'2014-11-18 17:29:08','2018-10-18 05:01:39',''),(522,NULL,'Siena (Simulation Investigation for Empirical Network Analysis)','<p>Siena (Simulation Investigation for Empirical Network Analysis) is a free program for statistical analysis developed particularly to work with social network data, but also applicable to other forms of network data. It models network dynamics via Markov chain models; this approach is best applied to data where relations between actors and their behaviour can be treated as a state rather than as an event. Siena\'s statistical analysis processes can be time-consuming, as the system works via computer simulation of the network.&nbsp;It was in continuous development from 2001 through 2010, releasing versions up to 3.2. Development on Siena as a stand-alone program has concuded, and the project has shifted focus to RSiena, a version of Siena deployed in R.</p>','http://www.stats.ox.ac.uk/~snijders/siena/',1,'Tom A.B. Snijders','','http://www.stats.ox.ac.uk/~snijders/','images/tools/1/522.png',0,0,'2014-11-18','http://www.stats.ox.ac.uk/~snijders/siena/siena_articles.htm',NULL,'',NULL,0,'2014-11-18 18:07:57','2017-10-31 14:26:27',''),(523,1,'RSiena','<p>RSiena is a free, open source social network analysis package for R. It replaces Siena <span>(Simulation Investigation for Empirical Network Analysis), which was a stand-alone program for Windows. Like its predecessor, RSiena is optimized for social network data, but is also applicable to other forms of network data, and relies on Markov chain models to generate network dynamics. T<span><span>his approach is best applied to data where relations between actors and their behaviour can be treated as a state rather than as an event. Users not familiar with R can run RSiena via the provided graphical user interface.</span></span></span></p>','http://www.stats.ox.ac.uk/~snijders/siena/siena_r.htm',1,'Tom A.B. Snijders','','http://www.stats.ox.ac.uk/~snijders/','images/tools/1/523.png',0,0,'2014-11-18','http://www.stats.ox.ac.uk/~snijders/siena/RSiena_Manual.pdf',NULL,'',NULL,0,'2014-11-18 18:26:09','2018-05-14 20:27:56',''),(524,NULL,'SARIT (Search and Retrieval of Indic Texts)','<p>SARIT (Search and Retrieval of Indic Texts) is a library of Indic texts with tools for search, retrieval and analysis built into the website. This includes options to apply a KWIC or concordance encompassing all matching texts for a site search. SARIT was developed from a modified version of PhiloLogic. The full SARIT collection with TEI-compatible markup is also available via Github.</p>','http://sarit.indology.info/',1,'Dominik Wujastyk ','','http://indology.info/','images/tools/1/524.png',0,0,'2014-11-18','https://github.com/paddymcall/SARIT',NULL,'',NULL,0,'2014-11-18 19:08:59','2017-10-31 14:26:28',''),(525,1,'Carrot2','<p>Carrot2 is a free, open source search clustering engine with additional document categorization functions. For each set of search terms, Carrot2 provides a topic tree and subtopics built from the search results, and generates visualizations that enable users to quickly overview their search. Searches can be filtered according to source, such as Bing, image files or the Wikipedia, results can be clustered according to several presets such as K-means or URL, or filtered by country and langauge. Carrot2 enables users to download results in ranges from 50 to 200 for further analysis.</p>','http://search.carrot2.org/stable/search',1,'Stanislaw Osinski, Dawid Weiss','','http://project.carrot2.org/authors.html','images/tools/1/525.png',0,0,'2018-10-30','http://project.carrot2.org/documentation.html',NULL,'',NULL,0,'2014-11-18 20:04:26','2018-10-30 16:23:02',''),(526,1,'Casual','<p>Casual is a free, open source tool for generating a visualization of concepts from a key word search. It uses Wikipedia for conceptual information, and can also include Google Image search results where applicable. Users can click on a term to generate a new search from that term, while image results can be rearranged by clicking and dragging them to the desired location. Casual can produce visualizations ranging from 10 to 400 concepts in size, and can retrieve information for queries in a wide variety of languages. This tool is no longer supported; development appears to have ceased in 2009.</p>','',1,'Jaume Nualart','','http://nualart.cat/','images/tools/1/526.png',0,0,'2018-09-21','http://nualart.com/casual/help.html',NULL,'',NULL,0,'2014-11-19 17:59:09','2018-09-21 00:09:54',''),(527,1,'Digress.it','<p>Digress.it was a free, open source WordPress plugin for annotating texts on the paragraph level, particularly of article to book-length documents. It permitted blog-like threaded discussions to occur in the margins of the text, and was aimed at facilitating scholarly, literary, political and other discussions. While the main website is no longer available, Digress.it is still available via the <a href=\"https://wordpress.org/plugins/digressit/\">WordPress plugin directory</a>.</p>','https://web.archive.org/web/*/http://digress.it/',1,'Eddie A. Tejeda','','http://www.visudo.com/','images/tools/1/527.png',0,0,'2018-10-05','https://web.archive.org/web/20140518180610/http://digress.it/help/',NULL,'',NULL,0,'2014-11-19 19:32:33','2018-10-05 19:36:48',''),(529,NULL,'ContaWords','<p><span>With&nbsp;</span><strong>ContaWords</strong><span>&nbsp;you can quickly and easily get a frequency analysis of your texts (pdf, html, txt). The results can be downloaded and easily handled.</span></p> <p>When you give <strong>ContaWords</strong> a task, it first reads the words of a text file and decides what part of speech to assign to each word (credit-Noun-credit but credit-Verb-to_credit). It then begins to count how many times a word appears in the text in every possible way (credits, credit, credited&hellip; etc).</p> <p><strong>ContaWords</strong> can also take into account that a sequence of words can, for example, be the name of an organization, a person or an entity (Named Entity Recognition).</p> <p>Besides all this, <strong>ContaWords</strong> can find sequences of two words that seem to appear together more often than would be expected, such as \"monetary policy \" or \"fiscal balance \".</p>','http://contawords.iula.upf.edu/',0,'IULA-UPF CLARIN Competence Center','iulatrl@upf.edu','http://www.clarin-es-lab.org/index-en.html','images/tools/1/529.png',5,0,'2014-11-26','http://repositori.upf.edu/handle/10230/22602',NULL,'',NULL,0,'2014-11-25 10:42:49','2017-10-31 14:26:29',''),(530,NULL,'Alveo','<p>Alveo is a platform for data discovery and analysis focused on communication data such as speech, text or video. Developed by the University of Western Sydney, researchers can use the Alveo infrastructure to store data, create collections, develop workflows, and analyze datasets with Alveo\'s built-in tools. The tools available span multiple disciplines and include common functions such as tokenization and concordance, plus interfaces between Alveo and other common analysis tools such as Apache\'s UIMA for NLP, and with programming languages such as Python and Java. Users can segmented and recombined data from multiple collections into a new, focused dataset for close analysis. Collection creators can set their own license and access rights, and users of a collection must accept the creator\'s conditions in order to use data from it. User accounts are free, but must be requested from and approved by Alveo.</p>','http://alveo.edu.au/',1,'Steve Cassidy, Dominique Estival, Tim Jones, Denis Burnham and Jared Berghold (University of Western Sydney)','','http://alveo.edu.au/','images/tools/1/530.png',0,0,'2018-10-12','http://alveo.edu.au/tutorials/',NULL,'',NULL,0,'2015-01-12 21:41:14','2018-10-12 02:56:29',''),(532,NULL,'SemLens','<p>SemLens is a tool for visualizing and analyzing RDF data <span>developed as part of the Visual Data Web toolset and based on the Adobe Flex open source framework. Using SPARQL to access the user\'s dataset, it arranges RDF data into a scatter plot which can be analyzed via semantic lenses generated based on the dataset, and with logical operators. The tool provides a global overview of the user\'s dataset, and can do so even for large datasets.</span></p>','http://www.visualdataweb.org/semlens.php',1,'DEI Interactive Systems Group','contact@visualdataweb.org','http://www.visualdataweb.org/people.php','images/tools/1/532.png',0,0,'2018-10-26','http://www.visualdataweb.org/semlens.php',NULL,'',NULL,0,'2015-02-09 20:08:02','2018-10-26 01:10:00',''),(533,NULL,'gFacet','<p><span>gFacet is a tool for graph-based visualization of RDF data <span>developed as part of the Visual Data Web toolset and based on the Adobe Flex open source framework. Using SPARQL to access the user\'s dataset, it integrates filtering based on facets represented as nodes within the visualization to enable users to select which they wish to work with and create custom search interfaces. <br></span></span></p>','http://www.visualdataweb.org/gfacet.php',1,'DEI Interactive Systems Group','contact@visualdataweb.org','http://www.visualdataweb.org/people.php','images/tools/1/533.png',0,0,'2018-09-18','http://www.visualdataweb.org/gfacet.php',NULL,'',NULL,0,'2015-02-09 20:27:11','2018-09-18 02:24:54',''),(534,NULL,'tFacet','tFacet applies known interaction concepts to allow hierarchical faceted exploration of RDF data. The aim is to facilitate ordinary users to formulate semantically unambiguous queries so as to support the fast and precise access to information. Used interaction concepts are e.g. a directory tree and interchangeable columns that are already well-known from other applications. The directory tree, for example, is used to enable the intuitive exploration and selection of hierarchical facets. tFacet is based on the open source framework Adobe Flex and uses SPARQL to access RDF datasets.','http://www.visualdataweb.org/tfacet.php',1,'DEI Interactive Systems Group','contact@visualdataweb.org','http://www.visualdataweb.org/people.php','images/tools/1/534.png',0,0,'2018-10-26','http://www.visualdataweb.org/tfacet.php',NULL,'',NULL,0,'2015-02-09 20:39:21','2018-10-26 01:10:40',''),(536,NULL,'minezy','<p>minezy is a prototype application for exploring and mining large email archives. Its interface is designed to make it easy to find the answers to common questions: who the message originator was, when messages were sent, how frequently, who was included in the exchange, and the subject and content. The app interface is designed around search, filters and a series of panels that open to the right when results and sub-results are clicked on. The prototype can be tried out via the minezy website, and is pre-loaded with the Enron collection of emails for exploration.</p>','',1,'T. Christian Miller, Paul Quinn and Matt Quinn','','http://minezy.org/','images/tools/1/536.png',0,0,'2018-11-06','http://minezy.org/',NULL,'',NULL,0,'2015-03-02 20:22:59','2018-11-06 06:32:39',''),(537,936,'WIScker','WIScker is a tool for generating corpi from Wikipedia articles. It takes all of the various versions and edits of an article over time and creates a comparative corpus out of them. The corpus can then be analyzed using a built-in button to access voyant tools, or can be exported in a text file in various different formats.','http://cloud.tapor.ca/wiscker/',0,'Andrea and Robert Budac','','','images/tools/1/537.png',4,0,'2018-10-17',NULL,NULL,'',NULL,0,'2016-03-01 20:17:45','2018-10-17 05:17:25',''),(538,937,'Voyant (Default Skin)','Voyant is a suite of text analysis tools that work on the web. The default skin provides basic tools for analyzing a single text or a collection.','http://voyant-tools.org',0,'Stéfan Sinclair','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/538.png',5,0,'2016-03-09',NULL,NULL,'',NULL,0,'2016-03-09 15:31:00','2018-06-02 14:19:09',''),(539,938,'Keyword Frequency Analyzer','This tool will look through a collection of documents and returns the relative frequencies for whatever keywords you tell it to look for. The output is in csv format and contains relative frequencies for each word, as well as the sum of the relative frequencies of all keywords.','',0,'Kevin Schenk & Boris Capitanu','','',NULL,0,0,'2016-03-16',NULL,'#!/usr/bin/env python\n\n\"\"\"Keyword Frequency Analyzer\nThis script calculates the relative frequencies of a list of keywords.\nThe results can be used to classify documents, given a careful choice of the keywords.\nThe script outputs the frequency of each word, and the sum of relative frequencies of\nall keywords per text, to a CSV file.\n\"\"\"\n\nfrom __future__ import print_function\nimport argparse\nimport csv\nimport glob\nimport json\nimport os\nimport sys\nimport time\nfrom datetime import timedelta\nfrom functools import partial\nfrom io import open, StringIO\nfrom multiprocessing import Pool\nfrom urllib2 import Request, urlopen, URLError, HTTPError\nfrom zipfile import ZipFile\nimport regex\nfrom pairtree import pairtree_path\n\n__author__ = \"Kevin Schenk, Boris Capitanu\"\n__version__ = \"1.2.0\"\n\n\nSOLR_QUERY_TPL = \"http://chinkapin.pti.indiana.edu:9994/solr/meta/select?q=id:{}&amp;fl=title,author,publishDate\" \\\n                 \"&amp;wt=json&amp;omitHeader=true\"\nPAIRTREE_REGEX = regex.compile(ur\"(?P[^/]+)/pairtree_root/(?P.+)/(?P[^/]+)\\.[^.]+$\")\nEOL_HYPHEN_REGEX = regex.compile(ur\"(?m)(\\S*\\p{L})-\\s*\\n(\\p{L}\\S*)\\s*\")\nPUNCT_REGEX = regex.compile(ur\"[^\\P{P}-\']+\")\nCONTRACTION_REGEX = regex.compile(ur\"\'s\\b\")\n\n\ndef clean_and_normalize(text):\n    \"\"\"Clean the specified text by combining end-of-line hyphenated words, removing punctuation, etc.\n    :param text: The text\n    :return: The cleaned text\n    \"\"\"\n    text = EOL_HYPHEN_REGEX.sub(r\"\\1\\2\\n\", text)  # join end-of-line hyphenated words\n    text = PUNCT_REGEX.sub(\" \", text)  # remove all punctuation except hyphens and apostrophes\n    text = CONTRACTION_REGEX.sub(\"\", text)  # remove the \'s contraction from words (as required by project specs)\n    text = text.lower()\n    return text\n\n\ndef drop_untracked_tokens(words, tracked_tokens):\n    \"\"\"Reduce the problem space by dropping all words that are not part of the keywords list\n    :param words: The list words making up the text to be processed\n    :param tracked_tokens: The unique set of words (tokens) that are part of the keyword list\n    :return: The reduced set of words with all non-keyword words removed (and replaced by a separator)\n    \"\"\"\n    tracked_wordseq = []\n    marker_added = False\n    for w in words:\n        if w not in tracked_tokens:\n            if not marker_added:\n                tracked_wordseq.append(\'|\')\n                marker_added = True\n        else:\n            tracked_wordseq.append(w)\n            marker_added = False\n\n    return tracked_wordseq\n\n\ndef find_relative_frequencies(text, keywords_regexps, tokens=None):\n    \"\"\"Calculate the relative frequencies of a set of keywords in a text document\n    :param text: The text document\n    :param keywords_regexps: The keyword -&gt; regexp map for finding occurrences of the keyword in the text\n    :param tokens: The unique set of tokens that are part of the keywords\n    :return: The word count and relative frequency values\n    \"\"\"\n    text_freqs = {}\n    rel_freqs = {}\n\n    text = clean_and_normalize(text)\n    words = text.split()\n    word_count = len(words)\n    rel_freqs[\"WordCount\"] = word_count\n\n    if tokens is not None:\n        words = drop_untracked_tokens(words, tracked_tokens=tokens)\n        text = \' \'.join(words)\n\n    for keyword in keywords_regexps.keys():\n        text_freqs[keyword] = len(keywords_regexps[keyword].findall(text))\n\n    rel_freq_sum = 0\n    for key, value in text_freqs.items():\n        rel_freq_sum += float(value) / float(word_count)\n\n    rel_freqs[\"RelFreqSum\"] = rel_freq_sum\n    rel_freqs[\"Frequencies\"] = text_freqs\n\n    return rel_freqs\n\n\ndef log_freqs(result, file_path, output_csv, keywords):\n    \"\"\"Saves the result to the output CSV\n    :param result: The word count and relative frequency values\n    :param file_path: The file path of the file being processed\n    :param output_csv: The output CSV file object\n    :param keywords: The keywords\n    :return:\n    \"\"\"\n    # TODO: Title, Author, etc.\n    text_freqs = result[\"Frequencies\"]\n\n    # add default values for missing attributes\n    for attr in [\"VolID\", \"Title\", \"Author\", \"Year\"]:\n        result.setdefault(attr, \"\")\n\n    output_csv.writerow(\n        [file_path.encode(\'utf-8\'),\n         result[\"VolID\"].encode(\'utf-8\'),\n         result[\"Title\"].encode(\'utf-8\'),\n         result[\"Author\"].encode(\'utf-8\'),\n         result[\"Year\"].encode(\'utf-8\'),\n         result[\"WordCount\"],\n         result[\"RelFreqSum\"]\n         ] + [text_freqs[keyword] for keyword in keywords])\n\n\ndef get_htrc_id(zip_path):\n    \"\"\"Parses a pairtree path to extract the HT volume ID\n    :param zip_path: The path to the HT pairtree ZIP file\n    :return: The HT volume id\n    \"\"\"\n    pt_parts = PAIRTREE_REGEX.search(zip_path)\n    libid = pt_parts.group(\"libid\")\n    cleanid = pt_parts.group(\"cleanid\")\n    htrc_id = pairtree_path.id_decode(\"{}.{}\".format(libid, cleanid))\n\n    return htrc_id\n\n\ndef get_meta(htrc_id):\n    \"\"\"Retrieves volume metadata for a volume referenced by `htrc_id`\n    :param htrc_id: The HT id\n    :return: The metadata object for the volume (or empty if error occurred)\n    \"\"\"\n    meta = {}\n    query = SOLR_QUERY_TPL.format(htrc_id.replace(\":\", \"\\\\:\"))\n    req = Request(query)\n    try:\n        url = urlopen(req)\n    except HTTPError as e:\n        print(\"{}: get_meta({}): The server couldn\'t fulfill the request.\".format(htrc_id, e.code))\n    except URLError as e:\n        print(\"{}: Failed to contact SOLR. Reason: {}\".format(htrc_id, e.reason))\n    else:\n        respdata = url.read()\n        try:\n            response = respdata.decode(\"utf-8\")\n        except UnicodeDecodeError:\n            try:\n                response = respdata.decode(\"cp1252\")\n            except:\n                print(\"{}: Cannot decode response from SOLR\".format(htrc_id))\n                return meta\n        response = json.loads(response)[\"response\"]\n        url.close()\n        num_found = response[\"numFound\"]\n        if num_found == 0:\n            print(\"{}: No metadata found in SOLR.\".format(htrc_id))\n        else:\n            if num_found &gt; 1:\n                print(\"{}: {} metadata records were found - using the first result.\".format(htrc_id, num_found))\n            doc = response[\"docs\"][0]\n            if \"title\" in doc:\n                meta[\"Title\"] = \"; \".join(doc[\"title\"])\n            if \"author\" in doc:\n                meta[\"Author\"] = \"; \".join(doc[\"author\"])\n            if \"publishDate\" in doc:\n                meta[\"Year\"] = \"; \".join(doc[\"publishDate\"])\n\n    return meta\n\n\ndef process_zip_volume(zip_path, keywords_regexps, tokens=None):\n    \"\"\"Processes a HT pairtree ZIP volume to calculate the relative frequency values of the given keywords\n    :param zip_path: The path to the HT pairtree volume ZIP file\n    :param keywords_regexps: The keyword -&gt; regexp mapping\n    :param tokens: The unique set of tokens that are part of the keywords\n    :return: The relative frequencies\n    \"\"\"\n    htrc_id = get_htrc_id(zip_path)\n\n    print(\"Finding frequencies for: {}\".format(htrc_id))\n\n    meta = get_meta(htrc_id)\n    text = StringIO()\n\n    with ZipFile(zip_path, \'r\') as zipfile:\n        page_files = [zip_entry.filename for zip_entry in zipfile.infolist() if\n                      zip_entry.filename.lower().endswith(\".txt\")]\n        for filename in sorted(page_files):\n            text.write(u\' \')\n            text.write(zipfile.read(filename).decode(\'utf-8\'))\n\n    text = text.getvalue()\n\n    rel_freqs = find_relative_frequencies(text, keywords_regexps, tokens)\n    rel_freqs.update(meta)\n    rel_freqs[\"VolID\"] = htrc_id\n\n    return rel_freqs\n\n\ndef process_txt_volume(file_path, keywords_regexps, tokens=None):\n    \"\"\"Processes a text file to calculate the relative frequency values of the given keywords\n    :param file_path: The text file path\n    :param keywords_regexps: The keyword -&gt; regexp mapping\n    :param tokens: The unique set of tokens that are part of the keywords\n    :return: The relative frequencies\n    \"\"\"\n    root, filename = os.path.split(file_path)\n    print(\"Finding frequencies for \" + filename)\n\n    with open(file_path, encoding=\'utf-8\') as text_file:\n        text = text_file.read()\n\n    rel_freqs = find_relative_frequencies(text, keywords_regexps, tokens)\n\n    # rel_freqs[\"Title\"] =\n    # rel_freqs[\"Author\"] =\n    # rel_freqs[\"Year\"] =\n    rel_freqs[\"VolID\"] = filename\n\n    return rel_freqs\n\n\ndef read_keyword_file(keyword_filename):\n    \"\"\"Read the keyword file\n    :param keyword_filename: The path to the keywords file\n    :return: The keywords\n    \"\"\"\n    keywords = set()\n\n    with open(keyword_filename, encoding=\'utf-8\') as keyword_file:\n        for line in keyword_file.readlines():\n            words = line.lower().split()\n\n            if not words:  # skip empty lines\n                continue\n\n            keywords.add(tuple(words))\n\n    return keywords\n\n\ndef build_keyword_regexps(keywords):\n    \"\"\"Builds a regular expression for each keyword to aid in looking up that keyword in the text\n    :param keywords: The keywords\n    :return: The keyword -&gt; regexp mapping for all the keywords\n    \"\"\"\n    keywords_regexps = {}\n\n    for keyword in keywords:\n        keywords_regexps[keyword] = regex.compile(\'\\\\b\' + regex.escape(\' \'.join(keyword), special_only=True) + \'\\\\b\')\n\n    return keywords_regexps\n\n\ndef run(keyword_filename, glob_pattern, pt_path, output_filename):\n    start_time = time.time()\n\n    keywords = read_keyword_file(keyword_filename)\n    print(\"Keywords read: {}\".format(len(keywords)))\n\n    tokens = set(token for keyword in keywords for token in keyword)\n    keywords_regexps = build_keyword_regexps(keywords)\n\n    print(\"Reading volume files.\")\n    num_files = 0\n\n    pool = Pool()\n    with open(output_filename, \'wb\') as csv_file:\n        try:\n            output_csv = csv.writer(csv_file)\n            output_csv.writerow(\n                [\"Filename\", \"VolID\", \"Title\", \"Author\", \"Year\", \"WordCount\", \"RelFreqSum\"] +\n                [\" \".join(k).encode(\'utf-8\') for k in keywords])\n\n            if glob_pattern is not None:\n                for volume_path in glob.iglob(glob_pattern):\n                    num_files += 1\n                    pool.apply_async(process_txt_volume, (volume_path, keywords_regexps, tokens,),\n                                     callback=partial(log_freqs,\n                                                      file_path=volume_path,\n                                                      output_csv=output_csv,\n                                                      keywords=keywords))\n            elif pt_path is not None:\n                for root, dirs, files in os.walk(pt_path):\n                    for zip_file in [file_path for file_path in files if file_path.lower().endswith(\".zip\")]:\n                        num_files += 1\n                        volume_path = os.path.join(root, zip_file)\n                        pool.apply_async(process_zip_volume, (volume_path, keywords_regexps, tokens,),\n                                         callback=partial(log_freqs,\n                                                          file_path=volume_path,\n                                                          output_csv=output_csv,\n                                                          keywords=keywords))\n        finally:\n            pool.close()\n            pool.join()\n\n    print(\"Files processed: {}\".format(num_files))\n\n    elapsed = int(time.time() - start_time)\n    print(\"Time elapsed: {}\".format(timedelta(seconds=elapsed)))\n\n\nif __name__ == \'__main__\':\n    parser = argparse.ArgumentParser(\n        description=\'Calculate the frequency of keywords in text files. \'\n                    \'Creates an output file ranking by relative frequency.\',\n        formatter_class=argparse.ArgumentDefaultsHelpFormatter\n    )\n    parser.add_argument(\'--keywords\', dest=\'keyword_filename\', required=True,\n                        help=\'A text file containing the line-break-separated keywords to use\')\n    parser.add_argument(\'--output\', dest=\'output_filename\', required=True,\n                        help=\"The output CSV file\")\n\n    action = parser.add_mutually_exclusive_group(required=True)\n    action.add_argument(\'--glob\', dest=\'glob_pattern\',\n                        help=\"A glob pattern specifying the files to process\")\n    action.add_argument(\'--pairtree\', dest=\'pairtree_path\',\n                        help=\"The root folder of the HT pairtree hierarchy to process\")\n\n    args = parser.parse_args()\n\n    keyword_filename = args.keyword_filename\n    output_filename = args.output_filename\n    glob_pattern = args.glob_pattern\n    pt_path = args.pairtree_path\n\n    if not os.path.exists(keyword_filename):\n        sys.exit(\"Keywords file not found: {}\".format(keyword_filename))\n\n    if pt_path is not None and not os.path.exists(pt_path):\n        sys.exit(\"Pairtree path not found: {}\".format(pt_path))\n\n    run(keyword_filename, glob_pattern, pt_path, output_filename)','https://github.com/htrc/ACS-TT/tree/master/tools/keywordfrequencyanalyzer',0,1,'2016-03-16 03:55:12','2018-05-14 20:56:17',''),(540,938,'Youtube Scraper CSV Cleaner','A very simple/specialized piece of Java code that takes a csv file produced by \"Youtube Comment Scraper\" - http://ytcomments.klostermann.ca/ and collapses the replies down into the same categories that basic comments are under. This makes it easier to compare all comments to each other.\n\nNOTE: The name of the csv file to be parsed has to be written into the code, assigned to the variable \"inFile\".','',0,'Robert Budac','','','images/tools/1/540.png',0,0,'2016-10-17',NULL,'import java.io.BufferedReader;\nimport java.io.FileReader;\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.io.PrintWriter;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Parser {\n	public static void main(String args[]) {\n       System.out.println(\"Hello World!\");\n       List stuff = null;\n       PrintWriter pw = null;\n       String inFile = \"[PUT FILE NAME HERE, MINUS EXTENSION]\";\n       \n       try {\n    	   stuff = readFile(inFile + \".csv\");\n       } catch (Exception e) {\n    	   e.printStackTrace();\n       }\n       \n	   try {\n		   pw = new PrintWriter(new FileWriter(\"2\" + inFile + \".csv\"));	\n	   } catch (IOException e) {\n		   e.printStackTrace();\n	   }\n       \n	   //CSV Youtube Comment files.\n	   for (int i = 0; i &lt; stuff.size(); i++) {\n		   if (i == 1) {\n			   pw.println(\"id,user,date,timestamp,commentText,likes,hasReplies,numberOfReplies\");\n		   }\n		   else if (stuff.get(i).substring(0, 8).equals(\",,,,,,,,\")) {\n			   pw.println(stuff.get(i).substring(8) + \",is_reply,0\");\n		   }\n		   else {\n			   pw.println(stuff.get(i).substring(0, stuff.get(i).length() - 6));\n		   }\n	   }\n	   \n       pw.close();\n	   System.out.println(\"Goodbye.\");\n	}\n	\n	private static List readFile(String filename) throws Exception {\n		String line = null;\n		List records = new ArrayList();\n			 \n		// wrap a BufferedReader around FileReader\n		BufferedReader bufferedReader = new BufferedReader(new FileReader(filename));\n			 \n		// use the readLine method of the BufferedReader to read one line at a time.\n		// the readLine method returns null when there is nothing else to read.\n		while ((line = bufferedReader.readLine()) != null) {\n			records.add(line);\n		}\n	\n		// close the BufferedReader when we\'re done\n		bufferedReader.close();\n		return records;\n	}\n}\n','',4,1,'2016-03-16 04:20:14','2016-10-17 17:08:42',''),(541,936,'Testing Tool','','',1,'','','',NULL,0,1,'2016-03-16',NULL,NULL,'',NULL,0,'2016-03-16 15:09:24','2017-10-31 14:26:30',''),(542,945,'BJP','','http://www.bjp.org/',0,'','','',NULL,0,1,'2016-03-24',NULL,NULL,'',NULL,0,'2016-03-24 12:19:01','2017-10-31 14:26:30',''),(543,945,'BJP','','http://www.bjp.org/',0,'','','',NULL,0,1,'2016-03-24',NULL,NULL,'',NULL,0,'2016-03-24 12:19:01','2017-10-31 14:26:30',''),(544,936,'Hypothesis','Hypothesis is an online annotation tool. It allows you to see community annotations and store your own annotations for anything on the internet.','https://hypothes.is/',0,'Dan Whaley et. al','','https://hypothes.is/team/','images/tools/1/544.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 19:28:58','2017-10-31 14:26:30',''),(545,936,'Critic Markup','Critic Markup is a simple plain text markdown language that can be used for noting changes and revisions in text over time. It’s a simple language that has toolkits that allow it to be used in some popular applications.','http://criticmarkup.com/',0,'Gabe Weatherhead and Erik Hess','','https://twitter.com/themindfulbit, https://twitter.com/macdrifter','images/tools/1/545.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 19:48:06','2017-10-31 14:26:31',''),(546,936,'EgoWeb 2.0','EgoWeb 2.0 is a tool for graphing social networks. It allows for various types of data collection to be used, and can present and export data. It’s open source, and allows for a number of different data collection methods.','http://www.rand.org/methods/egoweb.html',0,'David P. Kennedy','davidk@rand.org','http://www.rand.org/about/people/k/kennedy_david.html','images/tools/1/546.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 20:05:06','2017-10-31 14:26:31',''),(547,936,'graph-tool','graph-tool is a python library implemented in C++ that allows for a number of statistical analyses with graphs.','http://graph-tool.skewed.de/',0,'','','','images/tools/1/547.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 20:27:59','2017-10-31 14:26:31',''),(548,936,'Linguistic Inquiry and Word Count','LIWC does a detailed linguistic analysis of a piece of writing, looking at a variety of different factors withing that writing. It allows for a variety of different analyses,','http://liwc.wpengine.com/',0,'','','','images/tools/1/548.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 23:15:02','2017-10-31 14:26:31',''),(549,936,'Zubrag HTML Tags Stripper','This tool simply takes HTML and returns it without the HTML tags.','http://www.zubrag.com/tools/html-tags-stripper.php',0,'','','','images/tools/1/549.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 23:30:40','2017-10-31 14:26:32',''),(550,936,'igraph','igraph is a network analysis tool that can be used in R, python, and C++. It\'s focused on usability, portability, and ease of use.','http://igraph.org/redirect.html',0,'','','','images/tools/1/550.png',0,0,'2016-03-27',NULL,NULL,'',NULL,0,'2016-03-27 23:53:49','2017-10-31 14:26:32',''),(551,936,'igraph','Igraph is a series of network analysis function libraries and tools built into C, C++, R, and python. It’s free, open source, and focuses on usability and portability.','http://igraph.org/',0,'','','','images/tools/1/551.png',0,0,'2016-04-17',NULL,NULL,'',NULL,0,'2016-04-17 21:45:33','2017-10-31 14:26:32',''),(552,936,'Cytoscape','Cytoscape does a number of tasks related to network analysis and visualization. It’s geared towards working with web-related systems, but can be used to work with any kind of attribute.','http://www.cytoscape.org/',0,'','','','images/tools/1/552.png',0,0,'2016-04-17',NULL,NULL,'',NULL,0,'2016-04-17 21:51:33','2017-10-31 14:26:32',''),(553,936,'Linkurious','Linkurious is a network analysis and visualization tool. It’s easy to use, and can be used with a variety of graph databases. It provides a variety of analytics and visualizations.','https://linkurio.us/',0,'','','','images/tools/1/553.png',0,0,'2016-04-17',NULL,NULL,'',NULL,0,'2016-04-17 22:55:59','2017-10-31 14:26:32',''),(554,936,'Lynks','Lynks is a system that allows for simple and straightforward sharing and exploration of various kinds of network data. It focuses on ease of sharing and visualization, as well as collaboration on networks. You can create a network from scratch on it, or you can use existing data to populate the network visualization.','https://lynksoft.com/',0,'Leiden University','info@lynksoft.com','','images/tools/1/554.png',0,1,'2016-04-18',NULL,NULL,'',NULL,0,'2016-04-18 22:35:47','2017-10-31 14:26:33',''),(555,936,'Lynks','Lynks is a system that allows for simple and straightforward sharing and exploration of various kinds of network data. It focuses on ease of sharing and visualization, as well as collaboration on networks. You can create a network from scratch on it, or you can use existing data to populate the network visualization.','https://lynksoft.com/',0,'Leiden University','info@lynksoft.com','','images/tools/1/555.png',0,0,'2016-04-18',NULL,NULL,'',NULL,0,'2016-04-18 23:25:56','2017-10-31 14:26:33',''),(560,936,'Lynks','Lynks is a system that allows for simple and straightforward sharing and exploration of various kinds of network data. It focuses on ease of sharing and visualization, as well as collaboration on networks. You can create a network from scratch on it, or you can use existing data to populate the network visualization.','https://lynksoft.com/',0,'','','','images/tools/1/560.png',0,1,'2016-04-19',NULL,NULL,'',NULL,0,'2016-04-19 01:31:42','2017-10-31 14:26:33',''),(562,936,'Lynks','Lynks is a system that allows for simple and straightforward sharing and exploration of various kinds of network data. It focuses on ease of sharing and visualization, as well as collaboration on networks. You can create a network from scratch on it, or you can use existing data to populate the network visualization.','https://lynksoft.com/',0,'','info@lynksoft.com','','images/tools/1/562.png',0,1,'2016-04-19',NULL,NULL,'',NULL,0,'2016-04-19 17:27:51','2017-10-31 14:26:33',''),(564,936,'Lynks','Lynks is a system that allows for simple and straightforward sharing and exploration of various kinds of network data. It focuses on ease of sharing and visualization, as well as collaboration on networks. You can create a network from scratch on it, or you can use existing data to populate the network visualization.','https://lynksoft.com/',0,'','info@lynksoft.com','','images/tools/1/564.png',0,1,'2016-04-19',NULL,NULL,'',NULL,0,'2016-04-19 17:28:01','2017-10-31 14:26:33',''),(565,936,'Neo4j Console','Neo4j Console is a fairly simple to use visualization graph tool for relational databases. It allows you to add databases and visualize them using queries.','http://console.neo4j.org/',0,'','','','images/tools/1/565.png',0,0,'2016-04-19',NULL,NULL,'',NULL,0,'2016-04-19 17:46:19','2017-10-31 14:26:33',''),(567,936,'NetDraw','NetDraw is a tool for creating visualizations of networks. It can create various visualizations of several data types, and allows for customization of many aspects of their relationships.','https://sites.google.com/site/netdrawsoftware/',0,'','','','images/tools/1/567.png',0,0,'2016-04-19',NULL,NULL,'',NULL,0,'2016-04-19 18:11:00','2017-10-31 14:26:33',''),(568,936,'NetworkX','NetworkX is a python software package that allows for the visualization and analysis of various networks. It\'s flexible in they types of things that it can show through networking.','http://networkx.github.io/',0,'','','','images/tools/1/568.png',0,0,'2016-04-19',NULL,NULL,'',NULL,0,'2016-04-19 21:44:39','2017-10-31 14:26:33',''),(569,938,'JSON Extractor','json-extractor.py is a simple command line tool for creating csv files from large json datasets.','',1,'Ryan Chartier','','','images/tools/1/569.png',0,0,'2016-09-12',NULL,'def parse(args):\n    with open(args.output, \'w+\', encoding=\"utf-8\") as output:\n        print(\"Opened\", args.output)\n        if not args.compress:\n            csv_writer = csv.writer(output, dialect=args.dialect)\n            if not args.nolabel:\n                csv_writer.writerow([a.title for a in args.attributes])\n        count = 0\n        tweets = set()\n\n        for json_object in json_entries(args):\n            #Check for duplicates\n            if args.id:\n                identity = args.id.getElement(json_object)\n                if identity in tweets:\n                    continue\n                tweets.add(identity)\n\n            #Check for time restrictions.\n            if args.start or args.end:\n                tweet_time = strptime(args.date.getElement(json_object), args.dateformat)\n                if args.start and args.start &gt; tweet_time:\n                    continue\n                if args.end and args.end &lt; tweet_time:\n                    continue\n\n#            #check if retweet.\n#            if \"retweeted_status\" in json_object:\n#                continue\n\n            #Check for hashtag.\n            if args.hashtag:\n                for entity in json_object[\'entities\'][\"hashtags\"]:\n                    if entity[\'text\'].lower() == args.hashtag:\n                        break\n                else:\n                    continue\n\n            #compression algorithm.\n            if args.compress:\n                json.dump(json_object, output)\n                output.write(\"\\n\")\n\n            #Write this tweet to csv.\n            else:\n                item = [i.getElement(json_object) for i in args.attributes]\n                csv_writer.writerow(item)\n\n            count += 1\n\n        print(\"Recorded {} items.\".format(count))\n        if tweets:\n            print(\"largest id:\", max(tweets))\n','https://github.com/recrm/ArchiveTools',0,1,'2016-04-20 07:03:03','2018-05-14 20:56:43',''),(570,936,'nodegoat','nodegoat creates visualizations and provides a graphical user interface for the maintenance of data. It combines a variety of data management functions into one program.','http://nodegoat.net/',1,'LAB1100, P. van Bree and G. Kessels','','http://lab1100.com/','images/tools/1/570.png',0,0,'2018-09-27',NULL,NULL,'https://github.com/nodegoat',NULL,0,'2016-04-25 22:41:11','2018-09-27 22:34:49',''),(571,936,'NodeXL','NodeXL is a template for Microsoft XL that greatly increases the usability and visualization capabilities of Microsoft XL. It can be used to quickly and easily create visualizations within Microsoft XL.','http://nodexl.codeplex.com/',0,'','','','images/tools/1/571.png',0,0,'2016-04-25',NULL,NULL,'',NULL,0,'2016-04-25 22:45:11','2017-10-31 14:26:34',''),(572,936,'Popoto.js','Popoto.js is a graph searching and visualization too that\'s programmed in Javascript. It\'s free to use and has a variety of different searching and display options available for users.','http://www.popotojs.com/',0,'','','','images/tools/1/572.png',0,0,'2016-04-25',NULL,NULL,'',NULL,0,'2016-04-25 22:50:57','2017-10-31 14:26:34',''),(573,936,'Density Design - Knot','Knot uses a variety of digital visualization tools to study historical social networks. It looks at the actual construction of digital graphs and networks and how that construction can be used to understand the ways in which social networks exist.','http://www.densitydesign.org/research/knot/',0,'','','','images/tools/1/573.png',0,0,'2016-04-25',NULL,NULL,'',NULL,0,'2016-04-25 23:00:13','2017-10-31 14:26:34',''),(574,937,'Voyant Tools 2.0 (Corpus View)','Voyant 2.0 is a complete rewrite of Voyant. It provides a suite of text analysis tools that will work with most texts you can upload or find on the web. These tools are combined in skins. For documentation see <a href=\"http://voyant-tools.org/docs/\">Documentation for Voyant 2.0</a>','http://voyant-tools.org',1,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/574.png',5,0,'2018-11-06',NULL,NULL,'',NULL,0,'2016-04-26 10:45:18','2018-11-06 06:39:53','<p><a href=\"http://methodi.ca/recipes/how-find-electronic-texts\" target=\"_blank\">How To Find Electronic Texts</a></p>'),(575,936,'Segrada','A java tool that allows for the creation of graphs and databases through the creation and connection of entities. It runs on a variety of platforms, and allows for a variety of configurations across multiple machines and users.','http://segrada.org/',0,'Dr. Maximilian Kalus','info@auxnet.de','http://www.auxnet.de/','images/tools/1/575.png',0,0,'2016-04-26',NULL,NULL,'',NULL,0,'2016-04-26 18:39:52','2017-10-31 14:26:35',''),(576,936,'UCINET','UCINET is a social media analysis set for software that integrates with NetDraw. It allows for a variety of different searches and analyses to be done with the social networks data in it.','https://sites.google.com/site/ucinetsoftware/home',0,'Borgatti, S.P., Everett, M.G. and Freeman, L.C','','','images/tools/1/576.png',0,0,'2016-04-26',NULL,NULL,'',NULL,0,'2016-04-26 20:16:41','2017-10-31 14:26:35',''),(577,937,'Voyant 2.0: ScatterPlot','Voyant ScatterPlot visualizes a corpus using correspondence analysis or document similarity. This can give you ideas about how to further analyze a corpus. Documentation can be found in <a href=\"http://voyant-tools.org/docs/#!/guide/scatterplot\">the Guide.</a>','http://voyant-tools.org/?view=scatterplot',0,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/577.png',0,0,'2016-04-29',NULL,NULL,'',NULL,0,'2016-04-29 15:46:55','2019-02-15 18:34:41',''),(578,937,'Voyant 2.0: Bubblelines','Bubblelines lets you compare the distribution of words across documents. Each document is a horizontal line with bubbles where the word appears. <a href=\"http://voyant-tools.org/docs/#!/guide/bubblelines\">Documentation here.</a>','http://voyant-tools.org/?view=bubblelines',1,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/578.png',2,0,'2016-04-29',NULL,NULL,'',NULL,0,'2016-04-29 15:55:51','2017-10-31 14:26:35',''),(579,937,'Voyant 2.0: Knots','Voyant Knots is a visualization where a line is bent at every instance of a word forming knots. If you visualize multiple terms you will get multiple twisted lines. The <a href=\"http://voyant-tools.org/docs/#!/guide/knots\">Documentation can be found here.</a>','http://voyant-tools.org/?view=knots',1,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/579.png',0,1,'2016-04-29',NULL,NULL,'',NULL,0,'2016-04-29 16:08:21','2017-10-31 14:26:36',''),(580,937,'Voyant 2.0: Knots','Voyant Knots is a visualization where a line is bent at every instance of a word forming knots. If you visualize multiple terms you will get multiple twisted lines. The <a href=\"http://voyant-tools.org/docs/#!/guide/knots\">Documentation can be found here.</a>','http://voyant-tools.org/?view=knots',1,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/580.png',0,1,'2016-04-29',NULL,NULL,'',NULL,0,'2016-04-29 16:08:28','2017-10-31 14:26:36',''),(581,937,'Voyant 2.0: Knots','Voyant Knots is a visualization where a line is bent at every instance of a word forming knots. If you visualize multiple terms you will get multiple twisted lines. The <a href=\"http://voyant-tools.org/docs/#!/guide/knots\">Documentation can be found here.</a>','http://voyant-tools.org/?view=knots',1,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/581.png',0,0,'2016-04-29',NULL,NULL,'',NULL,0,'2016-04-29 16:11:55','2017-10-31 14:26:36',''),(582,937,'Voyant 2.0: Terms Radio','Voyant 2.0  Terms Radio shows the high frequency terms scrolling by as if broadcast. You can select the words to watch rise and fall. You can control the speed and number of words. <a href=\"http://voyant-tools.org/docs/#!/guide/termsradio\">Documentation here.</a>','http://voyant-tools.org/?view=termsradio',1,'Stéfan Sinclair and Geoffrey Rockwell','stefan.sinclair@mcgill.ca','http://stefansinclair.name/','images/tools/1/582.png',0,0,'2016-04-29',NULL,NULL,'',NULL,0,'2016-04-29 16:30:24','2017-10-31 14:26:36',''),(583,959,'Gal','','https://www.sec.gov/Archives/edgar/data/1379075/000117152008000172/0001171520-08-000172.txt',0,'','','',NULL,0,1,'2016-05-02',NULL,NULL,'',NULL,0,'2016-05-02 12:44:25','2017-10-31 14:26:36',''),(584,938,'CSV Sort','Sorts large CSV by splitting them into smaller files, when memory is an issue.','https://bitbucket.org/richardpenman/csvsort',0,'Richard Penman','richard@webscraping.com','https://bitbucket.org/richardpenman/csvsort','images/tools/1/584.png',0,0,'2016-11-02',NULL,'#name=\'csvsort\',\n#Python version=\'2.x\'\n#version=\'1.0\',\n#packages=[\'csvsort\'],\n#package_dir={\'csvsort\' : \'.\'},\n#author=\'Richard Penman\',\n#author_email=\'richard@webscraping.com\',\n#description=\'Sort large CSV files on disk rather than in memory\',\n#long_description=read(\'README.rst\'),\n#url=\'https://bitbucket.org/richardpenman/csvsort\',\n#license=\'lgpl\',\n\n\nimport os\nimport sys\nimport csv\ncsv.field_size_limit(sys.maxint)\nimport heapq\nfrom optparse import OptionParser\n\n\n# temporary directory to store the sub-files\nTMP_DIR = \'.csvsort\'\nif not os.path.exists(TMP_DIR):\n    os.mkdir(TMP_DIR)\n\n\ndef csvsort(input_filename, columns, output_filename=None, max_size=100, has_header=True, delimiter=\',\', quoting=csv.QUOTE_MINIMAL):\n    \"\"\"Sort the CSV file on disk rather than in memory\n    The merge sort algorithm is used to break the file into smaller sub files and \n\n    input_filename: the CSV filename to sort\n    columns: a list of column indices (0 based) to sort on\n    output_filename: optional filename for sorted file. If not given then input file will be overriden.\n    max_size: the maximum size (in MB) of CSV file to load in memory at once\n    has_header: whether the CSV contains a header to keep separated from sorting\n    delimiter: character used to separate fields, default \',\'\n    \"\"\"\n    reader = csv.reader(open(input_filename), delimiter=delimiter)\n    if has_header:\n        header = reader.next()\n    else:\n        header = None\n\n    filenames = csvsplit(reader, max_size)\n    print \'Merging %d splits\' % len(filenames)\n    for filename in filenames:\n        memorysort(filename, columns)\n    sorted_filename = mergesort(filenames, columns)\n  \n    writer = csv.writer(open(output_filename or input_filename, \'w\'), delimiter=delimiter, quoting=quoting)\n    if header:\n        writer.writerow(header)\n    generate_result(writer, sorted_filename)\n\n\ndef generate_result(writer, sorted_filename): \n    \"\"\"generate final output file\n    \"\"\"\n    for row in csv.reader(open(sorted_filename)):\n        writer.writerow(row)\n    os.remove(sorted_filename)\n    try:\n        os.rmdir(TMP_DIR)\n    except OSError:\n        pass\n\n\ndef csvsplit(reader, max_size):\n    \"\"\"Split into smaller CSV files of maximum size and return the list of filenames\n    \"\"\"\n    max_size = max_size * 1024 * 1024 # convert to bytes\n    writer = None\n    current_size = 0\n    split_filenames = []\n\n    # break CSV file into smaller merge files\n    for row in reader:\n        if writer is None:\n            filename = os.path.join(TMP_DIR, \'split%d.csv\' % len(split_filenames))\n            writer = csv.writer(open(filename, \'w\'))\n            split_filenames.append(filename)\n\n        writer.writerow(row)\n        current_size += sys.getsizeof(row)\n        if current_size &gt; max_size:\n            writer = None\n            current_size = 0\n    return split_filenames\n\n\ndef memorysort(filename, columns):\n    \"\"\"Sort this CSV file in memory on the given columns\n    \"\"\"\n    rows = [row for row in csv.reader(open(filename))]\n    rows.sort(key=lambda row: get_key(row, columns))\n    writer = csv.writer(open(filename, \'wb\'))\n    for row in rows:\n        writer.writerow(row)\n\n\ndef get_key(row, columns):\n    \"\"\"Get sort key for this row\n    \"\"\"\n    return [row[column] for column in columns]\n\n\ndef decorated_csv(filename, columns):\n    \"\"\"Iterator to sort CSV rows\n    \"\"\"\n    for row in csv.reader(open(filename)):\n        yield get_key(row, columns), row\n\n\ndef mergesort(sorted_filenames, columns, nway=2):\n    \"\"\"Merge these 2 sorted csv files into a single output file\n    \"\"\"\n    merge_n = 0\n    while len(sorted_filenames) &gt; 1:\n        merge_filenames, sorted_filenames = sorted_filenames[:nway], sorted_filenames[nway:]\n        readers = map(open, merge_filenames)\n\n        output_filename = os.path.join(TMP_DIR, \'merge%d.csv\' % merge_n)\n        print \'create\', output_filename\n        writer = csv.writer(open(output_filename, \'w\'))\n        merge_n += 1\n\n        for _, row in heapq.merge(*[decorated_csv(filename, columns) for filename in merge_filenames]):\n            writer.writerow(row)\n        \n        sorted_filenames.append(output_filename)\n        for filename in merge_filenames:\n            print \'delete\', filename\n            os.remove(filename)\n    return sorted_filenames[0]\n\n\ndef main():\n    parser = OptionParser()\n    parser.add_option(\'-c\', \'--column\', dest=\'columns\', action=\'append\', type=\'int\', help=\'index of CSV to sort on\')\n    #parser.add_option(\'-f\', \'--field\', dest=\'field\', action=\'append\', help=\'column name of CSV to sort on\')\n    parser.add_option(\'-s\', \'--size\', \'-s\', dest=\'max_size\', type=\'float\', default=100, help=\'maximum size of each split CSV file in MB (default 100)\')\n    parser.add_option(\'-n\', \'--no-header\', dest=\'has_header\', action=\'store_false\', default=True, help=\'set CSV file has no header\')\n    parser.add_option(\'-d\', \'--delimiter\', default=\',\', help=\'set CSV delimiter (default \",\")\')\n    args, input_files = parser.parse_args()\n\n    if not input_files:\n        parser.error(\'What CSV file should be sorted?\')\n    elif not args.columns:\n        parser.error(\'Which columns should be sorted on?\')\n    else:\n        # escape backslashes\n        args.delimiter = args.delimiter.decode(\"string_escape\")\n        csvsort(input_files[0], columns=args.columns, max_size=args.max_size, has_header=args.has_header, delimiter=args.delimiter)\n\n \nif __name__ == \'__main__\':\n    main()\n','https://bitbucket.org/richardpenman/csvsort',0,1,'2016-05-18 17:31:24','2018-05-14 20:57:00',''),(585,938,'Frequency Sorter','Takes a list of newline separated items and sorts them from most appearances to least appearances. Was used in conjunction with Ryan Chartier\'s JSON extractor code so has hardcoded cases relating to that (for example, will also treat strings separated by semi-colons as discrete items when certain command-line arguments are used). Allows for a cutoff after [x] items, putting the remainder into an \"other\" category.\nOutput is in CSV format.','',0,'Robert Budac','rbudac@ualberta.ca','','images/tools/1/585.png',0,0,'2016-05-18',NULL,'#!/usr/bin/env python3\n\nimport operator\nimport os\nimport re\nimport argparse\nimport csv\nimport sys\n\n# Parse the input files and create an associative array of frequencies for each item\ndef parse(args):\n    items = {}\n    total_items = 0\n\n    for filename in os.listdir(args.path):\n        if re.search(args.string, filename) and \".csv\" in filename:\n            f = open\n            print(\"parsing\", filename)\n            with f(args.path + filename, \'rb\') as data_file:\n                for line in data_file:\n                    line = line.strip()\n                    if line == \"\":\n                        continue\n                    if args.data == \"hashtags\" or args.data == \"urls\" or args.data == \"mentions\":\n                        line = line.lower()\n                        if b\'na\' in line and line in b\'na\':\n                            continue\n                        if b\';\' in line:\n                            multi_tags = line.split(b\';\')\n                            for tag in multi_tags:\n                                total_items += 1\n                                try:\n                                    items[tag]\n                                except KeyError:\n                                    items[tag] = 1\n                                else:\n                                    items[tag] += 1\n                            continue\n                    total_items += 1\n                    try:\n                        items[line]\n                    except KeyError:\n                        items[line] = 1\n                    else:\n                        items[line] += 1\n\n    label1 = b\'(Total Occurences)\'    \n    if args.data == \"screen_name\":\n        label1 = b\'(Total Tweets)\'\n    elif args.data == \"mentions\":\n        label1 = b\'(Total Mentions)\'\n    items[label1] = total_items\n    return items\n\n# Sort the list by most frequent to least.\n# Also collapses any items that don\'t make the top cut into an \"other\" category.\ndef sort_list(list):\n    sorted_list = sorted(list.items(), key=operator.itemgetter(1), reverse=True)\n\n    i = 0\n    rest = 0\n    short_list = []\n    for item in sorted_list:\n        i += 1\n        if i \n\n    list = parse(args)\n    sorted_list = sort_list(list)\n    output_csv(args, sorted_list)\n','',0,1,'2016-05-18 18:00:37','2016-05-18 18:40:19',''),(586,938,'Complex Sentiment Analysis','Code from an iPython notebook, based on:\n\nhttp://nealcaren.web.unc.edu/an-introduction-to-text-analysis-with-python-part-3/\n\nThis notebook shows how to conduct sentiment analysis on a collection of passages (e.g. Tweets) using dictionaries of positive and negative words.','https://github.com/sgsinclair/alta/blob/dc47e4b47b133cee24a85e9817592971e67681cd/ipynb/utilities/ComplexSentimentAnalysis.ipynb',1,'Geoffrey Rockwell and Stéfan Sinclair','','','images/tools/1/586.png',4,0,'2017-10-16',NULL,'# This is just an excerpt of code. For the full program, please\n# visit the Jupyter notebook on github.\n\nimport re\n\n# Here we set up the thresholds\nposi = 1 # This means there have to be more than 1 positive word\nnega = 0 # This means there has to be more than 1 negative words\n\n# Here we prime our variables\nposWordsList = []\nnegWordsList = []\nnumTweets = 0\nnumPosTweets = 0\nnumNegTweets = 0\nnumNeutTweets = 0\n\ndef wordsGathering(theTweet):\n    # Count positive words\n    numPosWords = 0\n    theTweetTokens = tokenizer(theTweet)\n    for word in theTweetTokens:\n        if word in posTokens:\n            numPosWords += 1\n            posWordsList.append(word)\n            \n    # Count negative words\n    numNegWords = 0\n    for word in theTweetTokens:\n        if word in negTokens:\n            numNegWords += 1\n            negWordsList.append(word)       \n    \n    sum = (numPosWords - numNegWords)\n    return sum\n\n# This loop goes through all the Tweets and calculates if sums the number of positive or negative ones.\nfor tweet in tweetsTokens:\n    calc = wordsGathering(tweet)\n    if calc &gt; posi:\n        numPosTweets += 1\n        numTweets += 1\n    elif calc &lt; nega:\n        numNegTweets += 1\n        numTweets += 1\n    else:\n        numNeutTweets += 1\n        numTweets += 1\n\nprint(\"Positive words: \" + str(len(posWordsList)))\nprint(\"Positive words: \" + str(len(negWordsList)))','https://github.com/sgsinclair/alta/blob/dc47e4b47b133cee24a85e9817592971e67681cd/ipynb/utilities/ComplexSentimentAnalysis.ipynb',0,1,'2016-09-12 18:38:34','2018-05-14 20:57:03',''),(587,937,'Test Tool','','',0,'','','',NULL,0,1,'2016-09-19',NULL,'','',0,1,'2016-09-19 22:30:58','2016-09-19 22:31:44',''),(588,989,'C','','',0,'','','',NULL,0,1,'2016-11-24',NULL,NULL,'',NULL,0,'2016-09-22 16:48:57','2017-10-31 14:26:36',''),(590,988,'Simple Sentiment Analysis','Code from an iPython notebook, based on:\nhttp://nealcaren.web.unc.edu/an-introduction-to-text-analysis-with-python-part-1/\n\nThis notebook walks the user through analyzing a single string of text by creating custom dictionaries of positive and negative words.','https://github.com/sgsinclair/alta/blob/dc47e4b47b133cee24a85e9817592971e67681cd/ipynb/utilities/SimpleSentimentAnalysis.ipynb',0,'Geoffrey Rockwell and Stéfan Sinclair','','','images/tools/1/590.png',0,0,'2016-09-26',NULL,'# This is just an excerpt of code. For the full program, please\n# visit the Jupyter notebook on github.\n\n#Setup our data\ntheTweet = \"We have some delightful new food in the cafeteria. Awesome!!!\"\npositive_words=[\'awesome\',\'good\',\'nice\',\'super\',\'fun\',\'delightful\']\nnegative_words=[\'awful\',\'lame\',\'horrible\',\'bad\']\n\n#Tokenize the text\nimport re\ntheTokens = re.findall(r\'\\b\\w[\\w-]*\\b\', theTweet.lower())\n\n#Calculate the number of positive words\nnumPosWords = 0\nfor word in theTokens:\n    if word in positive_words:\n        numPosWords += 1\n\n#Calculate the number of negative words\nnumNegWords = 0\nfor word in theTokens:\n    if word in negative_words:\n        numNegWords += 1\n\n#Calculate the percentages of positive and negative words\nnumWords = len(theTokens)\npercntPos = numPosWords / numWords\npercntNeg = numNegWords / numWords\nprint(\"Positive: \" + \"{:.0%}\".format(percntPos) + \"  Negative: \" + \"{:.0%}\".format(percntNeg))\n\n#Determine whether the tweet is positive or negative, print the result\nif numPosWords &gt; numNegWords:\n    print(\"Positive \" + str(numPosWords) + \":\" + str(numNegWords))\nelif numNegWords &gt; numPosWords:\n    print(\"Negative \" + str(numPosWords) + \":\" + str(numNegWords))\nelif numNegWords == numPosWords:\n    print(\"Neither \" + str(numPosWords) + \":\" + str(numNegWords))\n    \nprint()\n','',0,1,'2016-09-26 03:12:49','2018-05-14 20:57:07',''),(591,938,'Warc Extractor','A simple command line tool for expanding warc files. Warc files are archives of webpages, as provided by the Internet Archive. Input is warc files and output can either be a warc file or as faithful a recreation of the website(s) contained within the warc file as can be managed.','https://github.com/recrm/ArchiveTools/blob/master/warc-extractor.py',1,'Ryan Chartier & Internet Archive','','','images/tools/1/591.png',0,0,'2016-09-27',NULL,'\"\"\"\n    warc-extractor, a simple command line tool for expanding warc files.\n    Copyright (C) 2014  Ryan Chartier\n    Portions (C) 2012 Internet Archive\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see .\nwarc.utils\n~~~~~~~~~~\nThis file is part of warc\n:copyright: (c) 2012 Internet Archive\nwarc.warc\n~~~~~~~~~\nPython library to work with WARC files.\n:copyright: (c) 2012 Internet Archive\n\"\"\"\n\nfrom collections import MutableMapping\nfrom http.client import HTTPMessage\nfrom urllib.parse import urlparse, unquote\nfrom pprint import pprint\nimport os\nimport re\nimport argparse\nimport sys\nimport mimetypes\nimport shutil\nimport email.parser\nimport gzip\nimport datetime\nimport uuid\nimport re\nimport io\nimport hashlib\n\n\n#Below is just an excerpt from the full warc extractor, which can be\n#found at the github link provided.\n\n\ndef parse(args):\n    #Clear output warc file.\n    if args.dump == \"warc\":\n        if args.silence:\n            print(\"Recording\", args.dump, \"to\", args.output + \".\")\n        with open(args.output_path + args.output, \"wb\"):\n            pass\n\n    for record in warc_records(args.string, args.path):\n        try:\n            #Filter out unwanted entries.\n            if not checkFilter(args.filter, record):\n                continue\n\n            #Increment Index counters.\n            if args.silence:\n                inc(\"records\")\n                inc(record,\"warc-type\", \"types\")\n                inc(record, \"content_type\", \"warc-content\")\n                if record.http:\n                    inc(record.http, \"content_type\", \"http-content\")\n                    inc(record.http, \"error\", \"status\")\n\n            #Dump records to file.\n            if args.dump == \"warc\":\n                with open(args.output_path + args.output, \"ab\") as output:\n                    record.write_to(output)\n\n            if args.dump == \"content\":\n                url = urlparse(unquote(record[\'WARC-Target-URI\']))\n\n                #Set up folder\n                index = url.path.rfind(\"/\") + 1\n                file = url.path[index:]\n                path = url.path[:index]\n\n                #Process filename\n                if \".\" not in file:\n                    path += file\n                    if not path.endswith(\"/\"):\n                        path += \"/\"\n\n                    file = \'index.html\'\n\n                #Final fixes.\n                path = path.replace(\".\", \"-\")\n                host = url.hostname.replace(\'www.\', \'\', 1)\n                path = args.output_path + host + path\n\n                #Create new directories\n                if not os.path.exists(path):\n                    try:\n                        os.makedirs(path)\n                    except OSError:\n                        path = \"/\".join([i[:25] for i in path.split(\"/\")])\n                        os.makedirs(path)\n\n                #Test if file has a proper extension.\n                index = file.index(\".\")\n                suffix = file[index:]\n                content = record.http.get(\"content_type\", \"\")\n                slist = mimetypes.guess_all_extensions(content)\n                if suffix not in slist:\n                    #Correct suffix if we can.\n                    suffix = mimetypes.guess_extension(content)\n                    if suffix:\n                        file = file[:index] + suffix\n                    else:\n                        inc(record.http, \"content_type\", \"unknown mime type\")\n\n                #Check for gzip compression.\n                if record.http.get(\"content-encoding\", None) == \"gzip\":\n                    file += \".gz\"\n\n                path += file\n\n                #If Duplicate file then insert numbers\n                index = path.rfind(\".\")\n                temp = path\n                n = 0\n                while os.path.isfile(temp):\n                    n +=1\n                    temp = path[:index] + \"(\"+ str(n) + \")\" + path[index:]\n                path = temp\n\n                #Write file.\n                with open(path, \'wb\') as fp:\n                    record.http.write_payload_to(fp)\n\n        except Exception:\n            if args.error:\n                if args.silence:\n                    print(\"Error in record. Recording to error.warc.\")\n                with open(args.output_path + \"error.warc\", \"ab\") as fp:\n                    record.write_to(fp)\n            else:\n                raise','https://github.com/recrm/ArchiveTools',0,1,'2016-09-26 20:30:29','2016-09-27 21:15:26',''),(592,938,'Twitter Archiver (TWARC)','twarc is a command line tool and Python library for archiving Twitter JSON data. Each tweet is represented as a JSON object that is exactly what was returned from the Twitter API. Tweets are stored as line-oriented JSON.','https://github.com/edsu/twarc',1,'Ed Summers','','','images/tools/1/592.png',0,0,'2016-09-27',NULL,'#!/usr/bin/env python\n\nfrom __future__ import print_function\n\n__version__ = \'0.8.1\' # also in setup.py\n\nimport fileinput\nimport os\nimport sys\nimport json\nimport time\nimport logging\nimport argparse\nimport datetime\nimport requests\n\nfrom requests_oauthlib import OAuth1Session\n\ntry:\n    import configparser  # Python 3\nexcept ImportError:\n    import ConfigParser as configparser  # Python 2\n\nif sys.version_info[:2] &lt; 1:\n                    seconds = 10\n                logging.warn(\"rate limit exceeded: sleeping %s secs\", seconds)\n                time.sleep(seconds)\n            elif resp.status_code &gt;= 500:\n                errors += 1\n                if errors &gt; 30:\n                    logging.warn(\"too many errors from Twitter, giving up\")\n                    resp.raise_for_status()\n                seconds = 60 * errors\n                logging.warn(\"%s from Twitter API, sleeping %s\",\n                             resp.status_code, seconds)\n                time.sleep(seconds)\n            else:\n                resp.raise_for_status()\n    return new_f\n\n\ndef catch_conn_reset(f):\n    \"\"\"\n    A decorator to handle connection reset errors even ones from pyOpenSSL\n    until https://github.com/edsu/twarc/issues/72 is resolved\n    \"\"\"\n    try:\n        import OpenSSL\n        ConnectionError = OpenSSL.SSL.SysCallError\n    except:\n        ConnectionError = None\n\n    def new_f(self, *args, **kwargs):\n        # Only handle if pyOpenSSL is installed.\n        if ConnectionError:\n            try:\n                return f(self, *args, **kwargs)\n            except ConnectionError as e:\n                logging.warn(\"caught connection reset error: %s\", e)\n                self.connect()\n                return f(self, *args, **kwargs)\n        else:\n            return f(self, *args, **kwargs)\n    return new_f\n\n\ndef catch_timeout(f):\n    \"\"\"\n    A decorator to handle read timeouts from Twitter.\n    \"\"\"\n    def new_f(self, *args, **kwargs):\n        try:\n            return f(self, *args, **kwargs)\n        except requests.exceptions.ReadTimeout as e:\n            logging.warn(\"caught read timeout: %s\", e)\n            self.connect()\n            return f(self, *args, **kwargs)\n    return new_f\n\n\ndef catch_gzip_errors(f):\n    \"\"\"\n    A decorator to handle gzip encoding errors which have been known to\n    happen during hydration.\n    \"\"\"\n    def new_f(self, *args, **kwargs):\n        try:\n            return f(self, *args, **kwargs)\n        except requests.exceptions.ContentDecodingError as e:\n            logging.warn(\"caught gzip error: %s\", e)\n            self.connect()\n            return f(self, *args, **kwargs)\n    return new_f\n\n\n\nclass Twarc(object):\n    \"\"\"\n    Your friendly neighborhood Twitter archiving class. Twarc allows\n    you to search for existing tweets, stream live tweets that match\n    a filter query and lookup (hdyrate) a list of tweet ids.\n    Each method search, stream and hydrate returns a tweet iterator which\n    allows you to do what you want with the data. Twarc handles rate limiting\n    in the API, so it will go to sleep when Twitter tells it to, and wake back\n    up when it is able to get more data from the API.\n    \"\"\"\n\n    def __init__(self, consumer_key, consumer_secret, access_token,\n                 access_token_secret, connection_errors=0, http_errors=0):\n        \"\"\"\n        Instantiate a Twarc instance. Make sure your environment variables\n        are set.\n        \"\"\"\n\n        self.consumer_key = consumer_key\n        self.consumer_secret = consumer_secret\n        self.access_token = access_token\n        self.access_token_secret = access_token_secret\n        self.connection_errors = connection_errors\n        self.http_errors = http_errors\n        self.client = None\n        self.last_response = None\n        self.connect()\n\n    def search(self, q, max_id=None, since_id=None, lang=None,\n               result_type=\'recent\', geocode=None):\n        \"\"\"\n        Pass in a query with optional max_id, min_id, lang or geocode\n        and get back an iterator for decoded tweets. Defaults to recent (i.e.\n        not mixed, the API default, or popular) tweets.\n        \"\"\"\n        logging.info(\"starting search for %s\", q)\n        url = \"https://api.twitter.com/1.1/search/tweets.json\"\n        params = {\n            \"count\": 100,\n            \"q\": q\n        }\n        if lang is not None:\n            params[\'lang\'] = lang\n        if result_type in [\'mixed\', \'recent\', \'popular\']:\n            params[\'result_type\'] = result_type\n        else:\n            params[\'result_type\'] = \'recent\'\n        if geocode is not None:\n            params[\'geocode\'] = geocode\n\n        while True:\n            if since_id:\n                params[\'since_id\'] = since_id\n            if max_id:\n                params[\'max_id\'] = max_id\n\n            resp = self.get(url, params=params)\n            statuses = resp.json()[\"statuses\"]\n\n            if len(statuses) == 0:\n                logging.info(\"no new tweets matching %s\", params)\n                break\n\n            for status in statuses:\n                yield status\n\n            max_id = str(int(status[\"id_str\"]) - 1)\n\n    def timeline(self, user_id=None, screen_name=None, max_id=None,\n                 since_id=None):\n        \"\"\"\n        Returns a collection of the most recent tweets posted\n        by the user indicated by the user_id or screen_name parameter.\n        Provide a user_id or screen_name.\n        \"\"\"\n        # Strip if screen_name is prefixed with \'@\'\n        if screen_name:\n            screen_name = screen_name.lstrip(\'@\')\n        id = screen_name or user_id\n        id_type = \"screen_name\" if screen_name else \"user_id\"\n        logging.info(\"starting user timeline for user %s\", id)\n        url = \"https://api.twitter.com/1.1/statuses/user_timeline.json\"\n        params = {\"count\": 200, id_type: id}\n\n        while True:\n            if since_id:\n                params[\'since_id\'] = since_id\n            if max_id:\n                params[\'max_id\'] = max_id\n\n            try:\n                resp = self.get(url, params=params, allow_404=True)\n            except requests.exceptions.HTTPError as e:\n                if e.response.status_code == 404:\n                    logging.info(\"no timeline available for %s\", id)\n                    break\n                raise e\n\n            statuses = resp.json()\n\n            if len(statuses) == 0:\n                logging.info(\"no new tweets matching %s\", params)\n                break\n\n            for status in statuses:\n                # If you request an invalid user_id, you may still get\n                # results so need to check.\n                if not user_id or user_id == status.get(\"user\",\n                                                        {}).get(\"id_str\"):\n                    yield status\n\n            max_id = str(int(status[\"id_str\"]) - 1)\n\n    def user_lookup(self, screen_names=None, user_ids=None):\n        \"\"\"\n        Returns fully-hydrated user objects for a list of up to 100\n        screen_names or user_ids.  Provide screen_names or user_ids.\n        \"\"\"\n        # Strip if any screen names are prefixed with \'@\'\n        if screen_names:\n            screen_names = [s.lstrip(\'@\') for s in screen_names]\n        ids = screen_names or user_ids\n        id_type = \"screen_name\" if screen_names else \"user_id\"\n        while ids:\n            ids_str = \",\".join(ids[:100])\n            logging.info(\"Looking up users %s\", ids_str)\n            url = \'https://api.twitter.com/1.1/users/lookup.json\'\n            params = {id_type: ids_str}\n            try:\n                resp = self.get(url, params=params, allow_404=True)\n            except requests.exceptions.HTTPError as e:\n                if e.response.status_code == 404:\n                    logging.info(\"no users matching %s\", ids_str)\n                    break\n                raise e\n\n            users = resp.json()\n            for user in users:\n                yield user\n\n            ids = ids[100:]\n\n    def filter(self, track=None, follow=None, locations=None):\n        \"\"\"\n        Returns an iterator for tweets that match a given filter track from\n        the livestream of tweets happening right now.\n        \"\"\"\n        if locations is not None:\n            if type(locations) == list:\n                locations = \',\'.join(locations)\n            locations = locations.replace(\'\\\\\', \'\')\n\n        url = \'https://stream.twitter.com/1.1/statuses/filter.json\'\n        params = {\"stall_warning\": True}\n        if track:\n            params[\"track\"] = track\n        if follow:\n            params[\"follow\"] = follow\n        if locations:\n            params[\"locations\"] = locations\n        headers = {\'accept-encoding\': \'deflate, gzip\'}\n        errors = 0\n        while True:\n            try:\n                logging.info(\"connecting to filter stream for %s\", params)\n                resp = self.post(url, params, headers=headers, stream=True)\n                errors = 0\n                for line in resp.iter_lines(chunk_size=512):\n                    if not line:\n                        logging.info(\"keep-alive\")\n                        continue\n                    try:\n                        yield json.loads(line.decode())\n                    except Exception as e:\n                        logging.error(\"json parse error: %s - %s\", e, line)\n            except requests.exceptions.HTTPError as e:\n                errors += 1\n                logging.error(\"caught http error %s on %s try\", e, errors)\n                if self.http_errors and errors == self.http_errors:\n                    logging.warn(\"too many errors\")\n                    raise e\n                if e.response.status_code == 420:\n                    t = errors * 60\n                    logging.info(\"sleeping %s\", t)\n                    time.sleep(t)\n                else:\n                    t = errors * 5\n                    logging.info(\"sleeping %s\", t)\n                    time.sleep(t)\n            except Exception as e:\n                errors += 1\n                logging.error(\"caught exception %s on %s try\", e, errors)\n                if self.http_errors and errors == self.http_errors:\n                    logging.warn(\"too many exceptions\")\n                    raise e\n                t = errors * 1\n                logging.error(e)\n                logging.info(\"sleeping %s\", t)\n                time.sleep(t)\n\n    def sample(self):\n        \"\"\"\n        Returns a small random sample of all public statuses. The Tweets\n        returned by the default access level are the same, so if two different\n        clients connect to this endpoint, they will see the same Tweets.\n        \"\"\"\n        url = \'https://stream.twitter.com/1.1/statuses/sample.json\'\n        params = {\"stall_warning\": True}\n        headers = {\'accept-encoding\': \'deflate, gzip\'}\n        errors = 0\n        while True:\n            try:\n                logging.info(\"connecting to sample stream\")\n                resp = self.post(url, params, headers=headers, stream=True)\n                errors = 0\n                for line in resp.iter_lines(chunk_size=512):\n                    if line == \"\":\n                        logging.info(\"keep-alive\")\n                        continue\n                    try:\n                        yield json.loads(line.decode())\n                    except Exception as e:\n                        logging.error(\"json parse error: %s - %s\", e, line)\n            except requests.exceptions.HTTPError as e:\n                errors += 1\n                logging.error(\"caught http error %s on %s try\", e, errors)\n                if self.http_errors and errors == self.http_errors:\n                    logging.warn(\"too many errors\")\n                    raise e\n                if e.response.status_code == 420:\n                    t = errors * 60\n                    logging.info(\"sleeping %s\", t)\n                    time.sleep(t)\n                else:\n                    t = errors * 5\n                    logging.info(\"sleeping %s\", t)\n                    time.sleep(t)\n            except Exception as e:\n                errors += 1\n                logging.error(\"caught exception %s on %s try\", e, errors)\n                if self.http_errors and errors == self.http_errors:\n                    logging.warn(\"too many errors\")\n                    raise e\n                t = errors * 1\n                logging.info(\"sleeping %s\", t)\n                time.sleep(t)\n\n    def hydrate(self, iterator):\n        \"\"\"\n        Pass in an iterator of tweet ids and get back an iterator for the\n        decoded JSON for each corresponding tweet.\n        \"\"\"\n        ids = []\n        url = \"https://api.twitter.com/1.1/statuses/lookup.json\"\n\n        # lookup 100 tweets at a time\n        for tweet_id in iterator:\n            tweet_id = tweet_id.strip()  # remove new line if present\n            ids.append(tweet_id)\n            if len(ids) == 100:\n                logging.info(\"hydrating %s ids\", len(ids))\n                resp = self.post(url, data={\"id\": \',\'.join(ids)})\n                tweets = resp.json()\n                tweets.sort(key=lambda t: t[\'id_str\'])\n                for tweet in tweets:\n                    yield tweet\n                ids = []\n\n        # hydrate any remaining ones\n        if len(ids) &gt; 0:\n            logging.info(\"hydrating %s\", ids)\n            resp = self.client.post(url, data={\"id\": \',\'.join(ids)})\n            for tweet in resp.json():\n                yield tweet\n\n    @rate_limit\n    @catch_conn_reset\n    @catch_timeout\n    @catch_gzip_errors\n    def get(self, *args, **kwargs):\n        # Pass allow 404 to not retry on 404\n        allow_404 = kwargs.pop(\'allow_404\', False)\n        connection_error_count = kwargs.pop(\'connection_error_count\', 0)\n        try:\n            r = self.last_response = self.client.get(*args, **kwargs)\n            # this has been noticed, believe it or not\n            # https://github.com/edsu/twarc/issues/75\n            if r.status_code == 404 and not allow_404:\n                logging.warn(\"404 from Twitter API! trying again\")\n                time.sleep(1)\n                r = self.get(*args, **kwargs)\n            return r\n        except requests.exceptions.ConnectionError as e:\n            connection_error_count += 1\n            logging.error(\"caught connection error %s on %s try\", e, connection_error_count)\n            if self.connection_errors and connection_error_count == self.connection_errors:\n                logging.error(\"received too many connection errors\")\n                raise e\n            else:\n                self.connect()\n                kwargs[\'connection_error_count\'] = connection_error_count\n                return self.get(*args, **kwargs)\n\n    @rate_limit\n    @catch_conn_reset\n    @catch_timeout\n    @catch_gzip_errors\n    def post(self, *args, **kwargs):\n        connection_error_count = kwargs.pop(\'connection_error_count\', 0)\n        try:\n            self.last_response = self.client.post(*args, **kwargs)\n            return self.last_response\n        except requests.exceptions.ConnectionError as e:\n            connection_error_count += 1\n            logging.error(\"caught connection error %s on %s try\", e, connection_error_count)\n            if self.connection_errors and connection_error_count == self.connection_errors:\n                logging.error(\"received too many connection errors\")\n                raise e\n            else:\n                self.connect()\n                kwargs[\'connection_error_count\'] = connection_error_count\n                return self.post(*args, **kwargs)\n\n    def connect(self):\n        \"\"\"\n        Sets up the HTTP session to talk to Twitter. If one is active it is\n        closed and another one is opened.\n        \"\"\"\n        if self.client:\n            logging.info(\"closing existing http session\")\n            self.client.close()\n        if self.last_response:\n            logging.info(\"closing last response\")\n            self.last_response.close()\n        logging.info(\"creating http session\")\n        self.client = OAuth1Session(\n            client_key=self.consumer_key,\n            client_secret=self.consumer_secret,\n            resource_owner_key=self.access_token,\n            resource_owner_secret=self.access_token_secret\n        )\n\nif __name__ == \"__main__\":\nmain()','https://github.com/edsu/twarc',0,1,'2016-09-26 20:44:20','2018-05-14 20:57:07',''),(593,988,'YouTube Comment Scraper','This free web-based tool allows you to scrape the comments from a YouTube video and save them in either a JSON or CSV format. The project is open source, and its code is available on github.','http://ytcomments.klostermann.ca/',1,'Philip Klostermann','','http://philip.klostermann.ca/','images/tools/1/593.png',0,0,'2018-10-17',NULL,NULL,'',NULL,0,'2016-09-29 20:11:55','2018-10-17 05:10:58',''),(594,988,'EVI-LINHD','EVI-LINHD is a free and open-source cloud platform to create Digital Humanities projects. It contains a range of tools, including Wordpress for web design, Omeka for creating digital libraries, and an XML-TEI digital edition tool and processing model based on eXist. Users are able to create full DH projects using the platform.','http://www.evilinhd.com/',0,'Elena González-Blanco García','','','images/tools/1/594.png',0,0,'2016-10-17',NULL,NULL,'',NULL,0,'2016-10-17 06:47:30','2017-10-31 14:26:36',''),(595,988,'EVI-LINHD','EVI-LINHD is a free and open-source cloud platform to create Digital Humanities projects. It contains a range of tools, including Wordpress for web design, Omeka for creating digital libraries, and an XML-TEI digital edition tool and processing model based on eXist. Users are able to create full DH projects using the platform.','http://www.evilinhd.com/',0,'Elena González-Blanco García','','','images/tools/1/595.png',0,0,'2016-10-17',NULL,NULL,'',NULL,0,'2016-10-17 06:47:34','2017-10-31 14:26:37',''),(596,988,'Zenodo','Zenodo is a catch-all repository for research data. It accepts all research data, with no requirements on format, size, access restrictions, or license. It is intended to support storage, curation, and publication of big research data. It was developed by the OpenAIRE partner CERN, responding to a request by the European Commission to create an open catch-all repository for all EC funded research.','https://zenodo.org/',1,'CERN','','','images/tools/1/596.png',0,0,'2018-11-06',NULL,NULL,'https://github.com/zenodo',NULL,0,'2016-10-17 16:40:18','2018-11-06 04:07:08',''),(597,988,'PyDelta','PyDelta is a commandline tool for analyzing the Delta (stylistic differences) between two texts. This measure is used in computational stylistics, particularly for trying to identify the given author of a text. PyDelta is a direct implementation of 3 algorithms described by Argamon in a paper on John Burrows Delta.','https://github.com/fotis007/pydelta',0,'Fotis Jannidis','fotis.jannidis@uni-wuerzburg.de','http://www.jannidis.de/','images/tools/1/597.png',0,0,'2016-10-17',NULL,NULL,'',NULL,0,'2016-10-17 17:05:51','2017-10-31 14:26:37',''),(598,988,'Text Analysis Online','Text Analysis Online is an API hosted with Mashape. It provides a range of text analysis procedures including Tokenization, Tagging, Part-of-Speech(POS), and sentiment analysis, built on top of NLP tools such as NLTK, TextBlob, and Pattern. The individual procedures can be tested on the TextAnalysisOnline website and the API can be used on Mashape.','http://textanalysisonline.com/',0,'','textanalysisapi@gmail.com','http://textminingonline.com/','images/tools/1/598.png',0,0,'2016-10-17',NULL,NULL,'',NULL,0,'2016-10-17 17:30:56','2017-10-31 14:26:37',''),(599,938,'McGill Characterization Process - Character Parser','Part of the McGill Characterization Process family. Parses all the texts in a data directory and picks out all the characters and their aliases. Output is in JSON format and is required for the rest of the tools in this family.\n\nExtensive setup required. Please consult the readme on github for setup instructions.','https://github.com/rbudac/McGill-Characterization-Process',1,'Hardik Vala & Andrew Piper','hardik.vala@mail.mcgill.ca','','images/tools/1/599.png',0,0,'2016-10-21',NULL,'\"\"\"\nParses and manages characters for all stories.\n@author: Hardik\n\"\"\"\n\nimport json\nimport os\nimport re\n\nfrom corpus import CorpusManager\n\n\nclass BookNLPCharacterParser(object):\n	\"\"\"\n	Parser for BookNLP .html files.\n	\"\"\"\n\n	def __init__(self):\n		pass\n\n	def parse(self, filepath, top=None):\n		\"\"\"\n		Parses the characters from the BookNLP .html formatted file located at\n		the given filepath. If top is not None, then only the top characters,\n		according to the # of occurrences in text, are returned.\n		The output is a list of characters, where each character is represented\n		as,\n		{\n			\"entity\": [First alias span],\n			\"count\": [# occurrences of all character\'s aliases],\n			\"aliases\": [List of aliases]\n		}\n		Each alias is also represented as a dictionary in the following format,\n		{\n			\"alias\": [Span],\n			\"count\": [# occurrences]\n		}\n		\"\"\"\n\n		with open(filepath, \'r\') as f:\n			content = f.read()\n			# Starting index of the character content.\n			start_index = content.find(\'\') + 5\n			# Ending index of the character content.\n			end_index = content.rfind(\'<h1>\')\n			# Character content string.\n			character_content = content[start_index:end_index]\n\n			# List of characters, with each character is represented as a dictionary\n			# with character name (The first one listed), character count, and a\n			# list of aliases, with each alias represented as a dictionary with\n			# alias span and count.\n			characters = []\n\n			i = 0\n			# Character aliases are listed on separate lines.\n			for l in character_content.split(\'\'):\n				# Only retain the top characters.\n				if l.strip() != \"\" and (top is None or i &lt; top):\n					character = {}\n\n					# The character count is the number starting the line.\n					character_count = re.search(r\'^\\d+\', l)\n					if character_count:\n						count = int(character_count.group())\n						if count == 0:\n							continue\n						else:\n							character[\'count\'] = count\n					else:\n						# Reached the text portion.\n						if l.startswith(\"<h1>\"):\n							break\n						else:\n							Exception(\"Failed to parse character count in \" +\n								filepath + \" on line: \" + l)\n\n					# Drop the starting character count.\n					parsed_l = l[character_count.end():].strip()\n\n					# The first name is taken as the sequence of characters after \n					# the character count leading up to the first \'(\' (without any\n					# leading or trailing whitespace), i.e. the first alias span.\n					first_name = re.search(r\'^([^\\(]+)\\s+\\(\', parsed_l)\n					if first_name:\n						character[\'entity\'] = first_name.group(1)\n					else:\n						raise Exception(\"Failed to parse first character name \"\n							\"in \" + filepath + \" on line: \" + l)\n\n					alias_matches = list(re.finditer(r\'([^(\\(\\))]+)\\s+\\((\\d+)\\)\',\n						parsed_l))\n					if len(alias_matches) &gt; 0:\n						character[\'aliases\'] = [{\n													\'alias\': m.group(1).strip(),\n													\'count\': int(m.group(2))\n												}\n												for m\n												in alias_matches]\n					else:\n						raise Exception(\"Failed to parse aliases in \" +\n							filepath + \" on line: \" + l)\n\n					characters.append(character)\n					i += 1\n				else:\n					break\n\n			return characters\n\n	def save(self, characters, filepath):\n		\"\"\"\n		Outputs the given list of characters (As returned by parse) to a .json\n		file specified by the given filepath.\n		\"\"\"\n\n		with open(filepath, \'w\') as out:\n			json.dump(characters, out, sort_keys=True, indent=4)\n\n\nclass CharactersManager(object):\n	\"\"\"\n	Manages the list of characters for each story in the corpus.\n	\"\"\"\n\n	def __init__(self):\n		self.parser = BookNLPCharacterParser()\n		self.cm = CorpusManager()\n\n	def get_fpath(self, sid):\n		\"\"\"\n		Returns the filepath to the characters .json file for the given story.\n		\"\"\"\n\n		return os.path.join(self.cm.get_booknlp_dirpath(sid), \'characters.json\')\n\n	def saved(self, sid):\n		\"\"\"\n		Checks whether the characters .json for the given story has been\n		generated.\n		\"\"\"\n		print self.get_fpath(sid)\n		return os.path.exists(self.get_fpath(sid))\n\n	def gen(self, sid):\n		\"\"\"\n		Generates the characters .json file for the given story (Overwrites it\n		if it already exists).\n		\"\"\"\n\n		characters = self.parser.parse(self.cm.get_booknlp_fpath(sid))\n		self.parser.save(characters, self.get_fpath(sid))\n\n	def get_characters(self, sid):\n		\"\"\"\n		Retrieves the character dictionary from the .json file for the given\n		story.\n		\"\"\"\n\n		with open(self.get_fpath(sid)) as f:\nreturn json.load(f)</h1>\n</h1>','https://github.com/rbudac/McGill-Characterization-Process/',0,1,'2016-10-18 19:33:20','2018-05-14 20:57:15',''),(600,938,'McGill Characterization Process - Alias Identifier','Part of the McGill Characterization Process family. Examines all the texts in a data directory and uses the output from the Character Parser to pick out all the aliases for the characters in the aforementioned texts. Output is in JSON format and is required for the rest of the tools in this family.\n\nExtensive setup required. Please consult the readme on github for setup instructions.','https://github.com/rbudac/McGill-Characterization-Process',1,'Hardik Vala & Andrew Piper','hardik.vala@mail.mcgill.ca','','images/tools/1/600.png',0,0,'2016-10-21',NULL,'\"\"\"\nIdentifies and manages aliases for all stories.\n@author: Hardik\n\"\"\"\n\nimport csv\nimport json\nimport os\nimport sys\nimport xml.etree.ElementTree as ET\n\nfrom collections import Counter, defaultdict\n\nfrom characters import CharactersManager\nfrom concepts import ConceptsManager\nfrom corpus import CorpusManager\nfrom nouns import NounsManager\n\n\n# Set of pronouns.\nPRONOUNS = set([\'he\', \'her\', \'hers\', \'herself\', \'him\', \'himself\', \'his\', \'I\',\n	\'me\', \'my\', \'myself\', \'our\', \'ours\', \'ourselves\', \'she\', \'their\', \'theirs\',\n	\'them\', \'themselves\', \'they\', \'us\', \'we\', \'who\', \'whoever\', \'whom\',\n	\'whomever\', \'you\', \'your\', \'yourself\', \'yourselves\'])\n\n\nclass AliasIdentifier(object):\n	\"\"\"\n	Identifies the aliases of characters, concepts, or nouns (retrieved from a\n	.json file) in a CoreNLP .xml file and BookNLP .tokens file.\n	\"\"\"\n\n	def tokreefy(self, entities):\n		\"\"\"\n		\"Tokreefies\" the given list of characters, concepts, or nouns producing\n		a trie-like structure.\n		@param entities - List of entitities formatted according to the standard\n			.json format (as returned by CharactersManager.get_characters,\n			ConceptsManager.get_concepts, NounsManager.get_nouns)\n		@return Trie-like structure based on alias tokens with leaf nodes (keyed\n			by \'_alias\') represented as,\n			{\n				\"span\": [Alias span],\n				\"entity\": [Character/Concept/Noun identifier],\n				\"rank\": [Rank of the character/concept/noun],\n				\"count\": [# occurrences of the alias]\n			}\n		\"\"\"\n\n		tokree = {}\n		for rank, entity in enumerate(entities, start=1):\n			for alias in entity[\'aliases\']: \n				subtokree = tokree\n				\n				for alias_tok in alias[\'alias\'].split():\n					if alias_tok not in subtokree:\n						subtokree[alias_tok] = {}\n					subtokree = subtokree[alias_tok]\n				\n				subtokree[\'_alias\'] = {\n					\'span\': alias[\'alias\'],\n					\'entity\': entity[\'entity\'],\n					\'count\': alias[\'count\'],\n					\'rank\': rank\n				}\n\n		return tokree\n\n	def get_pronouns(self, booknlp_tokens_path, entities):\n		\"\"\"\n		Reads a BookNLP .tokens file, returning the pronouns corresponding to\n		the given list of entities.\n		@param booknlp_tokens_path - Filepath to BookNLP .tokens\n		@param entities - List of entities for which to grab pronoun\n			co-referents\n		@return Table mapping token index to pronoun, where a pronoun is\n			represented by the tuple,\n			(, , , ,\n				, )\n		\"\"\"\n\n		# Read aliases into a dictionary from character Id to list of aliases,\n		# with each alias represented as a tuple with token Id (of the first\n		# token), name, beginning character offset, and ending character offset.\n		aliases_read = defaultdict(list)\n\n		with open(booknlp_tokens_path) as f:\n			# Skip header.\n			next(f)\n\n			in_char = False\n			# Alias name is taken as the lemmas.\n			char_id, token_id, alias_name, = -1, -1, \'\'\n			begin_offset, end_offset = -1, -1\n			for line in f:\n				entries = line.split()\n\n				curr_id = int(entries[-1])\n				# Given token doesn\'t refer to a character.\n				if curr_id == -1:\n					if in_char:\n						aliases_read[char_id].append((token_id, alias_name,\n							begin_offset, end_offset))\n						in_char = False\n					\n					continue\n\n				if in_char and curr_id == char_id:\n					alias_name += \' \' + entries[7]\n					end_offset = int(entries[4])\n				elif in_char and curr_id != char_id:\n					aliases_read[char_id].append((token_id, alias_name,\n						begin_offset, end_offset))\n\n					char_id, token_id = curr_id, int(entries[2])\n					alias_name = entries[7]\n					begin_offset, end_offset = int(entries[3]), int(entries[4])\n				else:\n					char_id, token_id = curr_id, int(entries[2])\n					alias_name = entries[7]\n					begin_offset, end_offset = int(entries[3]), int(entries[4])\n					in_char = True\n\n			pronoun_table = {}\n			for _, aliases in aliases_read.iteritems():\n				names = set([n for _, n, _, _ in aliases])\n				pronoun_cntr = Counter([p for _, p, _, _ in aliases\n					if p in PRONOUNS])\n\n				character, rank = None, 0\n				for i, entity in enumerate(entities, start=1):\n					if entity[\'entity\'] in names:\n						character, rank = entity, i\n						break\n\n				if character:\n					for token_id, name, begin_offset, end_offset in aliases:\n						if name.lower() in PRONOUNS:\n							pronoun_table[token_id] = (name, begin_offset,\n								end_offset, character, rank, pronoun_cntr[name])\n\n			return pronoun_table\n\n	def ident(self, tokree, corenlp_filepath, pronoun_table=None):\n		\"\"\"\n		Identifies the instances of aliases from the tokree in the CoreNLP .xml\n		located by corenlp_filepath, returning a list of identifed aliases with\n		each alias represented as,\n		{\n			\'indices\': [List of token indices in the document covered by the\n				alias],\n			\'local_indices\': [List of token indices within the sentence covered\n				by the alias]\n			\'begin_offset\': [Starting character offset of alias span],\n			\'end_offset\': [Ending character offset of alias span],\n			\'span\': [Alias span],\n			\'entity\': {\n				\'name\': [Character/Concept/Noun identifier],\n				\'rank\': [Rank of the Character/Concept/Noun]\n			},\n			\'count\': [# occurrences of the alias]\n		}\n		cross-referencing with the pronoun table.\n		\"\"\"\n\n		aliases = []\n\n		e = ET.parse(corenlp_filepath).getroot()\n\n		tok_matches, subtokree, global_tok_ind = [], tokree, -1\n		for sent_ind, sent in enumerate(e.iter(\'sentence\')):\n			for i, tok in enumerate(sent.find(\'tokens\')):\n				tok_ind = i + 1\n				global_tok_ind += 1\n\n				if pronoun_table and global_tok_ind in pronoun_table:\n					name = pronoun_table[global_tok_ind][0]\n					begin_offset = pronoun_table[global_tok_ind][1]\n					end_offset = pronoun_table[global_tok_ind][2]\n					entity_name = pronoun_table[global_tok_ind][3][\'entity\']\n					rank = pronoun_table[global_tok_ind][4]\n					count = pronoun_table[global_tok_ind][5]\n					\n					aliases.append({\n						\'sentence_index\': sent_ind + 1,\n						\'indices\': [global_tok_ind],\n						\'local_indices\': [tok_ind],\n						\'begin_offset\': begin_offset,\n						\'end_offset\': end_offset,\n						\'span\': name,\n						\'entity\': {\n							\'name\': entity_name,\n							\'rank\': rank\n						},\n						\'count\': count\n					})\n\n					continue\n\n				tok_text = tok[0].text\n				if tok_text in subtokree:\n					tok_matches.append((global_tok_ind, tok_ind, tok))\n					subtokree = subtokree[tok_text]\n				elif len(tok_matches) &gt; 0:\n					try:\n						alias_leaf = subtokree[\'_alias\']\n					except KeyError:\n						tok_matches = []\n						subtokree = tokree\n						continue\n\n					aliases.append({\n						\'sentence_index\': sent_ind + 1,\n						\'indices\': [i for i, _, _ in tok_matches],\n						\'local_indices\': [j for _, j, _ in tok_matches],\n						\'begin_offset\': int(tok_matches[0][2][2].text),\n						\'end_offset\': int(tok_matches[-1][2][3].text),\n						\'span\': alias_leaf[\'span\'],\n						\'entity\': {\n							\'name\': alias_leaf[\'entity\'],\n							\'rank\': alias_leaf[\'rank\']\n						},\n						\'count\': alias_leaf[\'count\']\n					})\n\n					tok_matches, subtokree = [], tokree\n\n		return aliases\n\n	def save(self, aliases, filepath):\n		\"\"\"\n		Saves the list of identified alaises (as outputted by ident_aliases) to\n		a .json file located at filepath.\n		\"\"\"\n\n		with open(filepath, \'w\') as out:\n			json.dump(aliases, out, sort_keys=True, indent=4)\n\n\nclass AliasesManager(object):\n	\"\"\"\n	Manages the list of identified aliases for each story in the corpus.\n	\"\"\"\n\n	def __init__(self):\n		self.identifier = AliasIdentifier()\n		self.characters_manager = CharactersManager()\n		self.concepts_manager = ConceptsManager()\n		self.nouns_manager = NounsManager()\n		self.corpus_manager = CorpusManager()\n\n	def get_fpath(self, sid, tpe):\n		\"\"\"\n		Returns the filepath to the identified (character, concept, noun if tpe\n		is \'character\', \'concept\', or \'noun\', respectively) aliases .json file\n		for the given story.\n		\"\"\"\n\n		if not self.corpus_manager.belongs(sid):\n			raise ValueError(sid +\n				\" does not correspond to a story in the corpus.\")\n\n		dirpath = self.corpus_manager.get_dirpath(sid)\n		aliases_dirpath = os.path.join(dirpath, \'aliases\')\n\n		# What on earth were you doing -Rob\n		#if sid == \'a-tale-of-two-cities\' or sid == \'peregrine-pickle\' or \\\n		#	sid == \'pride-and-prejudice\' or sid == \'to-the-lighthouse\' or \\\n		#	sid == \'tristram-shandy\':\n		if tpe == \'character\' or tpe == \'concept\' or tpe == \'noun\':\n			return os.path.join(aliases_dirpath, \'\'.join([tpe, \'.json\']))\n		else:\n			raise ValueError(\"\'tpe\' must be \'character\', \'concept\', or \"\n				\"\'noun\'.\")\n		# Assume story is in a sub-corpus.\n		# Commenting this out for now because it is ridiculous\n		# else:\n		#	if tpe == \'character\':\n		#		return os.path.join(os.path.join(aliases_dirpath, \'character\'),\n		#			sid + \'.json\')\n		#	elif tpe == \'concept\':\n		#		return os.path.join(os.path.join(aliases_dirpath, \'concept\'),\n		#							sid + \'.json\')\n		#	elif tpe == \'noun\':\n		#		return os.path.join(os.path.join(aliases_dirpath, \'noun\'),\n		#							sid + \'.json\')\n		#	else:\n		#		raise ValueError(\"\'tpe\' must be \'character\', \'concept\', or \"\n		#			\"\'noun\'.\")\n	\n	def saved(self, sid, tpe):\n		\"\"\"\n		Checks whether the (character, concept, or noun if tpe is \'character\',\n		\'concept\', or \'noun\', respectively) aliases .json for the given story\n		has been generated.\n		\"\"\"\n\n		return os.path.exists(self.get_fpath(sid, tpe))\n\n	def ident(self, sid, tpe):\n		\"\"\"\n		Generates the identified aliases .json file for the given story and type\n		(Overwrites it if it already exists).\n		\"\"\"\n\n		fpath = self.get_fpath(sid, tpe)\n		\n		# Create the parent directory if it doesn\'t already exist.\n		dirpath = os.path.split(fpath)[0]\n		if not os.path.exists(dirpath):\n			os.makedirs(dirpath)\n\n		if tpe == \'character\':\n			entities = self.characters_manager.get_characters(sid)\n		elif tpe == \'concept\':\n			entities = self.concepts_manager.get_concepts(sid)\n		elif tpe == \'noun\':\n			entities = self.nouns_manager.get_nouns(sid)\n		else:\n			raise ValueError(\"\'tpe\' must be \'character\', \'concept\', or \'noun\'.\")\n\n		tokree = self.identifier.tokreefy(entities)\n\n		booknlp_tokens_path = self.corpus_manager.get_booknlp_tokens(sid)\n		pronoun_table = self.identifier.get_pronouns(booknlp_tokens_path,\n			entities)\n\n		aliases = self.identifier.ident(tokree,\n			self.corpus_manager.get_corenlp_fpath(sid), pronoun_table)\n\n		self.identifier.save(aliases, self.get_fpath(sid, tpe))\n\n	def get_aliases(self, sid, tpe):\n		\"\"\"\n		Retrieves the (character, concept, noun if tpe is \'character\',\n		\'concept\', or \'noun\', respectively) aliases from the .json file for the\n		given story.\n		\"\"\"\n\n		with open(self.get_fpath(sid, tpe)) as f:\nreturn json.load(f)','https://github.com/rbudac/McGill-Characterization-Process/',0,1,'2016-10-18 19:53:33','2018-05-14 20:57:16',''),(601,938,'McGill Characterization Process - Collocate Parser','Part of the McGill Characterization Process family. Examines all the texts in a data directory and uses the output from the Alias Identifier to find the collocates for the words in the aforementioned texts. Output is in .tsv format and is required for the rest of the tools in this family.\n\nExtensive setup required. Please consult the readme on github for setup instructions.','https://github.com/rbudac/McGill-Characterization-Process',1,'Hardik Vala & Andrew Piper','hardik.vala@mail.mcgill.ca','','images/tools/1/601.png',0,0,'2016-10-21',NULL,'\"\"\"\nManages the collocates for characters, concepts, and nounds for each story in\nthe corpus.\n@author: Hardik\n\"\"\"\n\nimport csv\nimport os\nimport sys\n\nfrom collections import Counter\nfrom sklearn.feature_extraction.text import CountVectorizer\nfrom sklearn.preprocessing import normalize\n\nfrom aliases import AliasesManager\nfrom characters import CharactersManager\nfrom dependency import DependencyParser\nfrom corpus import CorpusManager\nfrom role import map_role\n\n\nclass CollocatesManager(object):\n	\"\"\"\n	Manages the collocates for characters, concepts, and nounds for each story\n	in the corpus.\n	\"\"\"\n\n	def __init__(self):\n		self.depparser = DependencyParser()\n\n		self.aliases_manager = AliasesManager()\n		self.corpus_manager = CorpusManager()\n\n	def get_fpath(self, sid, tpe):\n		\"\"\"\n		Returns the filepath to the (character, concept, noun if tpe is\n		\'character\', \'concept\', or \'noun;, respectively) collocates .tsv file\n		for the given story.\n		\"\"\"\n\n		if not self.corpus_manager.belongs(sid):\n			raise ValueError(sid +\n				\" does not correspond to a story in the corpus.\")\n\n		dirpath = self.corpus_manager.get_dirpath(sid)\n		collocates_dirpath = os.path.join(os.path.join(dirpath, \'collocates\'),\n			\'unmarginalized\')\n\n		# WHYYYYYY -Rob\n		#if sid == \'a-tale-of-two-cities\' or sid == \'peregrine-pickle\' or \\\n		#	sid == \'pride-and-prejudice\' or sid == \'to-the-lighthouse\' or \\\n		#	sid == \'tristram-shandy\':\n		if tpe == \'character\' or tpe == \'concept\' or tpe == \'noun\':\n                        return os.path.join(collocates_dirpath, \'\'.join([tpe, \'.tsv\']))\n		else:\n			raise ValueError(\"\'tpe\' must be \'character\', \'concept\', or \"\n				\"\'noun\'.\")\n		# Assume story is in a sub-corpus.\n		# Nope nope nope, sub-corpus stuff is commented out for now\n		#else:\n		#	if tpe == \'character\':\n		#		return os.path.join(os.path.join(collocates_dirpath,\n		#			\'character\'), sid + \'.tsv\')\n		#	elif tpe == \'concept\':\n		#		return os.path.join(os.path.join(collocates_dirpath, \'concept\'),\n		#			sid + \'.tsv\')\n		#	elif tpe == \'noun\':\n		#		return os.path.join(os.path.join(collocates_dirpath, \'noun\'),\n		#			sid + \'.tsv\')\n		#	else:\n		#		raise ValueError(\"\'tpe\' must be \'character\', \'concept\', or \"\n		#			\"\'noun\'.\")\n	\n	def saved(self, sid, tpe):\n		\"\"\"\n		Checks whether the (character, concept, or noun if tpe is \'character\'\n		\'concept\', or \'noun\', respectively) collocates .tsv for the given story\n		has been generated.\n		\"\"\"\n\n		return os.path.exists(self.get_fpath(sid, tpe))\n\n	def parse(self, sid, tpe):\n		\"\"\"\n		Generates the collocates .tsv file for the given story and type\n		(Overwrites it if it already exists).\n		\"\"\"\n\n		fpath = self.get_fpath(sid, tpe)\n		\n		# Create the parent directory if it doesn\'t already exist.\n		dirpath = os.path.split(fpath)[0]\n		if not os.path.exists(dirpath):\n			os.makedirs(dirpath)\n\n		corenlp_fpath = self.corpus_manager.get_corenlp_fpath(sid)\n\n		character_aliases = self.aliases_manager.get_aliases(sid, \'character\')\n		aliases = character_aliases if tpe == \'character\' else \\\n			self.aliases_manager.get_aliases(sid, tpe)\n\n		self.depparser.save(corenlp_fpath, aliases, character_aliases, fpath)\n\n	def get(self, sid, tpe, role=None, ranks=None):\n		\"\"\"\n		Returns a list of the collocates from the saved .tsv file (must\'ve first\n		been generated using CollocatesManager.parse) for the given story and\n		type. (The collocates are automatically joined with the corresponding\n		aliases.)\n		@param sid - Story Id of story\n		@param tpe - \'character\', \'concept\', or \'noun\'\n		@param role - Role to filter on (If None (default), all collocates are\n			returned)\n		@param ranks - List of character ranks to filter on (If None (default),\n			collocates for all characters are returned)\n		@return List of collocates, with each collocate in the form,\n			{\n				\'type\': ,\n				\'token\': {\n					\'index\': ,\n					\'lemma\': ,\n					\'word\': \n				}\n				\'alias\': \n			}\n		\"\"\"\n\n		aliases = self.aliases_manager.get_aliases(sid, tpe)\n\n		# Transform list of aliases to a map keyed by character offsets for easy\n		# access.\n		alias_dict = {(alias[\'begin_offset\'], alias[\'end_offset\']): alias\n			for alias in aliases}\n\n		with open(self.get_fpath(sid, tpe), \'rb\') as f:\n			reader = csv.reader(f, delimiter=\'\\t\', quotechar=\'\"\')\n\n			# Skip header.\n			next(reader)\n\n			collocates = []\n			for row in reader:\n				begin_offset, end_offset = int(row[0]), int(row[1])\n\n				coll = {\n					\'type\': row[5],\n					\'token\': {\n						\'index\': int(row[2]),\n						\'lemma\': row[3],\n						\'word\': row[4]\n					},\n					\'alias\': alias_dict[(begin_offset, end_offset)]\n				}\n\n				if len(row) &gt; 6:\n					if row[6] != \'\':\n						coll[\'prt\'] = {\n							\'index\': int(row[6]),\n							\'lemma\': int(row[7])\n						}\n\n				if len(row) &gt; 8:\n					if row[8] != \'\':\n						coll[\'vmod\'] = {\n							\'index\': int(row[8]),\n							\'lemma\': int(row[9])\n						}\n\n				collocates.append(coll)\n\n			# Filter collocates based on the role.\n			if role:\n				collocates = [coll for coll in collocates\n								if map_role(coll[\'type\']) == role]\n\n			# Filter collocates based on the ranks.\n			if ranks:\n				ranks = set(ranks)\n				collocates = [coll for coll in collocates\n								if coll[\'alias\'][\'entity\'][\'rank\'] in ranks]\n\n			return collocates\n\n	def get_dtmatrix(self, sids, tpe, role=None, ranks=None, min_df=10,\n		normal=False):\n		\"\"\"\n		Calculates the document-term matrix, where documents are stories, and\n		terms are collocate words.\n		@param sids - List of story Id\'s\n		@param tpe - \'character\', \'concept\', or \'noun\'\n		@param role - Role to filter on (If None (default), all collocates are\n			considered)\n		@param ranks - List of character ranks to filter on (If None (default),\n			collocates for all characters are considered)\n		@param min_df - Ignore terms that have a document frequency strictly\n			lower than the given (integer) threshold\n		@param normal - If True, normalize returned matrix (by story)\n		@param Document-term matrix (in CSR format) and vectorizer as a pair\n		\"\"\"\n\n		collocate_words = (\' \'.join([coll[\'token\'][\'lemma\'] for coll\n			in self.get(sid, tpe, role, ranks)]) for sid in sids)\n		count_vect = CountVectorizer(min_df=min_df)\n\n		dtmat = count_vect.fit_transform(collocate_words).astype(float)\n\n		if normal:\n			return normalize(dtmat), count_vect\n\nreturn dtmat, count_vect','https://github.com/rbudac/McGill-Characterization-Process',0,1,'2016-10-18 20:21:39','2018-05-14 20:57:17',''),(602,938,'McGill Characterization Process - Calculate Character Centrality','Part of the McGill Characterization Process family. Examines all the texts in a data directory, and using the analysis already done by the Collocate Parser, Alias Identifier, and Character Parser, gives data for the centrality of characters for each text, allowing the texts to be ranked against each other based on this.\n\nExtensive setup required. Please consult the readme on github for setup instructions.','https://github.com/rbudac/McGill-Characterization-Process',1,'Hardik Vala & Andrew Piper','hardik.vala@mail.mcgill.ca','','images/tools/1/602.png',0,0,'2016-10-21',NULL,'\"\"\"\nCalculates character-based centrality measure for each story, saving the\nresults in a .tsv file.\n@author: Hardik\n\"\"\"\n\nimport argparse\nimport csv\nimport logging\nimport os\nimport sys\nsys.path.insert(1, os.path.join(sys.path[0], os.path.join(\'..\', \'src\')))\n\nfrom collections import Counter\nfrom scipy import stats\n\nfrom aliases import AliasesManager\nfrom corpus import CorpusManager\n\n# Configure logging\nlogging.basicConfig(format=\"%(levelname)s: [%(asctime)s] %(message)s\",\n	level=logging.INFO)\n\n\n# Returns a counter of the number of mentions for the top 20 characters.\ndef get_alias_cnts(aliases):\n	cntr = Counter()\n\n	for alias in aliases:\n		rank = alias[\'entity\'][\'rank\']\n		if rank &gt; 20:\n			continue\n\n		cntr[rank] += 1\n\n	return cntr\n\n\ndef main():\n	parser_description = (\"Calculates character-based centrality measure for \"\n		\"each story, saving the results in a .tsv file.\")\n	parser = argparse.ArgumentParser(description=parser_description)\n\n	parser.add_argument(\'out_path\', help=\"Output path to data .tsv file\")\n\n	args = parser.parse_args()\n\n	aliases_manager = AliasesManager()\n	corpus_manager = CorpusManager()\n	\n	logging.info(\"Getting story Id\'s and pub. dates...\")\n	# Get publication dates for all stories.\n	dates = corpus_manager.get_dates()\n	# Story Id\'s.\n	sids = corpus_manager.get_ids(origin=\'gen\')\n\n	with open(args.out_path, \'wb\') as f:\n		writer = csv.writer(f, delimiter=\'\\t\', quotechar=\'\"\')\n\n		# Write header.\n		writer.writerow([\'STORY ID\', \'PUB. DATE\', \'GENRE\',\n			\'FIRST/SECOND RATIO\', \'MAX. DIFF. RANK\', \'MENTIONS SKEW\'])\n		\n		for sid in sids:\n			if not aliases_manager.saved(sid, tpe=\'character\'):\n				logging.info(\"Skipping %s...\" % sid)\n				continue\n			\n			genre = (None if sid.startswith(\'000\') else\n					corpus_manager.get_genre(sid, pretty=True))\n			row = [sid, dates[sid] if sid in dates else \'DNE\',\n				genre if genre else \'DNE\']\n\n			aliases = aliases_manager.get_aliases(sid, tpe=\'character\')\n			cntr = get_alias_cnts(aliases)\n\n			num_characters = len(cntr)\n\n			ratio, max_diff_rank, skew = \'DNE\', \'DNE\', \'DNE\'\n			if num_characters &gt; 1:\n				# List of counts in order of character rank.\n				cnts = [cnt for _, cnt\n						in sorted(cntr.items(), key=lambda i: -i[1])]\n\n				# Ratio of # mentions between the first and second\n				# characters.\n				ratio = (float(cnts[0]) / float(cnts[1]))\n\n				# Rank of the maximum difference in mentions between\n				# characters (in top 20, and not including the first character).\n				max_diff_rank, max_diff = None, 0\n				for i in range(1, num_characters - 1):\n					diff = (cnts[i] - cnts[i + 1])\n\n					if max_diff &lt; diff:\n						max_diff_rank, max_diff = i + 1, diff\n\n				# Skew of the mention distribution of the top 20\n				# characters.\n				skew = stats.skew(cnts)\n\n			row += [ratio, max_diff_rank, skew]\n\n			writer.writerow(row)\n		\n\nif __name__ == \'__main__\':\nmain()','https://github.com/rbudac/McGill-Characterization-Process/',0,1,'2016-10-18 21:09:04','2018-05-14 20:57:19',''),(603,1005,'Laser Pointer','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html',0,'','','','images/tools/1/603.png',0,1,'2016-11-08',NULL,NULL,'',NULL,0,'2016-11-08 06:56:44','2017-10-31 14:26:38',''),(605,1005,'Laser Pointer','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html',0,'','','','images/tools/1/605.png',0,1,'2016-11-08',NULL,NULL,'',NULL,0,'2016-11-08 06:56:47','2017-10-31 14:26:38',''),(606,1005,'Laser Pointer','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html',0,'','','','images/tools/1/606.png',0,1,'2016-11-08',NULL,NULL,'',NULL,0,'2016-11-08 06:56:48','2017-10-31 14:26:38',''),(607,1005,'Laser Pointer','.Due to its strong straight light, laser pens (pointers) are widely used in teaching, astronomy etc. Just push the button, then you will see striking light shoot. It is alright to point at any targets such as photos, PowerPoint, monitor etc. It may be the proferred choic for astronomy fans, laser fans.','http://www.htpow.com/high-powered-30000mw-blue-laserpointer-445nm-worlds-brightest-p-1027.html',0,'','','','images/tools/1/607.png',0,1,'2016-11-08',NULL,NULL,'',NULL,0,'2016-11-08 06:56:49','2017-10-31 14:26:38',''),(608,938,'Textual Geography Analyzer','Parses text tagged by the Stanford named entity recognizer in order to collect and analyze mentions of locations. Also incorporates the Google API in order to geocode those locations and, ultimately, mark them on a map.\n\nThis code was written in an IPython Notebook, so the code below is actually a collection of scattered code snippets. Please see the repository on github for full details and documentation, or the Methods Common recipe ( http://methodi.ca/recipes/mapping-locations-corpus ) for a step-by-step guide.\n\nNOTE: Users will be required to acquire their own Google API key, store it in a text file, and then point the code to that text file. Instructions can be found in the IPython Notebook itself. Search for \"api_key_file\" to find the line in code that needs to be changed.','https://github.com/wilkens/edinburgh-masterclass/blob/master/Notebooks/02%20Textual%20Geography.ipynb',1,'Matthew Wilkens','mattwilkens@gmail.com','','images/tools/1/608.png',5,0,'2017-10-26',NULL,'# Suppress compatibility warnings\nimport warnings\nwarnings.filterwarnings(\'ignore\')\n\n\nimport pandas as pd\nimport numpy as np\nfrom nltk.corpus.reader.plaintext import PlaintextCorpusReader\n\ntext_dir = \'../Data/Texts/\'\ncorpus = PlaintextCorpusReader(text_dir, \'.*\\.txt\')\n\n# A function to turn fileids into a table of metadata\ndef parse_fileids(fileids):\n    \'\'\'Takes a list of file names formatted like A-Cather-Antonia-1918-F.txt.\n       Returns a pandas dataframe of derived metadata.\'\'\'\n    import pandas as pd\n    meta = {}\n    for fileid in fileids:\n        file = fileid.strip(\'.txt\') # Get rid of file suffix\n        fields = file.split(\'-\') # Split on dashes\n        fields[2] = fields[2].replace(\'_\', \' \') # Remove underscore from titles\n        fields[3] = int(fields[3])\n        meta[file] = fields\n    metadata = pd.DataFrame.from_dict(meta, orient=\'index\') # Build dataframe\n    metadata.columns = [\'nation\', \'author\', \'title\', \'pubdate\', \'gender\'] # Col names\n    return metadata.sort_index() # Note we need to sort b/c datframe built from dictionary\n\ndef collect_stats(corpus):\n    \'\'\'Takes an NLTK corpus as input. \n       Returns a pandas dataframe of stats indexed to fileid.\'\'\'\n    import nltk\n    import pandas as pd\n    stats = {}\n    for fileid in corpus.fileids():\n        word_count = len(corpus.words(fileid))\n        stats[fileid.strip(\'.txt\')] = {\'wordcount\':word_count}\n    statistics = pd.DataFrame.from_dict(stats, orient=\'index\')\n    return statistics.sort_index()\n\nbooks = parse_fileids(corpus.fileids())\nstats = collect_stats(corpus)\nbooks = books.join(stats)\nbooks.index.set_names(\'file\', inplace=True)\nbooks.head()\n\n\ndef get_loc(line):\n    \'\'\'Takes a string of NER output. \n       Returns a location if found, else None.\'\'\'\n    line = line.split(\'\\t\')\n    try:\n        if line[1] == \'LOCATION\':\n            return line[0]\n        else:\n            return None\n    except:\n        return None\n\ndef ingest_ner(f):\n    \'\'\'Take a file handle for an NER output file.\n       Uses get_loc() to extract locations.\n       Returns a dict of locations and counts.\'\'\'\n    from collections import defaultdict\n    locations = defaultdict(lambda: 0)\n    for line in f:\n        loc = get_loc(line)\n        if loc:\n            locations[loc] += 1\n    return locations\n    \n    \n    import os # Used to create OS-appropriate file paths\nner_dir = \'../Data/NER/\' # Where we keep the NER files\n\nfiles_list =[]   # Lists to hold our data\nlocs_list = []\noccurs_list = []\n\nfor fileid in sorted(corpus.fileids()): # Loop over fileids in corpus\n    file = os.path.join(ner_dir, fileid)\n    with open(file) as f:\n        locations = ingest_ner(f) # Get a dict of locations and counts in this file\n        for loc in sorted(locations, key=locations.get, reverse=True): # Loop over keys in dict\n            files_list.append(fileid.strip(\'.txt\'))\n            locs_list.append(loc)\n            occurs_list.append(locations[loc])\n            \n            \n# Turn the lists into a Pandas dataframe\nd = {\'file\': files_list, \n     \'location\': locs_list,\n     \'occurs\': occurs_list}\ngeo = pd.DataFrame(d)\nprint(geo.describe())\ngeo.head()\n\n\n# Total number of named location occurrences in corpus\ngeo.occurs.sum()\n\n\n%matplotlib inline\n\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport numpy as np\n\nsns.set_style(\"whitegrid\")\nsns.set_context(\"talk\")\n\nplt.hist(np.log10(geo.occurs), bins=50)\nplt.show()\n\n\n# Total location counts for full corpus\nplaces = geo.groupby(\'location\')\nplaces.occurs.aggregate(np.sum).head()\n\n\n# How many different volumes contain at least one mention of each place?\nplaces.occurs.size().head()\n\n\nplace_counts = pd.DataFrame(places.occurs.aggregate(np.sum))\nplace_counts[\'volumes\'] = places.occurs.size()\nprint(place_counts.describe())\nplace_counts.head()\n\n\nlookups = place_counts[(place_counts[\'occurs\']&gt;5) &amp; (place_counts[\'volumes\']&gt;1)]\nlookups.describe()\n\n\nlookups.occurs.sum()\n\n\nlookups.head()\n\n\n# Parameters for geocoding clients\n# NOTE: Per-second query rates will quickly use up daily API quota.\n#   Need to be careful not to exceed daily quota\n\nimport googlemaps\n\ngc_rate  =     50 # Geocoding queries per second\npl_rate  =      5 # Places queries per second\napi_key_file = \'[INSERT PATH TO GOOGLE API KEY FILE HERE]/google-geo-api-key.txt\'\n\n# Get API key from file\ntry:\n    api_key = open(api_key_file).read().strip()\nexcept:\n    sys.exit(\'Cannot get Google geocoding API key. Exiting.\')\n\ngc_client = googlemaps.Client(key=api_key, queries_per_second=gc_rate) # For Geocoding API\npl_client = googlemaps.Client(key=api_key, queries_per_second=pl_rate) # For Places API\n\n\ndef get_placeid(string, api_client):\n    \'\'\'Takes a string and an established googlemaps places API client.\n       Returns first place_id associated with that string.\n       If not place_id found, returns \"ZERO_RESULTS\" or None, depending on result status code.\'\'\'\n    try:\n        place = api_client.places(string)\n        status = place[\'status\']\n        if status == \'OK\':\n            place_id = place[\'results\'][0][\'place_id\']\n        elif status == \'ZERO_RESULTS\':\n            place_id = None\n        else:\n            place_id = None\n    except:\n        place_id = None\n    return place_id\n\ndef process_id(placeid, api_client):\n    \'\'\'Takes a Google place_id and an established googlemaps geocoding API client.\n        Looks up and parses geo data for placeid.\n        Returns int code on error, else dictionary of geo data.\n    \'\'\'\n    # Define all variables, initial to None\n    result = {\n    \'formatted_address\' : None,\n    \'location_type\' : None,\n    \'country\' : None,\n    \'admin_1\' : None,\n    \'admin_2\' : None,\n    \'locality\' : None,\n    \'colloquial_area\' : None,\n    \'continent\' : None,\n    \'natural_feature\' : None,\n    \'point_of_interest\' : None,\n    \'lat\' : None,\n    \'lon\' : None,\n    \'partial\' : None,\n    }\n    # Perform reverse geocode. Note this needs googlemaps v 2.4.3 or higher\n    try:\n        data = gc_client.reverse_geocode(placeid)\n    except:\n        return 1 # Problem with geocoding API call\n    \n    # Use the first result. Should only be one when reverse geocoding with place_id.\n    try:\n        data = data[0]\n        result[\'formatted_address\'] = data[\'formatted_address\']\n        result[\'location_type\'] = data[\'types\'][0]\n        result[\'lat\'] = data[\'geometry\'][\'location\'][\'lat\']\n        result[\'lon\'] = data[\'geometry\'][\'location\'][\'lng\']\n        try:\n            result[\'partial\'] = result[\'partial_match\']\n        except:\n            result[\'partial\'] = False\n    except:\n        print(\"   Bad geocode for place_id %s\" % (placeid))\n        return 2 # Problem with basic geocode result\n    \n    try:\n        for addr_comp in data[\'address_components\']:\n            comp_type = addr_comp[\'types\'][0]\n            if comp_type == \'locality\':\n                result[\'locality\'] = addr_comp[\'long_name\']\n            elif comp_type == \'country\':\n                result[\'country\'] = addr_comp[\'long_name\']\n            elif comp_type == \'administrative_area_level_1\':\n                result[\'admin_1\'] = addr_comp[\'long_name\']\n            elif comp_type == \'administrative_area_level_2\':\n                result[\'admin_2\'] = addr_comp[\'long_name\']\n            elif comp_type == \'colloquial_area\':\n                result[\'colloquial_area\'] = addr_comp[\'long_name\']\n            elif comp_type == \'natural_feature\':\n                result[\'natural_feature\'] = addr_comp[\'long_name\']\n            elif comp_type == \'point_of_interest\':\n                result[\'point_of_interest\'] = addr_comp[\'long_name\']\n            elif comp_type == \'continent\':\n                result[\'continent\'] = addr_comp[\'long_name\']\n    except:\n        return 3 # Problem with address components\n    \n    return result\n    \n    \n%%time\n\nplaceids = {} # Store results ina dictionary keyed to placeid\n\nfor loc in lookups.index:\n    plid = get_placeid(loc, pl_client)\n    placeids[loc] = plid\n    \nplaceids = pd.DataFrame.from_dict(placeids, orient=\'index\')\nplaceids.columns = [\'placeid\']\nplaceids.index.set_names(\'location\', inplace=True)\n\n\n\n\n#placeids = pd.read_csv(\'../Results/placeids.csv\', index_col=0)\n\n\n\n\n\n\nplaceids.to_csv(\'../Results/placeids.csv\')\nplaceids.head()\n\n\n\n\n%%time\n\ngeodata = {} # Again, store results in a dict keyed to placeid\n\nfor plid in placeids[\'placeid\']:\n    if plid:\n        geodata[plid] = process_id(plid, gc_client)\n        \n        \ngeodata_df = pd.DataFrame.from_dict(geodata)\ngeodata_df = geodata_df.transpose()\ngeodata_df.index.set_names(\'placeid\', inplace=True)\ngeodata_df.head()\n\n\n#geodata_df = pd.read_csv(\'../Results/geodata_df.csv\', index_col=0)\n\n\n# Write geo data to disk\ngeodata_df.to_csv(\'../Results/geodata_df.csv\')\n\n\n# Put all the data together\nplaceids_geo = placeids.join(geodata_df, on=\'placeid\')\nplaceids_geo.head()\n\n\ngeo_all = geo.join(placeids_geo, on=\'location\')\ngeo_all = geo_all[geo_all.placeid.notnull()]\ngeo_all = geo_all[geo_all[\'locality\']!=\'Charlotte\']\nprint(geo_all.shape)\ngeo_all.head()\n\n\n','https://github.com/wilkens/edinburgh-masterclass',0,1,'2016-11-18 21:42:44','2018-05-14 20:57:22',''),(609,1005,'green laser pointer','HTPOW astronomy green laser flashlight cheap enough','http://www.htpow.com/300mw-green-high-power-laser-pointer-waterproof-adjustable-holster-p-1038.html',0,'michale','michaleorange@gmail.com','http://www.htpow.com','images/tools/1/609.png',0,1,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 10:05:32','2017-10-31 14:26:38',''),(610,1005,'green laser pointer','HTPOW astronomy green laser flashlight cheap enough','http://www.htpow.com/300mw-green-high-power-laser-pointer-waterproof-adjustable-holster-p-1038.html',0,'michale','michaleorange@gmail.com','http://www.htpow.com','images/tools/1/610.png',0,1,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 10:05:35','2019-01-24 21:55:01',''),(611,1005,'green laser pointer','HTPOW astronomy green laser flashlight cheap enough','http://www.htpow.com/300mw-green-high-power-laser-pointer-waterproof-adjustable-holster-p-1038.html',0,'michale','michaleorange@gmail.com','http://www.htpow.com','images/tools/1/611.png',0,1,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 10:05:41','2017-10-31 14:26:38',''),(612,1005,'green laser pointer','HTPOW astronomy green laser flashlight cheap enough','http://www.htpow.com/300mw-green-high-power-laser-pointer-waterproof-adjustable-holster-p-1038.html',0,'michale','michaleorange@gmail.com','http://www.htpow.com','images/tools/1/612.png',0,1,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 10:05:43','2017-10-31 14:26:38',''),(613,1005,'green laser pointer','HTPOW astronomy green laser flashlight cheap enough','http://www.htpow.com/300mw-green-high-power-laser-pointer-waterproof-adjustable-holster-p-1038.html',0,'michale','michaleorange@gmail.com','http://www.htpow.com','images/tools/1/613.png',0,1,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 10:05:47','2017-10-31 14:26:38',''),(614,988,'Transkribus','Transkribus is an OCR platform for transcribing hand-written text. After manually transcribing 100 images, scholars can use a trained Handwritten Text Recognition (HTR) engine at the Technical University of Valencia to automate the transcription of the remaining pages of their documents. The platform has a number of tools and features for users in different disciplines.','https://transkribus.eu/Transkribus/',1,'TRANSKRIBUS Team at University of Innsbruck','email@transkribus.eu','https://www.uibk.ac.at/','images/tools/1/614.png',0,0,'2019-02-25',NULL,NULL,'',NULL,0,'2017-01-16 22:03:42','2019-02-25 22:26:26',''),(615,988,'Transkribus','Transkribus is an OCR platform for transcribing hand-written text. After manually transcribing 100 images, scholars can use a trained Handwritten Text Recognition (HTR) engine at the Technical University of Valencia to automate the transcription of the remaining pages of their documents. The platform has a number of tools and features for users in different disciplines.','https://transkribus.eu/Transkribus/',0,'TRANSKRIBUS Team at University of Innsbruck','email@transkribus.eu','','images/tools/1/615.png',0,1,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 22:03:43','2017-10-31 14:26:38',''),(616,988,'TimeLineCurator','TimeLineCurator scans a piece of text to extract temporal references and automatically generate a timeline. The user can then curate and modify the elements in the timeline.','http://www.cs.ubc.ca/group/infovis/software/TimeLineCurator/',0,'Johanna Fulda, Matthew Brehmer, and Tamara Munzner','jfulda@cs.ubc.ca','','images/tools/1/616.png',0,0,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 22:14:07','2017-10-31 14:26:38',''),(617,988,'Augentwitt','Augentwitt randomly grabs pictures from the streaming API of Twitter.','http://matthieu-totet.fr/Koumin/tools/augentwitt-pictures-grabber-from-twitter/',0,'Matthieu Totet','matthieu.totet@gmail.com','http://matthieu-totet.fr/',NULL,0,0,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 22:37:16','2017-10-31 14:26:39',''),(618,988,'Chorus','Chorus is a tool for facilitating social science research on Twitter. The Chorus-TCD (Tweetcatcher) program allows researchers to sift twitter for relevant data, and the Chorus-TV (Tweetvis) program allows for a variety of quantitative and qualitative visual analytical approaches.','http://chorusanalytics.co.uk/',0,'Timothy Cribbin, Julie Barnett, Phillip Brooker, Hiran Basnayake','timothy.cribbin@brunel.ac.uk','http://chorusanalytics.co.uk/about-us/','images/tools/1/618.png',0,0,'2017-01-16',NULL,NULL,'',NULL,0,'2017-01-16 22:47:59','2017-10-31 14:26:39',''),(619,988,'Contropedia','Contropedia is a platform for analyzing and visualizing controversy in Wikipedia articles. Controversy metrics are extracted from an article\'s edits and its revision history, helping to reveal its collaborative development and contentious aspects.','http://contropedia.net/',0,'Contropedia Team','contropedia@digitalmethods.net','','images/tools/1/619.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 22:11:12','2017-10-31 14:26:39',''),(620,988,'Digital Footprints','Digital Footprints is a web platform for gathering closed Facebook data for use in research projects. Researchers can invite participants to grant consent to collect data, then explore the acquired data for patterns and specific content.','http://www.digitalfootprints.dk/',0,'Anja Bechmann, Peter Vahlstrup','anjabechmann@cc.au.dk','','images/tools/1/620.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 22:18:15','2017-10-31 14:26:39',''),(621,988,'Facepager','Facepager gathers publicly available data from JSON-based API social media apps including Facebook and Twitter. The acquired data is stored on an SQLite database and can be exported to csv.','https://github.com/strohne/Facepager',0,'Till Keyling, Jakob Jünger','jakob.juenger@uni-greifswald.de','','images/tools/1/621.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 22:28:48','2017-10-31 14:26:40',''),(622,988,'GUESS: The Graph Exploration System','The Graph Exploration System (GUESS) is an exploratory tool for visualizing and analyzing network structures. It is database driven, and is Jython/Java based, allowing the user to create their own applications without much coding.','http://graphexploration.cond.org/',0,'Eytan Adar','eadar@umich.edu','http://www.cond.org/','images/tools/1/622.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 22:43:18','2017-10-31 14:26:40',''),(623,988,'igraph','igraph is an open source collection of network analysis tools, useable in R, Python, and C/C++. It has been designed for efficiency, portability, and ease of use.','http://igraph.org/',0,'Gábor Csárdi, Tamás Nepusz','csardi.gabor@gmail.com','http://gaborcsardi.org/','images/tools/1/623.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 22:49:15','2017-10-31 14:26:40',''),(624,988,'import.io','import.io is a commercial tool for extracting and structuring web data.','https://www.import.io/',1,'Import.io Team','hello@import.io','','images/tools/1/624.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 22:54:02','2018-05-14 20:26:59',''),(625,988,'InfoExtractor','InfoExtractor is a tool for scraping structured data from a URL, such as the title and viewcount of a YouTube video. It currently supports extraction from YouTube video and profile pages, Facebook profiles and pages, Wikipedia entries, Huffingtonpost posts, Blogcatalog blog post and The Heritage Foundation Blog (The Foundry).','http://infoextractor.org/',0,'Chirag Shah','chirags@rutgers.edu','http://comminfo.rutgers.edu/~chirags/','images/tools/1/625.png',0,0,'2018-11-23',NULL,NULL,'',NULL,0,'2017-01-29 23:04:17','2018-11-23 04:40:32',''),(626,988,'iScience Maps','iScience Maps is a free web tool for analyzing the Twitter conversations around impactful events globally. It allows a researcher to compare particular cities or regions to analyze differences in discourse about the event.','http://maps.iscience.deusto.es/',0,'Ulf-Dietrich Reips, Pablo Garaizar','reips@deusto.es','http://iscience.uni-konstanz.de/team/reips/','images/tools/1/626.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 23:17:42','2017-10-31 14:26:41',''),(627,988,'Keyhole','Keyhole is a commercial tool for tracking hashtags on Twitter and Instagram. It has a real-time dashboard of the hashtag as well as analytic summaries.','http://keyhole.co/',0,'Keyhole','','','images/tools/1/627.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 23:22:36','2017-10-31 14:26:41',''),(628,988,'Mozdeh','Mozdeh is a free Windows program for gathering tweets and conducting content analysis. It supports gathering tweets from keywords or particular users, and analysis based on keyword, sentiment, and gender.','http://mozdeh.wlv.ac.uk/',0,'Statistical Cybermetrics Research Group, University of Wolverhampton','','http://cybermetrics.wlv.ac.uk/','images/tools/1/628.png',0,0,'2018-10-19',NULL,NULL,'',NULL,0,'2017-01-29 23:33:57','2018-10-19 02:44:33',''),(629,988,'Mr. Data Converter','Mr. Data Converter is a web tool for converting Excel files into a range of web-friendly formats, including HTML, JSON, and XML.','https://shancarter.github.io/mr-data-converter/',0,'Shan Carter','','http://shancarter.com/','images/tools/1/629.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 23:39:09','2017-10-31 14:26:42',''),(630,988,'Naoyun','Naoyun is a tool for visualizing live twitter activity, connecting it to Gephi.','http://matthieu-totet.fr/Koumin/tools/naoyun/',0,'Matthieu Totet','matthieu.totet@gmail.com','http://matthieu-totet.fr/','images/tools/1/630.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 23:43:04','2017-10-31 14:26:42',''),(631,988,'OutWit','OutWit is a platform for automated web scraping. It is composed of a number of applications built around a central kernel that handles data recognition and extraction.','https://www.outwit.com/',0,'OutWit Technologies','','','images/tools/1/631.png',0,0,'2018-10-19',NULL,NULL,'',NULL,0,'2017-01-29 23:47:52','2018-10-19 02:39:49',''),(632,988,'Table 2 Net','Table 2 Net is a utility tool for extracting a network from a CSV table.','http://tools.medialab.sciences-po.fr/table2net/',0,'Mathieu Jacomy','','http://www.medialab.sciences-po.fr/people/mathieu-jacomy/','images/tools/1/632.png',0,0,'2017-01-29',NULL,NULL,'',NULL,0,'2017-01-29 23:52:44','2017-10-31 14:26:42',''),(633,988,'TagClouder','TagClouder allows a researcher to visualize the relationships between categorized items. They can decide how the links are displayed and which properties to visualize.','www.tagclouder.minddesign.info',0,'Niels Schrader, Michal Ejdys','niels@minddesign.info','','images/tools/1/633.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:06:09','2017-10-31 14:26:43',''),(634,988,'Tumblr Analytics','Tumblr Analytics is a commercial application for conducting social media analysis on Tumblr.','https://unionmetrics.com/product/tumblr-analytics/',0,'Union Metrics','','https://unionmetrics.com/','images/tools/1/634.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:12:58','2017-10-31 14:26:43',''),(635,988,'Tweet Archivist','Tweet Archivist is a commercial tool for archiving Twitter data for social media analysis.','https://www.tweetarchivist.com/',0,'Tweet Archivist','info@tweetarchivist.com','','images/tools/1/635.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:17:05','2017-10-31 14:26:43',''),(636,988,'YouTube Data Tools','YouTube Data Tools is a collection of simple utilities for extracting data from this platform such as Channel information and Related Videos networks.','https://tools.digitalmethods.net/netvizz/youtube/',0,'Digital Methods Initiative','','','images/tools/1/636.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:23:00','2017-10-31 14:26:43',''),(637,988,'procespace','Procspace is a collaborative outliner software. It allows a group to share documents and ideas online, which are then scanned by agents running statistical semantic analysis. These agents create links between documents and search for related ones on the web.','http://procspace.net/',0,'Bernhard Rieder','rieder@uva.nl','http://rieder.polsys.net/',NULL,0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:28:22','2017-10-31 14:26:44',''),(638,988,'Seealsology','Seealsology allows you see a rough sketch of the semantic area related to a Wikipedia Page by creating a graph from its \"See Also\" links.','http://tools.medialab.sciences-po.fr/seealsology/',0,'DensityDesign and SciencesPo MediaLab','','http://www.medialab.sciences-po.fr/','images/tools/1/638.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:36:30','2017-10-31 14:26:44',''),(639,988,'CONDOR','Condor is a research tool for discovering Collaborative Innovation Networks (\"coolhunting\") via social network analysis and automated sentiment analysis.','http://www.ickn.org/ckntools.html',0,'MIT Center for Collective Intelligence','pgloor@mit.edu','','images/tools/1/639.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 00:46:47','2017-10-31 14:26:44',''),(640,988,'DfR Browser','The DfR Browser is a interface for visualizing and exploring a topic model, helping users to see how a topic model classifies words and documents through word co-occurrence patterns.','https://agoldst.github.io/dfr-browser/',0,'Andrew Goldstone','andrew.goldstone@rutgers.edu','https://andrewgoldstone.com/','images/tools/1/640.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 02:19:39','2017-10-31 14:26:44',''),(641,988,'PLATIN','PLATIN Place and Time Navigator is an HTML5 tool for creating interactive visualizations of geospatial and temporal data. It includes a number of widgets for additional functionality.','http://platin.mpiwg-berlin.mpg.de/',0,'Max Planck Institute','','http://www.mpiwg-berlin.mpg.de/','images/tools/1/641.png',0,0,'2017-01-30',NULL,NULL,'',NULL,0,'2017-01-30 02:51:00','2017-10-31 14:26:45',''),(642,1033,'IMS Open Corpus Workbench (CWB)','CWB is a collection of open-source tools for managing and querying large text corpora (ranging from 10 million to 2 billion words) with linguistic annotations. Its central component is the flexible and efficient query processor CQP. (Citation: homepage)\n\nAPIs in Perl, C, Python, R and via CQPweb web interface (http://cwb.sourceforge.net/doc_perl.php)','http://cwb.sourceforge.net/',0,'Stefan Evert, IMS, University of Stuttgart','','','images/tools/1/642.png',0,0,'2018-11-07',NULL,NULL,'',NULL,0,'2017-02-02 06:06:13','2018-11-07 05:26:23',''),(643,1033,'CQPweb','Tool for indexing, searching and analysing annotated corpora.','https://cqpweb.lancs.ac.uk/',0,'Andrew Hardie','','','images/tools/1/643.png',0,0,'2018-10-30',NULL,NULL,'',NULL,0,'2017-02-02 06:09:21','2018-10-30 16:22:04',''),(644,988,'JSTOR Text Analyzer','The JSTOR Text Analyzer helps researchers overcome the limitations of keyword search. Users can upload a document, and the Text Analyzer will scan it and derive a set of terms that relate to it. It then recommends scholarship on JSTOR related to the terms. Once the analysis is complete, users can also add or remove terms and change how much importance they are assigned in a dashboard interface.','https://www.jstor.org/analyze/',0,'JSTOR Labs','','https://labs.jstor.org/','images/tools/1/644.png',0,0,'2017-04-25',NULL,NULL,'',NULL,0,'2017-04-25 22:22:20','2017-04-25 22:22:20',''),(645,1104,'Test Tool','This is a test tool!','testtool.ca',1,'Kaitlyn','testool@testtool.ca','http://www.testtool.ca',NULL,0,1,'2017-09-22',NULL,NULL,'http://www.testtool.ca',NULL,0,'2017-09-22 21:35:18','2017-09-22 21:36:01',''),(646,1104,'Test Tool','Test Tool - making changes to test saving ability\nTest Update on Sept 29 to make sure saving ability still works.','',1,'Kaitlyn Kaitlyn','','',NULL,0,1,'2018-10-18',NULL,NULL,'',NULL,0,'2017-09-22 21:38:50','2019-09-26 21:52:24',''),(647,1107,'Mann–Whitney U test','This test maps the occurrence of a term as it appears in corpora. Ranking them by how often they appear in each text.','https://github.com/rbudac/Text-Analysis-Notebooks/blob/master/Mann-Whitney.ipynb',1,'Robert Budac','','','images/tools/1/647.png',0,0,'2017-11-03',NULL,'from scipy.stats import mannwhitneyu\n\ndf1 = pd.read_csv(WORD_FREQUENCY_CSV_FILENAME1, index_col=0) # read in the CSV\ndf1.rename(columns={\'Unnamed: 0\': \'Text\'}, inplace=True) # add a label to the first column\ndf1 = df1.fillna(0) # replace NaNs with zeroes.\n\ndf2 = pd.read_csv(WORD_FREQUENCY_CSV_FILENAME2, index_col=0) # read in the CSV\ndf2.rename(columns={\'Unnamed: 0\': \'Text\'}, inplace=True) # add a label to the first column\ndf2 = df2.fillna(0) # replace NaNs with zeroes.\n\n# Make \"dummy\" rows of all zeroes for any words that only appear in one corpus and not the other\nmissingInCorpus1 = []\nmissingInCorpus2 = []\nfor i in range(0, df1.shape[1]):\n    missingInCorpus1.append(0)    \n\nfor i in range(0, df2.shape[1]):\n    missingInCorpus2.append(0)\n\n# Iterate over the wordlist and the two corpora, and output to csv\nwith open(CORPUS_COMPARISON_FILENAME, \'w\', newline=\'\') as csvfile:\n    writer = csv.writer(csvfile, delimiter=\',\', quotechar=\'\"\', quoting=csv.QUOTE_MINIMAL)\n    writer.writerow([\'word\', \'Mann Whitney U Value\', \'Mann Whitney p-value\'])\n    with open(WORD_LIST_FILENAME, \'r\', encoding=\"utf-8\") as f:\n        for word in f:\n            word = word.strip()\n            if (word in df1.index):\n                countsInCorpus1 = df1.loc[word].values\n            else:\n                countsInCorpus1 = missingInCorpus1\n            if (word in df2.index):\n                countsInCorpus2 = df2.loc[word].values\n            else:\n                countsInCorpus2 = missingInCorpus2\n            try:\n                mw = mannwhitneyu(countsInCorpus1, countsInCorpus2)\n                mwStat = mw.statistic\n                mwP = mw.pvalue\n            except ValueError:\n                mwStat = -1 # in case of ties, Mann-Whitney cannot rank, and so cannot calculate U\n                mwP = -1\n            writer.writerow([word, mwStat, mwP])\nprint(\"Done.\")','https://github.com/rbudac/Text-Analysis-Notebooks/blob/master/Mann-Whitney.ipynb',0,1,'2017-10-12 21:33:51','2017-11-03 15:17:01','<p><a href=\"http://methodi.ca/recipes/comparing-frequencies-mann-whitneyu-test-python\" target=\"_blank\">Comparing Frequencies with the Mann WhitneyU Test</a></p>'),(648,937,'80legs','80legs is a web crawling service. You need to get an account and then you can create custom crawls that run in the cloud. They also let you filter their Giant Web Crawl and provide clean data about the web.','http://80legs.com/',1,'80legs','','','images/tools/1/648.png',0,0,'2018-10-30',NULL,NULL,'',NULL,0,'2017-10-15 23:04:46','2018-10-30 16:03:45',''),(649,937,'Mozenda','Mozenda offers a web scraping tool/service that you can use to build agents that scrape and then organize how you want the data. You use a client side Windows. They have a free 30 day trial. Otherwise a commercial service.','https://www.mozenda.com/',1,'Mozenda','support@mozenda.com','','images/tools/1/649.png',0,0,'2017-10-15',NULL,NULL,'',NULL,0,'2017-10-15 23:22:15','2017-10-15 23:26:02',''),(651,1107,'TF-IDF','In information retrieval, tf–idf, short for term frequency–inverse document frequency, is a numerical statistic that is intended to reflect how important a word is to a document in a collection or corpus. It is often used as a weighting factor in information retrieval, text mining, and user modeling.','',1,'Robert Budac','','','images/tools/1/651.png',0,1,'2017-10-19',NULL,NULL,'https://github.com/rbudac/Text-Analysis-Notebooks',NULL,0,'2017-10-19 22:21:33','2017-10-19 22:28:05',''),(652,1107,'TF-IDF','This tool calculates Term Frequency - Inverse Document Frequency (TF-IDF) for a collection of documents showing the salient words. It also does relative frequency.','https://github.com/rbudac/Text-Analysis-Notebooks/blob/master/TF-IDF.ipynb',1,'Robert Budac','','','images/tools/1/652.png',0,0,'2018-04-06',NULL,'import csv\n\nfile1reader = csv.reader(open(WORD_FREQUENCY_CSV_FILENAME, encoding=\"utf-8\"), delimiter=\",\")\nfile2reader = csv.reader(open(INVERSE_DOCUMENT_FREQUENCY_CSV_FILENAME, encoding=\"utf-8\"), delimiter=\",\")\n\ndef is_number(s):\n    try:\n        float(s)\n        return True\n    except ValueError:\n        return False\n\n#skip headers\nheader1 = next(file1reader) #header\nheader2 = next(file2reader) #header\nwith open(TF_IDF_CSV_FILENAME, \'w\', encoding=\"utf-8\", newline=\'\') as csvfile:\n    writer = csv.writer(csvfile, delimiter=\',\', quotechar=\'\"\', quoting=csv.QUOTE_MINIMAL)\n    writer.writerow(header1)\n    for row1, row2 in zip(file1reader, file2reader):\n        rowOut = []\n        iterrow1 = iter(row1)\n        rowOut.append(next(iterrow1))\n        for entry in iterrow1:\n            entry = float(entry) * float(row2[1])\n            rowOut.append(entry)\n        writer.writerow(rowOut)\n    \nprint(\"Done.\")','https://github.com/rbudac/Text-Analysis-Notebooks/blob/master/TF-IDF.ipynb',0,1,'2017-10-19 22:29:18','2018-04-06 17:19:08','<p><a href=\"http://methodi.ca/recipes/calculating-tf-idf-python\" target=\"_blank\">Calculating TF-IDF with Python</a></p>'),(653,1107,'Beautiful Soup 4 Gathering URLs from a Web Page','This code uses Beautiful Soup 4 to gather all the URLs present on a web page (including the redirect and meta data) and saves them in a csv','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Scraping%20Website/gathering%20url%20with%20beauitful%20soup%204',1,'Kynan Ly','','','images/tools/1/653.png',0,0,'2018-12-13',NULL,'# Iterate through each anchor in our list of anchor\nfor element in anchor_on_page:\n    \n    # If the element does not have the keyword we are looking for we are going to skip it\n    if element.get(\'href\') == None:\n        continue\n    \n    # Create another nested dictionary for each link under \"href\". \n    # The nested dictionary is used to store another other meta data/ information that is also inside the anchor\n    linkDictionary[element.get(\'href\')] = {}\n    \n    # In the entry for the nested dictionary we are going to assign the keyword \"link\" with the URL link\n    linkDictionary[element.get(\'href\')][\'link\'] = str(element.get(\'href\'))\n    \n    # Grab any string attached to the anchor. Setting all that have none present to \'null\'\n    if (element.string == None):\n        linkDictionary[element.get(\'href\')][\'string\'] = \'null\'\n    else:\n        linkDictionary[element.get(\'href\')][\'string\'] = element.string\n    \n    # This next part is dependant on the url you are using. In this example, the Wikipedia page sometimes uses the \n    # word \"title\" inside their anchor. Therefore in the cases that it does appear I want to save it, if it doesn\'t\n    # exist then I want to enter \"null\" for the value. \n    if (element.get(\'title\')) == None:\n        linkDictionary[element.get(\'href\')][\'title\'] = \'null\'\n    else:\n        linkDictionary[element.get(\'href\')][\'title\'] = element.get(\'title\')','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2017-10-19 22:39:45','2018-12-13 21:52:02',''),(654,1107,'Scraping A Webpage - Wikipedia and New York Times','This notebook examines how to scrap a webpage. Here we will be using Wikipedia and New York Times as an example.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Scraping%20Website/Scraping%20A%20Webpage',1,'Kynan Ly','','','images/tools/1/654.png',0,0,'2018-12-13',NULL,'# Find all the tags you are want to save\n# In this example I am only concern with the \"paragraph\", \"list item\" and \"header 1\" tag\n# If you want everything you can just use \"soup.find_all()\" with nothing declared in the parameters\nwikiContent = soupWiki.find_all([\"p\"])\n\n# Now to check to see the result\n# Print out all the item to check the result\ncount = 11\n\nfor item in wikiContent:\n    # Display on the first 10 results\n    if count &gt; 0:\n        # Get the item\'s text (does not return the metadata)\n        print(item.get_text() + \" \\n\")\n        count = count - 1\n    else:\n        break\n    ','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/blob/master/tapor_coding_tools/tools/Scraping%20A%20Webpage/Scraping%20A%20Webpage.ipynb',0,1,'2017-10-19 22:44:11','2018-12-13 21:51:16',''),(655,937,'Vocabulary Word Lists (Word Banks)','A collection of word lists for different topics from Enchanted Learning. The word lists can be used to measure frequency of topic related words.','http://www.enchantedlearning.com/wordlist/',1,'Enchanted Learning','','http://www.enchantedlearning.com','images/tools/1/655.png',0,0,'2017-10-22',NULL,NULL,'',NULL,0,'2017-10-22 20:02:12','2017-10-22 20:03:08',''),(656,1107,'Plotting Characteristic Curve of Word Lengths','Code that reads a .txt files and plot the characteristic curve of words lengths of the text. Finally it graphs it using matplotlib','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Graphing%20and%20Visualization/Plotting%20Characteristic%20Curve%20of%20Word%20Length%20With%20matplotlib',1,'Kynan Ly','','','images/tools/1/656.png',0,0,'2018-12-13',NULL,'# Lowercase all the words (to ensure \"Sure\" and \"sure\" are matched together)\n# Also word_tokenize splits each element in individual tokens\nmobyDictText = nltk.word_tokenize(mobyDictText.lower())\n\n# Remove any words that isn\'t a word\nmobyDictText = [word for word in mobyDictText if word[0].isalpha()]\n\n# Iterate through each word and save its length\nmobyDictTextWordLength = [len(w) for w in mobyDictText]\n\n# Sort the list from smallest to greatest word length\nmobyDictTextWordLength = list(sorted(nltk.FreqDist(mobyDictTextWordLength).items()))\n\n# Grabs all the word lengths (0 -&gt; 21)\nmobyDictWordLength = [f[0] for f in mobyDictTextWordLength]\n\n# Grabs all the values for all the word length that is assoicated with them\nmobyDictWordLengthValues = [f[1] for f in mobyDictTextWordLength]\n\n# Create a plot of the values\nplt.plot(mobyDictWordLength, mobyDictWordLengthValues)\n\n# Set labels and values\nplt.xlabel(\'Word Length\')\nplt.ylabel(\'Word Count\')\nplt.title(\"Moby Dick Word Length\")','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2017-11-07 23:26:36','2018-12-13 21:50:17',''),(657,1107,'Plotting Distribution','Reading a .txt file and storing it. Afterward finding the word count and word distribution and graphing it with matplotlib.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Graphing%20and%20Visualization/Plotting%20Distribution%20With%20matplotlib',1,'Kynan Ly','','','images/tools/1/657.png',0,0,'2018-12-13',NULL,'  # Lowercase all the words (to ensure \"Sure\" and \"sure\" are matched together)\n# Also word_tokenize splits each element in individual tokens\nmobyDickText = nltk.word_tokenize(mobyDickTextFull.lower())\n\n# Remove any words that isn\'t a word\nmobyDickText = [word for word in mobyDickText if word[0].isalpha()]\n\n# Get all the stopwords and remove them from the text\nstopwords = nltk.corpus.stopwords.words(\"english\")\nmobyDickText = [word for word in mobyDickText if word not in stopwords]\n\n# Using nltk find all the frequencies\nmobyDickTextFrequency = nltk.FreqDist(mobyDickText)\n\n# See the top 20 most common words\nprint(mobyDickTextFrequency.most_common(20))\n\nmobyDickTextFrequency.plot(20, title=\"Top Frequency Content Terms in Moby Dick\")\n\nmobyDickText.dispersion_plot([\"one\", \"two\", \"us\"])','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2017-11-07 23:32:23','2018-12-13 21:44:49',''),(658,1107,'Plotting Word Frequency','Reads a .txt file and plot the word frequency using matplotlib.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Graphing%20and%20Visualization/Plotting%20Word%20Frequency%20With%20matplotlib',1,'Kynan Ly','','','images/tools/1/658.png',0,0,'2018-12-13',NULL,'# Lowercase all the words (to ensure \"Sure\" and \"sure\" are matched together)\n# Also word_tokenize splits each element in individual tokens\nmobyDickText = nltk.word_tokenize(mobyDickText.lower())\n\n# Remove any words that isn\'t a word\nmobyDickText = [word for word in mobyDickText if word[0].isalpha()]\n\n# Using nltk find all the frequencies\nmobyDickTextFrequency = nltk.FreqDist(mobyDickText)\n\n# View the top 20 frequencies\nmobyDickTextFrequency.tabulate(20)\n\n# Adding stopwords\nstopwords = nltk.corpus.stopwords.words(\"english\")\n\n# For every token that is in stopwords, remove it\nmobyDictText = [token for token in mobyDictText if token not in stopwords]   \n\n# Using nltk find all the frequencies\nmobyDickTextFrequency = nltk.FreqDist(mobyDickText)\n\n# Plot the top 25 frequency words in a graph\nmodyDickTextFrequency.plot(25, title=\"Top Frequency Word Tokens in Moby Dick\")','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2017-11-07 23:36:40','2018-12-13 21:41:33',''),(659,1107,'InPh0 Topic Explorer','The InPhO Topic Explorer features a powerful interactive coding environment that enables direct manipulation of the corpus and models, in contrast to the web visualization.','http://inphodata.cogs.indiana.edu/',1,'InPhO (Indiana Philosophy Ontology Project)','','https://inpho.cogs.indiana.edu/','images/tools/1/659.png',0,0,'2017-11-08',NULL,NULL,'https://github.com/inpho/topic-explorer',NULL,0,'2017-11-08 00:35:58','2017-11-08 00:35:58',''),(661,1036,'Topic modeling','Identify topics in given texts and visualize the topic distribution in each text.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/blob/master/tapor_coding_tools/Methodica/Topic%20modelling%20-%20Interactive%20visualization%20%26%20topic%20distribution%20visualization%20(three%20ebooks%20from%20Gutenburg).ipynb',1,'Jinman Zhang','','','images/tools/1/661.png',0,0,'2018-05-11',NULL,NULL,'https://nbviewer.jupyter.org/github/jinmanz/machine-learning/blob/master/Topic%20modelling%20-%20Interactive%20visualization%20%26%20topic%20distribution%20visualization%20%28three%20ebooks%20from%20Gutenburg%29.ipynb',NULL,0,'2018-01-15 18:48:30','2018-05-11 18:04:03',''),(662,1036,'Simple Authorship Clustering','Clustering authorship based on the measure of the distance of texts.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/visualization/Simple%20Authorship%20Clustering',1,'Jinman Zhang','','','images/tools/1/662.png',0,0,'2018-05-11',NULL,NULL,'https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',NULL,0,'2018-01-15 19:32:40','2018-05-11 18:16:27',''),(663,937,'Twitter Archiver (Google Sheets Add-On)','Google Sheets Add-on that can gather data from Twitter into a Google Sheet for later analysis. You define a Search Rule and it then captures Tweets on a regular basis. There is a free version and Premium version.','https://www.labnol.org/internet/save-twitter-hashtag-tweets/6505/',0,'Amit Agarwal','','https://www.labnol.org/about/','images/tools/1/663.png',4,0,'2018-01-18',NULL,NULL,'',NULL,0,'2018-01-18 20:23:29','2018-01-18 20:24:05',''),(664,1107,'Stemming and Lemmatization using NLTK','This Jupyter Notebook showcases the different ways of stemming and lemmatization a text using nltk.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Natural%20Language%20Processing%20(NLTK)/stemming%20and%20lemmatization%20text%20with%20nltk',1,'Kynan Ly','','','images/tools/1/664.png',0,0,'2018-12-13',NULL,'# The Stemmers presented by nltk\nfrom nltk.stem.porter import PorterStemmer\n\n# The Lemmatization presented by nltk\nfrom nltk.stem import WordNetLemmatizer\n\n\nportStem = PorterStemmer()\n\n# Initalize Lemmatizer\nwordLemmatizer = WordNetLemmatizer()\n\n# List of words to test on\nWords = [\"operate\" ,\"operating\" ,\"operates\", \"operation\" ,\"operative\", \"operatives\" ,\"operational\"]\nStemWords = []\nLemmWords = []\n\n# Stem and Lemmatise each word in the list\nfor word in Words:\n    StemWords.append(portStem.stem(word))\n    LemmWords.append(wordLemmatizer.lemmatize(word))\n    \n# Print the results of each entry\nfor entry in range(len(Words)):\n    print(\"Original  Word: \" + Words[entry])\n    print(\"Stemmed   Word: \" + StemWords[entry])\n    print(\"Lemmatize Word: \" + LemmWords[entry])\n    print(\"\\n\")','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2018-02-06 17:36:01','2018-12-13 21:46:45',''),(665,1107,'Tokenization using NLTK','This Jupyter Notebook showcases the different methods of tokenization using NLTK','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Natural%20Language%20Processing%20(NLTK)/Tokenization%20With%20NLTK',1,'Kynan Ly','','','images/tools/1/665.png',0,0,'2018-12-13',NULL,'# Import the word tokenizer from nltk\nfrom nltk.tokenize import word_tokenize\n\n# Create the example sentence\nexampleSentence = \"I am an example sentence to showcase how this process works.\"\n\n# Tokenize the sentence\ntokens = word_tokenize(exampleSentence)\n\n# Print the result\nprint(tokens)','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2018-02-06 17:41:40','2018-12-13 21:44:00',''),(666,1107,'Word Frequency and Count of a Set of Document','This Jupyter Notebook showcases how to conduct word frequency and code on a set of document.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Text%20Analysis%20Fundamentals/word%20frequency%20and%20count%20of%20a%20set%20of%20document',1,'Kynan Ly','','','images/tools/1/666.png',0,0,'2018-12-13',NULL,'import nltk\nimport os\nimport pandas as pd\nimport re\n\n# Define tokenize function\ndef tokenize_Text(text):\n    tokens = nltk.word_tokenize(text.lower())\n    # Insert only words\n    tokens = [word for word in tokens if word[0].isalpha()]\n    return tokens\n\n# List to hold the results\ntext_tokenized = []\n\n# Iterate through all the text\nfor novel in textContent:\n    # Clean the text\n    text_tokenized.append(tokenize_Text(novel))\n\n# Create a list to store all the results\nwordFrequencyList = []\n\n# For novel get the word frequency\nfor novel in text_tokenized:\n    wordFrequencyList.append(nltk.FreqDist(novel))','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2018-02-06 18:13:20','2018-12-13 21:49:17',''),(667,1120,'Finding People or Characters from A Text (Named-Entity Recognition)','This snippet of code uses NLTK library to find person or character names from a text file.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/natural%20language%20processing/Finging%20people%20or%20characters%20with%20NER',0,'Zhang Jinman','jinman@ualberta.ca','','images/tools/1/667.png',0,0,'2018-04-22',NULL,'#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport nltk\nfrom pprint import pprint  # pretty print structured data\n\nwith open(\"NE.txt\") as file:\n    text = file.read()\n\nprint(text[:1000])  # show atmost 1000 characters from the beginning of the file\n\n# initialize an empty list to store person names\nperson_names = []\n\n# tokenize sentences\nfor sentence in nltk.sent_tokenize(text):\n    # tokenize words in each sentence\n    word_tokens = nltk.word_tokenize(sentence)\n    # words tagged with part-of-speech tags\n    tagged_words = nltk.pos_tag(word_tokens)\n    # then chunk the related words\n    for chunk in nltk.ne_chunk(tagged_words):\n        if hasattr(chunk, \'label\') and chunk.label() == \'PERSON\':\n            name = \' \'.join(leave[0] for leave in chunk.leaves())\n            person_names.append(name)\n\npprint(person_names, indent=2)','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2018-02-08 02:05:46','2018-04-22 18:30:50',''),(668,1120,'Using NLTK for Named Entity Recognition (Location)','This code snippet shows how we combine NLTK and geotext libraries to not just find locations in a text, but also extract cities, countries and even nationalities.','',0,'Zhang Jinman','jinman@ualberta.ca','','images/tools/1/668.png',0,0,'2018-02-09',NULL,'#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport nltk\nfrom geotext import GeoText\n\nwith open(\"NE.txt\") as file:\n    text = file.read()\nprint(text)\n\n# create a list to store location names\nloc_names = []\n# tokenize sentences\nfor sentence in nltk.sent_tokenize(text):\n    # tokenize words in each sentence\n    word_tokens = nltk.word_tokenize(sentence)\n    # words tagged with part-of-speech tags\n    tagged_words = nltk.pos_tag(word_tokens)\n    # then chunk the related words\n    for chunk in nltk.ne_chunk(tagged_words):\n        if hasattr(chunk, \'label\') and chunk.label() == \'GPE\':\n            loc = \' \'.join(leave[0] for leave in chunk.leaves())\n            loc_names.append(loc)\nprint(loc_names)  # print all location names from the text\n\nplaces = GeoText(text)\nprint(places.nationalities)  # print nationalities\nprint(places.countries)  # print countries\nprint(places.cities)  # print cities','',0,1,'2018-02-09 00:57:21','2018-02-09 00:57:21',''),(669,1120,'Find Locations from A Text (Named-Entity Recognition)','This code snippet shows how we combine NLTK and geotext libraries to not just find locations in a text, but also extract cities, countries and even nationalities.','',0,'Zhang Jinman','jinman@ualberta.ca','','images/tools/1/669.png',0,0,'2018-02-09',NULL,'#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport nltk\nfrom geotext import GeoText\n\nwith open(\"NE.txt\") as file:\n    text = file.read()\nprint(text)\n\n# create a list to store location names\nloc_names = []\n# tokenize sentences\nfor sentence in nltk.sent_tokenize(text):\n    # tokenize words in each sentence\n    word_tokens = nltk.word_tokenize(sentence)\n    # words tagged with part-of-speech tags\n    tagged_words = nltk.pos_tag(word_tokens)\n    # then chunk the related words\n    for chunk in nltk.ne_chunk(tagged_words):\n        if hasattr(chunk, \'label\') and chunk.label() == \'GPE\':\n            loc = \' \'.join(leave[0] for leave in chunk.leaves())\n            loc_names.append(loc)\nprint(loc_names)  # print all location names from the text\n\nplaces = GeoText(text)\nprint(places.nationalities)  # print nationalities\nprint(places.countries)  # print countries\nprint(places.cities)  # print cities','',0,1,'2018-02-09 00:57:25','2018-02-09 00:59:44',''),(670,1128,'Using Regular Expressions to Clean a Text','Techniques on using regular expressions to clean up a text for textual analysis.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/text%20cleaning/Using%20Regular%20Expressions%20to%20Clean%20a%20Text',1,'Jason Bradshaw','jrb1@ualberta.ca','','images/tools/1/670.png',0,0,'2018-04-22',NULL,NULL,'https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',NULL,0,'2018-03-02 21:33:09','2018-04-22 19:22:48','<p><a href=\"http://methodi.ca/recipes/using-regular-expressions-clean-text\" target=\"_blank\">Using Regular Expressions to Clean a Text</a></p>'),(671,1128,'Using Regular Expressions to Clean Up Web Pages','A beginner\'s notebook on using Regex to strip website content of tags.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/text%20cleaning/Using%20Regular%20Expressions%20to%20Clean%20Up%20Web%20Pages',1,'Jason Bradshaw','jrb1@ualberta.ca','','images/tools/1/671.png',0,0,'2018-04-22',NULL,NULL,'https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',NULL,0,'2018-03-07 16:51:16','2018-04-22 19:20:50',''),(672,1107,'Multiple Correspondence Analysis and Content Analysis','This notebook\'s aim is to showcase how to conduct Multiple Correspondence Analysis (MCA) on a corpus. In this notebook, we will be using a collection of novels by different authors i.e The Return of Sherlock Holmes by Arthur Conan Doyle, Lady Susan by Jane Austen, and A Christmas Carol by Charles Dickens taken from Project Gutenberg.\n\nFirst will gather and load in all the text.\nWe clean them and break them down into tokens.\nWe will categorize the tokens using General Inquirer Category taken from Harvard to conduct our analysis.\nFrom there we will conduct MCA on the results and plot the results on a scatter plot.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Correspondence%20Analysis/Multiple%20correspondence%20analysis%20and%20content%20analysis',1,'Kynan Ly','','','images/tools/1/672.png',0,0,'2018-12-13',NULL,'# Run MCA on the dataframe (first 10 columns)\nmca_test = MCA(mca_dataframe.loc[:,:\'Submit\'], benzecri=False)\n\n# Acqure the factor score for the Authors\nauthors_score = mca_test.fs_r().T\n\n# Acqure the factor score for the Categories\ncategory_score = mca_test.fs_c().T\n\n# Returns the variance of each Axis \nvariance = mca_test.L\n\n# Calcuate the % variance of total\nvariance_total = [variance[0] / (variance[0] + variance[1]), variance[1] / (variance[0] + variance[1])]','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2018-03-07 19:30:00','2018-12-13 22:04:44',''),(673,1107,'Voronoi Diagram with Word Embedding','In this notebook, we will examine how to use word embedding and voronoi diagram to display the relationship between other words and a search term. Using A Tale of Two Cities by Charles Dickens as the example (acquired from Project Gutenberg), we will showcase how the program works as well as explain different modification and steps that can be taken in the future.','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools/tree/master/tapor_coding_tools/Graphing%20and%20Visualization/Voronoi%20diagram%20with%20word%20embedding',1,'Kynan Ly','','','images/tools/1/673.png',0,0,'2018-12-13',NULL,'# train model using our results from earlier with words\n# that appear atleast more than 5 times. This also helps\n# reduce the amount of points found.\nword_to_vec_model = Word2Vec(sentence_with_search_term, min_count=5)\n\n# save model for later use\nword_to_vec_model.save(\'model.bin\')\n\n# load model\nword_to_vec_model = Word2Vec.load(\'model.bin\')\n\n# Store all the words in the model\nvector_words = list(word_to_vec_model.wv.vocab)\n\n# Access all of the vectors from a trained model\nvector_of_trained_model = word_to_vec_model[word_to_vec_model.wv.vocab]\n\n# Initilize PCA\npca = PCA(n_components=2)\n\n# Transform the data to 2D representation\nvector_2D_results = pca.fit_transform(vector_of_trained_model)\n\n# Display results\nvector_2D_results','https://github.com/TAPoR-3-Tools/Tapor-Coding-Tools',0,1,'2018-03-07 19:35:22','2018-12-13 22:04:10',''),