{"action":"closed","number":2230,"pull_request":{"url":"https://api.github.com/repos/GeoNode/geonode/pulls/2230","id":40095071,"html_url":"https://github.com/GeoNode/geonode/pull/2230","diff_url":"https://github.com/GeoNode/geonode/pull/2230.diff","patch_url":"https://github.com/GeoNode/geonode/pull/2230.patch","issue_url":"https://api.github.com/repos/GeoNode/geonode/issues/2230","number":2230,"state":"closed","locked":false,"title":"Intitial NLP Support","user":{"login":"pjdufour","id":1438253,"avatar_url":"https://avatars.githubusercontent.com/u/1438253?v=3","gravatar_id":"","url":"https://api.github.com/users/pjdufour","html_url":"https://github.com/pjdufour","followers_url":"https://api.github.com/users/pjdufour/followers","following_url":"https://api.github.com/users/pjdufour/following{/other_user}","gists_url":"https://api.github.com/users/pjdufour/gists{/gist_id}","starred_url":"https://api.github.com/users/pjdufour/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjdufour/subscriptions","organizations_url":"https://api.github.com/users/pjdufour/orgs","repos_url":"https://api.github.com/users/pjdufour/repos","events_url":"https://api.github.com/users/pjdufour/events{/privacy}","received_events_url":"https://api.github.com/users/pjdufour/received_events","type":"User","site_admin":false},"body":"This PR add a `nlp` contrib app.  This app is disabled by default.  If enabled by the `NLP_ENABLED` settings flag, the app will use [MITIE](https://github.com/mit-nlp/MITIE) and natural language processing (NLP) techniques to infer additional metadata from the raw contents of new text documents.  This contrib app will help fill key metadata gaps.\r\n\r\nSpecifically, the app will identify locations mentioned within the document and crosscheck them against regions (https://github.com/GeoNode/geonode/blob/master/geonode/base/models.py#L117) to autofill the regions metadata field.  Keywords are generated for identified organizations but only if they match \"existing\" keywords.\r\n\r\nIn the future this app can be enhanced in a few ways.  Additional structured metadata could be inferred for layers by reading in the abstract, title, and purpose from a metadata file.  The remote services feature could use the nlp app to fill in structured metadata for remote services that have none or little to begin with.  Lastly, a separate library agnostic to GeoNode's models should be built outside of the core so [CKAN](https://github.com/CKAN/ckan) and other platforms can reuse some of the opensource code.","created_at":"2015-07-16T05:09:00Z","updated_at":"2015-07-16T14:53:12Z","closed_at":"2015-07-16T14:53:12Z","merged_at":"2015-07-16T14:53:12Z","merge_commit_sha":"c0d419b6927cf33fcf281ca1722a6561f1e840e0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/GeoNode/geonode/pulls/2230/commits","review_comments_url":"https://api.github.com/repos/GeoNode/geonode/pulls/2230/comments","review_comment_url":"https://api.github.com/repos/GeoNode/geonode/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GeoNode/geonode/issues/2230/comments","statuses_url":"https://api.github.com/repos/GeoNode/geonode/statuses/9ab7e165c1d8c8de3532a89c95a1f21c66418c8b","head":{"label":"pjdufour:nlp2","ref":"nlp2","sha":"9ab7e165c1d8c8de3532a89c95a1f21c66418c8b","user":{"login":"pjdufour","id":1438253,"avatar_url":"https://avatars.githubusercontent.com/u/1438253?v=3","gravatar_id":"","url":"https://api.github.com/users/pjdufour","html_url":"https://github.com/pjdufour","followers_url":"https://api.github.com/users/pjdufour/followers","following_url":"https://api.github.com/users/pjdufour/following{/other_user}","gists_url":"https://api.github.com/users/pjdufour/gists{/gist_id}","starred_url":"https://api.github.com/users/pjdufour/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjdufour/subscriptions","organizations_url":"https://api.github.com/users/pjdufour/orgs","repos_url":"https://api.github.com/users/pjdufour/repos","events_url":"https://api.github.com/users/pjdufour/events{/privacy}","received_events_url":"https://api.github.com/users/pjdufour/received_events","type":"User","site_admin":false},"repo":{"id":32435902,"name":"geonode","full_name":"pjdufour/geonode","owner":{"login":"pjdufour","id":1438253,"avatar_url":"https://avatars.githubusercontent.com/u/1438253?v=3","gravatar_id":"","url":"https://api.github.com/users/pjdufour","html_url":"https://github.com/pjdufour","followers_url":"https://api.github.com/users/pjdufour/followers","following_url":"https://api.github.com/users/pjdufour/following{/other_user}","gists_url":"https://api.github.com/users/pjdufour/gists{/gist_id}","starred_url":"https://api.github.com/users/pjdufour/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjdufour/subscriptions","organizations_url":"https://api.github.com/users/pjdufour/orgs","repos_url":"https://api.github.com/users/pjdufour/repos","events_url":"https://api.github.com/users/pjdufour/events{/privacy}","received_events_url":"https://api.github.com/users/pjdufour/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pjdufour/geonode","description":"GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.","fork":true,"url":"https://api.github.com/repos/pjdufour/geonode","forks_url":"https://api.github.com/repos/pjdufour/geonode/forks","keys_url":"https://api.github.com/repos/pjdufour/geonode/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pjdufour/geonode/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pjdufour/geonode/teams","hooks_url":"https://api.github.com/repos/pjdufour/geonode/hooks","issue_events_url":"https://api.github.com/repos/pjdufour/geonode/issues/events{/number}","events_url":"https://api.github.com/repos/pjdufour/geonode/events","assignees_url":"https://api.github.com/repos/pjdufour/geonode/assignees{/user}","branches_url":"https://api.github.com/repos/pjdufour/geonode/branches{/branch}","tags_url":"https://api.github.com/repos/pjdufour/geonode/tags","blobs_url":"https://api.github.com/repos/pjdufour/geonode/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pjdufour/geonode/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pjdufour/geonode/git/refs{/sha}","trees_url":"https://api.github.com/repos/pjdufour/geonode/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pjdufour/geonode/statuses/{sha}","languages_url":"https://api.github.com/repos/pjdufour/geonode/languages","stargazers_url":"https://api.github.com/repos/pjdufour/geonode/stargazers","contributors_url":"https://api.github.com/repos/pjdufour/geonode/contributors","subscribers_url":"https://api.github.com/repos/pjdufour/geonode/subscribers","subscription_url":"https://api.github.com/repos/pjdufour/geonode/subscription","commits_url":"https://api.github.com/repos/pjdufour/geonode/commits{/sha}","git_commits_url":"https://api.github.com/repos/pjdufour/geonode/git/commits{/sha}","comments_url":"https://api.github.com/repos/pjdufour/geonode/comments{/number}","issue_comment_url":"https://api.github.com/repos/pjdufour/geonode/issues/comments{/number}","contents_url":"https://api.github.com/repos/pjdufour/geonode/contents/{+path}","compare_url":"https://api.github.com/repos/pjdufour/geonode/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pjdufour/geonode/merges","archive_url":"https://api.github.com/repos/pjdufour/geonode/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pjdufour/geonode/downloads","issues_url":"https://api.github.com/repos/pjdufour/geonode/issues{/number}","pulls_url":"https://api.github.com/repos/pjdufour/geonode/pulls{/number}","milestones_url":"https://api.github.com/repos/pjdufour/geonode/milestones{/number}","notifications_url":"https://api.github.com/repos/pjdufour/geonode/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pjdufour/geonode/labels{/name}","releases_url":"https://api.github.com/repos/pjdufour/geonode/releases{/id}","created_at":"2015-03-18T03:31:39Z","updated_at":"2015-04-12T21:49:30Z","pushed_at":"2015-07-16T04:46:19Z","git_url":"git://github.com/pjdufour/geonode.git","ssh_url":"git@github.com:pjdufour/geonode.git","clone_url":"https://github.com/pjdufour/geonode.git","svn_url":"https://github.com/pjdufour/geonode","homepage":"http://geonode.org/","size":80247,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GeoNode:master","ref":"master","sha":"c7b93bf5180a5cf874ee7d71cc682436f3525a1d","user":{"login":"GeoNode","id":132843,"avatar_url":"https://avatars.githubusercontent.com/u/132843?v=3","gravatar_id":"","url":"https://api.github.com/users/GeoNode","html_url":"https://github.com/GeoNode","followers_url":"https://api.github.com/users/GeoNode/followers","following_url":"https://api.github.com/users/GeoNode/following{/other_user}","gists_url":"https://api.github.com/users/GeoNode/gists{/gist_id}","starred_url":"https://api.github.com/users/GeoNode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GeoNode/subscriptions","organizations_url":"https://api.github.com/users/GeoNode/orgs","repos_url":"https://api.github.com/users/GeoNode/repos","events_url":"https://api.github.com/users/GeoNode/events{/privacy}","received_events_url":"https://api.github.com/users/GeoNode/received_events","type":"Organization","site_admin":false},"repo":{"id":701765,"name":"geonode","full_name":"GeoNode/geonode","owner":{"login":"GeoNode","id":132843,"avatar_url":"https://avatars.githubusercontent.com/u/132843?v=3","gravatar_id":"","url":"https://api.github.com/users/GeoNode","html_url":"https://github.com/GeoNode","followers_url":"https://api.github.com/users/GeoNode/followers","following_url":"https://api.github.com/users/GeoNode/following{/other_user}","gists_url":"https://api.github.com/users/GeoNode/gists{/gist_id}","starred_url":"https://api.github.com/users/GeoNode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GeoNode/subscriptions","organizations_url":"https://api.github.com/users/GeoNode/orgs","repos_url":"https://api.github.com/users/GeoNode/repos","events_url":"https://api.github.com/users/GeoNode/events{/privacy}","received_events_url":"https://api.github.com/users/GeoNode/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GeoNode/geonode","description":"GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.","fork":false,"url":"https://api.github.com/repos/GeoNode/geonode","forks_url":"https://api.github.com/repos/GeoNode/geonode/forks","keys_url":"https://api.github.com/repos/GeoNode/geonode/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GeoNode/geonode/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GeoNode/geonode/teams","hooks_url":"https://api.github.com/repos/GeoNode/geonode/hooks","issue_events_url":"https://api.github.com/repos/GeoNode/geonode/issues/events{/number}","events_url":"https://api.github.com/repos/GeoNode/geonode/events","assignees_url":"https://api.github.com/repos/GeoNode/geonode/assignees{/user}","branches_url":"https://api.github.com/repos/GeoNode/geonode/branches{/branch}","tags_url":"https://api.github.com/repos/GeoNode/geonode/tags","blobs_url":"https://api.github.com/repos/GeoNode/geonode/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GeoNode/geonode/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GeoNode/geonode/git/refs{/sha}","trees_url":"https://api.github.com/repos/GeoNode/geonode/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GeoNode/geonode/statuses/{sha}","languages_url":"https://api.github.com/repos/GeoNode/geonode/languages","stargazers_url":"https://api.github.com/repos/GeoNode/geonode/stargazers","contributors_url":"https://api.github.com/repos/GeoNode/geonode/contributors","subscribers_url":"https://api.github.com/repos/GeoNode/geonode/subscribers","subscription_url":"https://api.github.com/repos/GeoNode/geonode/subscription","commits_url":"https://api.github.com/repos/GeoNode/geonode/commits{/sha}","git_commits_url":"https://api.github.com/repos/GeoNode/geonode/git/commits{/sha}","comments_url":"https://api.github.com/repos/GeoNode/geonode/comments{/number}","issue_comment_url":"https://api.github.com/repos/GeoNode/geonode/issues/comments{/number}","contents_url":"https://api.github.com/repos/GeoNode/geonode/contents/{+path}","compare_url":"https://api.github.com/repos/GeoNode/geonode/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GeoNode/geonode/merges","archive_url":"https://api.github.com/repos/GeoNode/geonode/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GeoNode/geonode/downloads","issues_url":"https://api.github.com/repos/GeoNode/geonode/issues{/number}","pulls_url":"https://api.github.com/repos/GeoNode/geonode/pulls{/number}","milestones_url":"https://api.github.com/repos/GeoNode/geonode/milestones{/number}","notifications_url":"https://api.github.com/repos/GeoNode/geonode/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GeoNode/geonode/labels{/name}","releases_url":"https://api.github.com/repos/GeoNode/geonode/releases{/id}","created_at":"2010-06-03T18:14:47Z","updated_at":"2015-07-09T10:46:38Z","pushed_at":"2015-07-16T14:53:12Z","git_url":"git://github.com/GeoNode/geonode.git","ssh_url":"git@github.com:GeoNode/geonode.git","clone_url":"https://github.com/GeoNode/geonode.git","svn_url":"https://github.com/GeoNode/geonode","homepage":"http://geonode.org/","size":133338,"stargazers_count":325,"watchers_count":325,"language":"Python","has_issues":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":293,"mirror_url":null,"open_issues_count":273,"forks":293,"open_issues":273,"watchers":325,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GeoNode/geonode/pulls/2230"},"html":{"href":"https://github.com/GeoNode/geonode/pull/2230"},"issue":{"href":"https://api.github.com/repos/GeoNode/geonode/issues/2230"},"comments":{"href":"https://api.github.com/repos/GeoNode/geonode/issues/2230/comments"},"review_comments":{"href":"https://api.github.com/repos/GeoNode/geonode/pulls/2230/comments"},"review_comment":{"href":"https://api.github.com/repos/GeoNode/geonode/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GeoNode/geonode/pulls/2230/commits"},"statuses":{"href":"https://api.github.com/repos/GeoNode/geonode/statuses/9ab7e165c1d8c8de3532a89c95a1f21c66418c8b"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"jj0hns0n","id":506078,"avatar_url":"https://avatars.githubusercontent.com/u/506078?v=3","gravatar_id":"","url":"https://api.github.com/users/jj0hns0n","html_url":"https://github.com/jj0hns0n","followers_url":"https://api.github.com/users/jj0hns0n/followers","following_url":"https://api.github.com/users/jj0hns0n/following{/other_user}","gists_url":"https://api.github.com/users/jj0hns0n/gists{/gist_id}","starred_url":"https://api.github.com/users/jj0hns0n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jj0hns0n/subscriptions","organizations_url":"https://api.github.com/users/jj0hns0n/orgs","repos_url":"https://api.github.com/users/jj0hns0n/repos","events_url":"https://api.github.com/users/jj0hns0n/events{/privacy}","received_events_url":"https://api.github.com/users/jj0hns0n/received_events","type":"User","site_admin":false},"comments":3,"review_comments":0,"commits":1,"additions":189,"deletions":0,"changed_files":6}}